The 'T' developer
Lemuel Ogbunude Apr 13
When starting out as a developer the choice of which programming language to learn is affected by various factors. For some, it is the first language introduced at University, while for others it could be choosing the easiest to learn or it could even be the one introduced by a friend, the list goes on.
We may remain with our first language or move on to learn another, and that is amazing because as a developer you will always have new things to learn, new 'toys' to try out. The risky side is that some developers might get so caught up trying to keep up with all the new shiny tech and buzz words that they do not pay attention to the fundamentals.
I was listening to a talk by Venkat Subramaniam, he is a Java Champion and programs in over 10 different languages. He made a statement which was "Know everything about something and something about everything"...read that again.
Knowing everything about something
So this represents the vertical bar on the "T", it talks about the depth of understanding in a particular area, and this can be achieved by investing time and energy learning and keeping up to date with that technology. You don't really need to literally know everything about a technology, in fact, one thing to note is that even experts in a particular field also feel behind and the need to catch up, it's not a feeling you get only when you are a beginner. In fact, to be an expert in an area does not require you to know everything about that thing. If you Google "expert" it says "a person who is very knowledgeable about or skilful in a particular area.", it didn't really say someone who is aware of all the possible methods and libraries, though from the definition it is clear that an expert is not a neophyte.
One thing to take note is that getting good at a craft takes time but also we sometimes underestimate what we know and overestimate what others do. Sometimes try to teach a pure beginner about programming, it's at that point you might be able to reflect and see that you have actually acquired a lot of knowledge in your field.
Knowing something about everything
This represents the horizontal bar on the "T". So inasmuch as you should have focus, you should also take note of the trends and buzz words so that you do not get outdated. You should be able to have light conversations with developers using other technologies and at least not be totally lost. So because you are a frontend web developer shouldn't mean you should get lost when you see backend code, at least you should be able to relate to the backend engineer. Also, if you are a Python developer, that shouldn't mean you should not care about how classes and interfaces are implemented in C#. No knowledge gained is actually a waste, especially as a developer, it is possible that learning Python could make you a better Java programmer even if they are not similar. Most times the languages we do are actually similar. Learning a new language can be daunting because we don't like that funny feeling of being a newbie, but it's alright, it's normal and actually, the experience you had with a former language goes with you when you learn a new one so your investments are not wasted. A newbie in Golang who has coded for 5 years in C++ will approach things differently from a newbie in Golang who has never coded before.
For example, knowing how to code in Java makes learning Kotlin smoother, also knowing how to code in Kotlin makes learning Swift a smooth journey, there is actually nothing new under the sun.
I strongly advise you listen to this particular episode of the developer tea podcast Your Brain is Non-Linear, he did a wonderful job there explaining what I have just said.
So I still say again "Know everything about something and something about everything", of course like many other things it is easier said than done, but putting that goal in our mind will benefit us in the long run.