I originally posted this post on my blog.
"Focus on learning one thing."
A coworker told me that every time he got to my desk. At that time, he was the IT/network guy. Years before that, he was a certified Java engineer or something.
I was new at this coding thing. I was trying to learn about everything at once. It was back in 2010ish. I was reading The Clean Code, learning Python, using C# at work (coming from Java), and watching PHP presentations in my lunch break.
Now you see why my coworker told me to focus.
Don't chase shiny objects, go deep into fewer things
Instead of chasing new and shiny objects (like tools, libraries, and frameworks), juniors (and we all) are better off going deep into fewer tools and concepts.
Me 10+ years ago? "Oh there's a new framework. A new C# version. A new CI/CD tool. Hey, what's that new Hangfire thing over there?" Arrggg!
Frameworks and libraries come and go.
Today it's React with Typescript.
Before that, it was Bootstrap with Knockout.js.
Before that, it was ASP.NET WebForms.
Before that, it was Perl scripts or something. I wasn't around coding at that time.
And who knows what AI will bring to the table.
But chances are we'll be working on a C-type language, still using text files, and writing SQL. That hasn't changed in ~50 years. And it will remain the same. I wouldn't bet all my money though.
If you're starting your coding journey, master the topics that have passed the test of time:
- SQL
- HTTP
- C/C++
- Data structures
- Design patterns
- Vanilla JavaScript
- Clean code principles
- Debugging and testing
- Linux and operating systems
(Not all of them at once, of course.)
I don't know what other subject to add to that list now. But you get the point.
And more importantly than spitting out code, master your soft skills: negotiation and persuasion. Coding is more about collaboration than cracking symbols on a file.
It took me quite a while to learn that lesson. And that's why I wrote Street-Smart Coding: 30 Ways to Get Better at Coding. It's the roadmap I wish I had to go from junior to senior.
Get your copy of Street-Smart Coding here. Because coding is more than chasing trends. It's about building skills that last.
Top comments (11)
I remember before landing my first job, I was mostly like that, chasing everything that to me seemed important at that time, cause it was shiny and interesting. At some point during that time, I started reading a book called "Essentialism" by Greg McKeown, and one chapter addressed the point that "Energy is Finite", and he used two circle drawings
At that point, it kinda dawned on me that I'm the one represented in the first circle, that's when I shifted my perspective and started focusing solely on the essentials, things that I needed to improve and the knowledge gaps I had with one tech stack.
The funny thing is, when I landed my software engineering role, the onboarding deck had a quote from the same book, about focusing on the essentials!
Such inspiring and interesting comment, Rasheed. I like the concept of energy being finite. Sure, there's a lot of things to do but scarce energy to do them all. Thanks for the book recommendation. Noted!
When I began in coding, it was always one thing. At first, it was Turbo Pascal. The Turbo Pascal family of compilers gave you the ability to create compiled apps for MS-DOS. Time passed, and the next big thing was dBASE III+, followed by Clipper. Compiled applications primarily focused on databases. Then, we all knew about Delphi and Borland C++.
Until then, it felt all incremental.
Suddenly, the possibilities grown exponentially. Web programming arrived, once JavaScript was JITted and programming on the browser became a thing. At first, you could create your own web apps with anything (even C++), but then Java became the king.
Python was the next big thing. and with the improvements in performance, it was feasible to do serious programming using it, even if it was not JITted. And you could use it for everything, from web apps to desktop.
Fortunately, I always had been conscious of my own limitations: never seriously followed the trail of web apps (fortunately). I very much like Python, but I also jumped from the C++ wagon when I saw where it was headed, and landed on C#.
So I know a little of web programming with Python, and desktop programming (that has always been my thing) with C# and Java (for Android).
While focusing is essential, I also feel that knowing a couple of programming languages is also good. I mean, just for the change of perspective.
Wow, what a journey! I've only heard about Pascal, never used it.
100% agreed. My problem was I wanted to learn them all at once :/ just barely touching the surface of each one. And I'd add: learn a couple of programming languages that challenge our view of programming. Learning Java coming from C# won't teach that much. :P
Agreed!! It's very interesting to learn a programming language like Lisp, or Haskell. A functional language, in one word.
it is so true specially junior software engineer or any IT roles is going be in demand in the near future. It will not change specially in the age of AI. You need the human companion to make the decision
I totally agree with the main idea! As a Computer Science student, I find that the biggest trap is rushing to learn new frameworks before fully grasping Data Structures and Algorithms. Those basics are the true 'shiny objects' that actually pay off. Focusing on clean code and robust problem-solving skills is much more important than just listing 10 different frameworks in your CV.
IME, we can always learn the shiny frameworks with a hands-on approach at work.
Great advice. It’s so easy to get distracted by new tools, but going deep on the basics really does pay off long term. This is something a lot of junior devs need to hear.
Absolutely! And that's something my younger self also needed to hear.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.