As a software engineer we must deal with knowledge and information overload on a daily basis. There is domain knowledge, product knowledge, tools knowledge, knowledge about technologies, languages and platforms. Suffice it to say, there is a lot of information to be acquired and managed to do the job, and even more to do it well.
We are not in an information age anymore, we are in the information management age. — Chris Hardwick
This can become overbearing and one possible way to deal with it is to limit your exposure to the set of information you own or can control and ignore the things that are outside the domain.
This might help with achieving the job goals — but rest assured it will not help become a top tier programmer. So how does one effectively deal with this information overload? Specially when you are learning and trying to improve.
I recommend a strategy of classifying the information into a spectrum, ranging from an expert with deep knowledge for the core skills to a hacker who knows just enough for the rest.
The Expert Mindset
Become really great at the core set of skills. Develop deep specialization in the tools and technologies of a small set. Identify the core strengths and go all the way in until you’ve reached a master level. Constantly read and improve your knowledge on this subset.
The Hacker Mindset
Experiment, learn and play with a lot of things. This is the jack of all trades mentality. Don’t try to become a master, instead learn just enough that the problem at hand is solved but can be looked into more deeper if needed.
A hacker mind is not afraid of experimentation and it’s ok to not know everything.
The ability to read code that you did not write could be very useful here, specially where documentation and guidance is not available. This is an acquired skill that takes some practice.
Combine the two and build a Spectrum
Instead of sticking to either hacker or expert mindset, here is a more useful approach. Become an expert in few core skills that need a great deal of attention, must be committed to memory and improved overtime. Next keep few more skills around that don’t need the same amount of dedication and energy — just enough so you can remind yourself again. Lastly some skills should stay out on the edges where you know the concept but not the detail. They exist to foster enough creativity that you can google them if needed.