Im sure all of us have felt this from time to time. As a software developer I feel like I can go from thinking I know everything to feeling like I know nothing in a millisecond.
It seems to be a feeling that almost every developer I have ever talked to has experienced from time to time during their career.
It helps to know that everyone experiences it but what can you do to help avoid it?
A concert pianist doesnt master the piano, ever. It would be extremely glib of any musician to say, “I have mastered this instrument, I can learn no more”. This doesnt make sense for most professions and especially one as dynamic and ever changing as computer programming.
As a developer you have to constantly hone your craft. Read books and articles. Go to conferences and meet ups. Network. Teach other people to program. Take classes online or at your local college.
You should never stop learning, ever. If you are a developer with 30 years of experience you should be just as versed in the latest technology or design pattern as the young college grad.
Part of my personal issue is that I like to delve into something and when I learn enough to be proficient, I move on to the next shiny thing. This can be disasterous for a Junior Developer. You end up knowing a little about everything but not knowing anything in depth.
That is the minimum length of time you should spend on a new subject. Pick something new and cool and shiny, make sure it is going to be around in 6 months and then learn it. Dont switch to something else when it gets difficult. Stick with it. Learn it. Inside and out, outside and in. If it is open source, look at the code. Modify the code. Play around with it.
Not only should you be able to make a cool web app in Angular 2, but you should know where the github repo is, you should have several contributions, and you should be able to answer deep questions about it:
“How does Angular 2 handle two way binding in a vacuum at 99.9% of the speed of light?”
You need to be an expert in the subject you have chosen. A good way to test this is to give a talk. See if you can get 2 or more people to sit and listen to you talk about your subject for 20 – 30 minutes. You will know for sure after that if you have it down or not. If not, then dont sweat it, and keep learning.
There is no greater feeling than hearing the most Senior dev at your company say,
“ARGH! How the hell does Angular 2 do two way binding in a vacuum near the speed of light?!?!?”
and then you step in and say,
“Ok, imagine a spherical manifold in 4D de Sitter Space…”