5 Things i would have started earlier if i was a new Software Developer

Dimitris Papadimitriou
4 min readDec 6, 2021

--

Make a Personal Learning path — Kan-ban board

After 14 years of professional development, if i could go back to my early developer days, i would have designed my own learning path and made sure i followed it. Sure, i had formal Computer science education, which in hindsight is [almost] completely useless. Academia is consistently lagging behind what is currently used in the market place[has anyone been taught Cloud patterns? if you had let me know]. You are the only person responsible for your growth as a Software Engineer. You are responsible of your own Education. When i got my first .NET developer position back in 2006 there was no Github, Udacity or Coursera. But in 2021 you can start by creating a simple Kan-ban board through which you can track your progress. The following is a subset of my Kanban-board

A Kanban board of mine here

When i come across an interesting topic, or article i add a new card on my reading list queue. You might want to learn Artificial intelligence make a couple of lists for example AI Courses, AI articles, AI Terms etc in order to keep track. It is easy to get lost in all the available information.

Creating small projects is the perfect way to familiarize yourself with some new technology trend or tool. Most of libraries have their own sample projects on github, just download the solution and debug the projects. Is far better that waiting for your company to use the specific library or tool in order for you to use it. For example have you ever used Message queues ? if not why not go the RabbitMQ C# introduction tutorial and try to create a simple sender/receiver exmaple. Try to keep it short, under an hour.

One of my favorite things is to Download the Open source git repositories, run the solutions and try to modify the project in a meaningful way. You can figure out the outline of Clean Architecture for example by just browsing the code of various git repositories with sample clean architecture applications

Expose yourself to Advanced Code — Learn the Advanced topics first

Struggling with the most advanced code and concepts withing your favorite language you will grow orders of magnitude faster.

Do you want to be light years ahead ? follow the evolution of C# at the formal repository at github. Just subscribe to the project in order to get emails and periodically just watch the discussion unfold.

Work on your Technical presentation skills

Being able to clearly explain your main idea behind an implementation. Here are two categories of explanations based on the audience:

  1. Business people. Skipping the technical details and explaining from higher level.
  2. Fellow developers . This breaks down to Junior and Senior developers.

Nowadays i am always doodling class diagrams, sequence and activities diagrams over post-it notes.

Mastering the Language of programming concepts

Mastering the Language is a continuation of the previous point. You should be able to use the terms behind the implementations, for example :Threads, race conditions, what is atomic commit? how about Eventual consistency? why not use the word Orthogonality in order to describe two concepts that are and should be kept independent. I usually see people try to describe concepts that the computer science community has already defined and developed technical language around them. Make yourself stand out by using the Language of computer science.

Learn the Mathematics behind Programming

Learning algorithms might be useful but is not always important. There are only few times where you will have to use Dynamic programming during your Developer Lifetime (well it depends where you are working).

Let me tell you the truth that i hadn't grasped the concept of covariance and contra-variance for over a decade but after solidifying my knowledge in Type theory and category theory, variance became strikingly obvious.

Bonus : Soft skills

Having soft skills as a developer is something that is essential especially if your plan to transition to something like software project manager, IT manager or anything other than pure development position.

--

--