DEV Community

Cover image for The 'T' developer
Lemuel Ogbunude
Lemuel Ogbunude

Posted on

The 'T' developer

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.

Top comments (3)

Collapse
 
elmuerte profile image
Michiel Hendriks

Master of one, jack of some! It's better than Jack of all (trades), master of none.

This is the reason why I have no favorite tags on dev.to, it will filter my feed into a tunnel vision. Always be on the lookout for other things.

Why would you ever try to learn Piet? It will teach you a thing or two about Turing machines and language design. Why would that matter? Because eventually you will write your first DSL (domain specific language).

Collapse
 
jobm profile image
Job Matheka

Exactly what I need to see. Thanks for posting this.

Collapse
 
stegriff profile image
Ste Griffiths

It's funny, in my current team, we talk about being 'T-shaped', but I never knew it was based on these two principles!

I had intuited the meaning to be "play multiple roles" and in my head I visualised it like a T piece from Tetris, filling in gaps on multiple lines! Just goes to show how much of my life I base on Tetris.

But seriously, this is such a commendable attribute and I'm grateful to you for writing this post and promoting the idea. People who get stuck in across disciplines create so much value for the team.

Thanks and God bless!