John: "Ken... What advice would you give Java programmers?" Ken Orr: "Don't define yourself as Java programmers." It is better to be clearly wrong than to be obscurely right. UML was developed to meet the design needs of programmers. We need tools focussed on meeting the design needs of users. Master more than one design/programming paradigm. http://weblogs.java.net/blog/johnreynolds/archive/2006/03/ken_orrs_advice_1.html And similar general advise for programmer from another guy: http://www.codeproject.com/gen/work/standaloneprogrammer.asp The Pragmatic Programmers suggest learning a new language every year. This has already paid off for me. The more different languages I learn, the more I understand about programming in general. It's a lot easier to solve problems if you have a toolbox full of good tools. http://www.onlamp.com/lpt/a/3691 More challenging projects every programmer should try - https://web.eecs.utk.edu/~azh/blog/morechallengingprojects.html https://www.infoq.cn/article/k5CpCGNqgfErqTol2SpX