Java is my most proficient programming language. I’ve seen C++, Perl, PHP, VB and some other stuff. On a scale of 1 to 10, if the other lesser languages are 1 - 2, Java would be 10. This doesn’t mean I claim to know Java very well, I just know more of it compared to the others. I believe that to live a life of a coder is to constantly revise your coding skills and this would (partly) involve having a certain level of understanding of the language. No, I’m not talking about just knowing things at a surface-level to get through the daily job. Most daily jobs are easy and boring, unless you are coding for some sort of critical system. I’m talking about knowing it well enough to be able to use it to tackle the difficult problem that crops up once in a while, about understanding it at such a depth that you’d be able to recognize smelly code, to notice an abuse of the language, to be able to write maintainable code and to be able to articulate it well enough to other coders. It is such abilities that separates the junior coders from the masters.
The problem is, I’m seeing too many juniors and too few masters around. Worse, these juniors are somehow content with their current level of competency. So far I’ve seen ‘engineers’ and ‘programmers’ that still do some very obvious mistakes or are ignorant of even a basic understanding of the language. I’ve seen coders that don’t know how to substring, have no idea about the purpose of the methods toString(), equals() and hashCode(), and don’t know the differences between the various data structures in Java (List, Maps, Sets and their Hash and Tree variants). A whole lot more don’t know the differences and purpose of Interfaces and Abstract classes. Let’s not forget about the classic examples of using the double data type for storing currency values or about Servlet threading issues or about database transactions. Notice that I did not say anything about auto-boxing, generics, annotations and the other newer stuff. And I’m waiting to see what will happen when closures is introduced
If you code in Java, think of it as your lifeline. Make it such that reading about Java is a daily routine. And code, code, code! It doesn’t matter if you are an architect, tech lead, technical manager or a junior fresh from school, if you don’t code, you’ll stagnate! Then you’ll write bad code, hurt the whole team and delay the project. So read and code, read and code, repeat almost indefinitely for the rest of your life! Take on designing, consulting or whatever but always get your hands dirty (even if it’s just a bit or over the weekend). If you stagnate, you’ll lose respect because when a project is delayed, you won’t be able to go to the code level and say “See, this is the issue. Right here!”. You won’t be able to read a stacktrace nor would you be able to debug. And you most definitely won’t help solve the problems. In other words, kiss you coding career bye bye.
Feel this is too harsh for you? Then it probably is. I’m sorry to say this but leave the coding to the real coders. There are plenty of non-coding jobs around.