Deliberate practice to make for a better developer
Arun2009: This may not be 100% relevant to your question, but am posting this FWIW.My last paid job (C++ and Java developer at an investment bank) required a 2:1 split between debugging and development work. I identified the following areas that could use improvement.1. Knowledge of our code-base. I spent downtime at work reading code and documenting the system architecture. This also called for an improvement in my code-reading and debugging skills.2. Development work flow and knowledge of tools/technolgoies (GDB, Linux kernel architecture, Perl and Bash scripting for handy scripts).3. Domain knowledge (finance).4. Knowledge of other technologies involved (Sybase, etc.)I found that most situations didn't really call for expert knowledge of C++ and Java or of algorithms (as I was led to believe in the interview), but actual understanding of the code-base, the existing system architecture, and how our portions interacted with the back-end systems.IMO, with any technology, you will hit a point beyond which there's diminishing margin of returns on gaining deeper expertise. But you should read the technology reference manual (e.g., the Sybase Reference Manual or the Bash Manual) thoroughly at least once so that you build a mental map of options available that can be used when you need them.