The Growing Developer

Why you want this and how to become one

10-15 minutes read

This article is part of a series that began with The Replaceable Developer. That article examines how developers can prevent their current work from hindering their professional growth.

TL;DR

Growing your skills will open doors to new challenging opportunities, which in turn can lead to making a bigger impact and, with promotions, a higher salary. The TEC model is a structured approach for achieving this. Increase your theoretical knowledge, gain more diverse experience and communicate about it, both written and verbal. Pick a new and exciting technology, apply it to some small (pet) project and share your findings with your fellow developers. Repeat this.

Photo: generative AI, Stablediffusion [1].

Introduction

Finding the most effective way to invest your time and grow as a developer, ultimately reaching a senior level, is a persistent and crucial challenge. There is an ever growing number of exciting new technologies to explore. New technologies are leading to a rapid increase in the number of tools being created. For example, in the AI space, everyday new frameworks, tools, libraries are being announced, for every popular programming language. You cannot afford to wait until the storm has settled ; change is the only constant. Developers must actively engage with the ever-changing landscape to remain relevant and competitive. With the goal of becoming a better developer, how can you walk your growth path?

TEC model

Over the years, my thoughts on the topic and several experiments resulted in a simple model that can help structure your growth process. It is composed from three perspectives: Theory, Experience and Communication. Once you have decided what new technology you want to master, you can work on the three perspectives and increase your skill level.

Levels of skills by seniority.

There’s no universal, official body that defines “junior”, “medior”, and “senior” developer levels. These terms arose organically within the tech industry to broadly categorize developers based on experience, skills, and responsibilities. In practice this simple model just demonstrates where to focus on for you as a developer.

However, in my experience, developers do want to be guided in that process. So based on your company size, company culture, and tech stack, you could make a checklist of technologies, principles and exercises you as a developer should to be aware of and master it. In that checklist, you can label each entry with the right TEC level, e.g. “Understands GraphQL schema” contributes to level T2, “Presenting at a Meetup” contributes to level C3.

Theory

It all starts by learning some new technology, method, framework, library, concept or principle. There are many sources to learn from out there. Books, papers (PDF), README’s, videos, blogs are the common artifacts. Your Web Search engine is your friend in finding popular material. Blog posts are a good starting point because they give you some overview and simple examples and wrapup with web references if you want to study more; and you do!.

Do not hesitate to get your hands dirty right away and tryout the new technology or package by running the example programs. It is an important step in the process of really understanding how it works, what it can and cannot do.

One method of deciding what technology to learn is to look at technologies you are using in your daily work and find an alternative or even competing technology that you are not using. Let me share some real examples:

  • A frontend developer experienced in React could start learning Vue.js.
  • A API developer creating services using REST and JSON could learn gRPC and ProtocolBuffers.
  • A infra developer maintaining Cloud resources using Terraform could have a look at a procedural CDK.
  • A Java programmer could learn Go or one of the other 100+ alternatives (well, maybe not Piet).

The goal of learning a new technology isn’t to discard your existing skills and replace them entirely. Instead, it’s about expanding your horizons and gaining fresh perspectives on what you already know. This process of exploration and integration is how you grow as a developer.

Experience

It is now time to put the learnings into practice and go beyond the usual “hello world” and “todo list” like examples found in the documentation. Here are some approaches that I have done in the past:

  • Start (or rewrite) a pet project. A small application that you care about because of its domain or because it is great tool in your coding toolbox. Examples are command line tools, a small library that you created in the past, a music album organiser, a currency exchange library.
  • Take part in a pair-programming session with a more senior developer on the topic and learn to apply the knowledge to real world tasks.
  • Use one of the company’s recruitment exercises and build your solution with that new technology ; you can compare your results with those that applicants have submitted.
  • Recreate documented examples in one technology in your new technology and check that the results are the same.
  • If you are a freelancer or consultant then ask your manager about new upcoming projects in which you can use the new technology.

It is important to make notes about these tasks so that you can use it when it is time to communicate about it.

  • How was the setup experience ?
  • How easy was it to debug your solution ?
  • Why was the framework or library created ?
  • Does the new language has all the packages/libraries that you expect to see ?
  • Performance ?
  • Ease of change or contribute ?
  • IDE support?

Communication

The last subject is ofcourse the most important one. How are you skilled in communication? Can you provide an overview, compare technologies, explain the PRO’s and CON’s to a group of (non)-)technical persons ?

You can have a lot of knowledge and build tons of code by yourself but you can only grow as a developer if you are able to share what you have learned, discuss your findings and explain what you have created. There are several methods for communication:

  • Write a blog post (publicly or company private) to write down your findings.
  • Save your work to some GIT repository and write a README how to was created, how to use it.
  • Organise a knowledge sharing session at which you present it, demo the result and respond to questions.
  • Create and publish a tutorial movie about the technology and the product that you have created.
  • Organise a workshop and invite developers to work on creating an example application that you have prepared.

Writing or presenting about the new technology forces you think about structure, making it a logical story to an audience that may not have seen this technology before. Also prepare for typical questions that they might have. In my experience, having to present a topic related to a new technology is a great way to learn about it.

Conclusion

this section was summarized using generative AI, Gemini

The TEC model provides a clear framework for developers to navigate their growth journey. By focusing on Theory, Experience, and Communication, you can build a strong foundation in new technologies, apply those skills in real-world projects, and effectively share your knowledge with others.

Remember, the key to growth is not just acquiring knowledge, but actively using it and sharing it with your peers. This iterative process of learning, practicing, and communicating will lead you towards becoming a more valuable and impactful developer.

So, choose a new technology that excites you, dive into learning it, build something meaningful, and share your experiences. The journey of becoming a senior developer is not a race, but a continuous exploration of new horizons. Embrace the challenge, and enjoy the ride!

[1] : iconic young working person walking up on a large small stairs from bottom left to top right carrying a bag with the white logo text "TEC"