top of page
Search
  • Writer's pictureCareerTrails Admin

Lessons from an old fable

We have seen it ever so often.


Shiny new technology arrives on the scene, slick website and all proclaiming how it will radically shape the world of application development. Online courses, YouTube videos, hashtags, blog articles, Slack & Discord communities, awesome Github links spring up overnight like mushrooms all feeding the hype (to be fair, most technologies do start out solving a certain class of problems better than others) and before you know it, shiny new tech is a _thing_.


Lest we puny programmers become obsolete, we gotta have it on our resumes!


Now that we have made up our minds, how should we go about embellishing our resumes? Lazy (or busy) that we are, most of us try and find the _minimal_ amount of effort that will take us from zero to being "perceived" as competent. After the mandatory "hello world" starter that goes through beautifully thanks to modern package managers, we lap up an online course or two, happily coding along with the instructor whilst marveling at how easy the whole thing seems, and voila! we are done. We are now secure in the belief that, should the need arise, we have the necessary broad perspective to be able to plunge into the depths when required. Shiny new tech finds pride of place on our resumes and so does the online course certificate on our social profile. Hurray! We have staved off obsolescence with a deft manoeuvre. Like the fabled rabbit, we now have a reasonable lead compared to our peers who are yet to catch on, so its time to rest on our hard-won laurels, if only for a bit. Bask in the glow of the bragging rights we just garnered.

We revel in the euphoria that our new-found skills give us till we sit across an interviewer, or perhaps, and are subject to a live coding test, or are given an opportunity to try new tech out on an actual project with deadlines. Anything that forces us to actually _apply_ our understanding, and quick. That is when we realize that we have only grazed the surface, and it takes more than just a cursory glance at any technology to know what we are really doing. Chances are, it is too late by now to indulge in any damage-control, and our prospects plummet faster than a pull request devoid of comments.


But what the heck. Know what? *Shinier* new tech just popped up on the horizon, and they say it's the next big thing. Lest we fall behind, lets have it on our resumes! And so the cycle continues .....

Sounds familiar?


As a recruiter working with IT developers day in and day out, I see well-meaning, really smart developers trying to straddle multiple technologies (often spanning multiple programming languages) simultaneously. What is to be expected? They just end up spreading themselves too thin, dividing their precious mental bandwidth between multiple learning curves, and end up mastering nothing in the quest of being good at everything.


If you are a budding developer, I suggest you slow down. Take a deep breath. And a step back. Perhaps there is some truth to the old fable. Yeah, slow and steady winning the race and all that. I humbly submit for your consideration and introspection, the following career advice, embodied as three simple principles. In the spirit of the title of this blog, I'll dub these as the way of the tortoise.


Here they are -


1. Fundamentals never go out of style.

2. Less trumps more.

3. Mastery takes time.


Lets dissect these one by one.


Fundamentals never go out of style.


For dramatic effect (and a laugh), here is how a trend-chasing resume sounds -


I am a Blockchain developer implementing a highly available, containerized, cloud-based SaaS platform comprised of a modern, fully-responsive JavaScript PWA interacting via a secure REST/GraphQL API with a functional, reactive, JVM-compiled back-end based on a micro-service architecture that utilizes advanced AI, deep-learning and data streaming techniques to solve difficult problems in Data Science for financial markets on petabyte scale data, delivered in a completely agile fashion with a CI/CD pipeline”.


(In fact, don't hire me - just prostrate yourselves before me and fervently pray that I would even deem to give your paltry 6-figure offer any further thought)


Although this may be hyperbole, you get the gist. You don't need to be so obsessed with projecting the latest trends on your resume, and feel insecure about leaving certain technologies or tools out. You aren't expected to know everything!


What is more relevant that you have a set of unassailable skills and techniques when it come to the fundamentals of your programming profession - concepts and ideas that have withstood the test of time. Paradigms that span programming languages. Efficient ways to solve categories of problems. Ideas about data organization and data structures and using them efficiently. Intimate knowledge of computer architecture. Ways to measure and tune runtime performance. Mechanical sympathy. Threading models and concurrency done right. Efficient memory management. Synchronous and asynchronous protocols. API design. Distributed system design. Ways to compose behavior. Handling errors correctly. I could go on and on ... and know what? The insights you derive from these will also give you the necessary depth of perspective to critically analyze the strengths and weaknesses of shiny new tech rather than blindly following the herd. You may have noted how these also tend to be topics of relevance during any interview process, as opposed to your ability to program to a certain new API.


Observe any accomplished craftsman or artisan in your vicinity. Chances are they are proudly using the same worn-out tools they started with, or were even handed from a generation prior. And yes, aren't we amazed at the magic they can create with what they wield? Remember, programming languages and frameworks are just like tools in a programmer's arsenal. You need to learn how to use your tools really well before passing any judgement regarding their merit. And switching them again and again ever so often tends to distract you rather than add to your expertise.


Bottom-line?

Don't be Buzzword Bob. Build some solid fundamental skills.

Less trumps more.


Lets say I am looking for a server-side Java developer with 3 years of work experience. I see two candidate resumes with excerpts as below -


Candidate 1 : "....Solid Java programming skills, with the ability to write object-oriented as well as functional code. Well-versed with Java 8+ features. Areas of strength include the Java Collections API and the ability to write complex multi-threaded code in Java. Has hands-on exposure in tuning the Hotspot VM in production for consistent performance on large heap sizes (>16 Gb)"


Candidate 2 : " .... Java, Kotlin (mobile), Android, Python scripting, JSP/Servlets, Struts, Apache Kafka, Apache Spark, Apache Flink, Elasticsearch and Lucene, exposure to building micro-services using Spring Boot, Micronaut, Helidon, and Vert.x"


Who would you call for an interview?


Trust my word as a recruiter, a majority of the employers seeing this will choose to have a word with Candidate 1. But why, you may ask. Tell me, what is more effective, 1% of progress in a hundred different directions, or 100% progress in a single direction?


When it comes to learning curves - should you go breadth-first or depth-first? I would argue for the latter.


You have to be good at one thing first, at a level of proficiency where people will be willing to hire you for it. Everything else comes later.

(While we are on this topic, I'll highly recommend some further reading for you - "Essentialism : The Disciplined Pursuit of Less, by Greg Mkeown"

Bottom-line? Be very choosy about what you put on your resume. For anything that goes in, be prepared to defend your knowledge with all your might. No half-arsed inclusions please.


Mastery takes time

No shortcuts here. To really claim that you know something well, you have to put in the hard work. A couple of online courses may get you started, but you absolutely need to try things out on your own before you get comfortable with building something basic even. You then embark on a path of constant improvement, which involves a ton of practice and several projects, persevering through times where you get stuck with seemingly unsolvable problems, before it all starts making sense to you and you start becoming productive. The last stage is where you acquire sufficient insight to decide how and when to best employ this newly acquired tool, and the pros and consequences of doing so.


Learning curves are far from being a linear graph, as depicted in the diagram below. Who do you think has a higher probability of success?

Bottom-line?


Cultivate mental grit. Be prepared to put in the hard work. Learning curves do get easier over time.

Remember, the more you sweat in peace the less you'll bleed in war.



15 views0 comments
bottom of page