Click here to code!

Career Development for Programmers

Posted by Bob on Sun 23 September 2018 in SoftSkills • 7 min read

What makes you excel in your career? Become an expert in x, y, z. Sure, you need to learn technical skills, quite a lot of them. However there is a lot more to it. If you want to succeed in your job, business and life, you want to build a portfolio, share your learning, become a reader and a good writer, and last but not least stick to daily exercising. I published this article on my blog 2 years ago and find a lot is still relevant today and will serve our community. I also added an updated towards the end.

Success is a matter of choice, not chance ~ Deepak Mehra

How to improve your programming career:

  • The first thing obviously is to code. A lot. I was reminded of this again reading this great post this morning:

    wakeUp();
    
    workOut();
    
    var currentHour = new Date().getHours();
    
    var bedtimeHour = 22;
    
    while(currentHour < bedtimeHour) {
      code();
      currentHour = new Date().getHours();
    };
    

    Source: myLife.js. I bought an ABC t-shirt to remind myself of this as well (OK also because I like Baldwin's sales speech in Glengarry Glen Ross lol ... Always Be Closing = Always Be Coding!). Whether the 10,000-Hour Rule is true or not, with practice comes skill, and generally the more (challenged) practice the more skills.

  • Related: build side projects. For example I was learning some new Python tricks and idioms the other day, but it was not until using it that this stuff really sunk in. I needed nested defaultdicts, * unpacking to a named tuple, and I went to StackOverflow a few times more. Books are a good foundation, but skills come from getting your hands dirty. It's then that exceptions happen and need creativity to solve emerging problems. Yesterday I wrote a Twitter bot. I had done this before, yet I still learned new things: using the requests and logging modules, writing my own exceptions, hiding credentials in a github repo, to name a few. Deploying a solution to a remote server (different environment) causes challenges too. So practice, practice, practice! Aim everyday to improve yourself's yesterday version.

  • Read the passionate programmer. I made some notes here. The Developer's code is also a great read. Books to reread from time to time.

  • Share you learning. Start a blog. It has a myriad of advantages. Technical blogging is a great resource. I can also recommend Show your work.

  • Become a time management freak. One thing John Sonmez recommends in Soft Skills is keeping a log of time spent. We loose a lot of time on trivia especially in this highly interruptive social media society. I probably will give this one a try ...

  • Muscles need stimulation to grow, equally a software developer needs constant challenge to stretch to new levels. The mentioned 10,000-Hour Rule is only as good as you finding yourself new challenges!

    Your comfort zone is a place where you keep yourself in a self-illusion and nothing can grow there but your potentiality can grow only when you can think and grow out of that zone." - Rashedur Ryan Rahman.

  • Use idle time for rest, but it never hurts to listen to podcasts or do some video courses. Any success starts with a thought, and feeding your mind with good ideas can have surprising effects. I devour podcasts on my walks.

  • Collaborate with other developers (and do code reviews). It is not until you have to explain your code, or make it maintainable/ extensible, that you really start thinking about the underlying design. When you manage to explain your skill to another person you generally master it. Blogging is a great tool for this.

  • Become a better writer. Apart from an essential skill in many areas of life, clear writing has a lot in common with good coding. And read! Good reading is a precursor to good writing. Similarly, reading lot of source code makes you a better coder (I picked up this advice in the fascinating book Coders at work).

  • Try new things. I have been using Python a lot which I love, but there are a lot of other good languages out there. I certified in Java which has very good parts. I'd like to learn more Ruby. In terms of concepts Machine Learning is a hot topic, worth checking out (as well as NLP). Or do you code solely in PHP? Try Django, or full stack JS. You get the point. Even within a language you already use you can always learn more, for example to learn more Python: collections, iterators, generators, data science modules like NumPy and Pandas, functional programming constructs, Unicode, advanced OOP features, etc. The important thing is to never become complacent.

  • Jump on things others don't like. You can gain specialization, persistence skills and relatively high reward. Take data analysis for instance: everybody loves the analytics part, however data is usually not delivered in a ready-to-use format. Data cleaning is not the sexiest job but it is what makes the fun stuff possible. You see this in Big Data as well: everybody talks about nice tools like Spark/ Hive/ Pig, but what about getting the a good copy of the data loaded in? ETL (Extract, Transform and Load) is a non-trivial part of the total effort. Same story with Excel).

  • Don't ignore the marketing side. We all love the tech side, but sometimes we have to step out of this mindset and wonder who the customer is and what is the need, the problem we're trying to solve. Sometimes we build stuff before checking the audience. Understanding the market is a fundamental skill. And more generally becoming effective (solve the right problem) before focusing on more efficiency per se (become proficient at a skill).

  • Have a liability partner. I note that when you are held accountable by a friend or colleague you perform much better. And the joined learning is fun and fruitful. Update: read Darren Hardy's The Compound Effect where he states:

    To up your chances of success, get a success buddy, someone who’ll keep you accountable as you cement your new habit while you return the favor.

  • Last but not least: exercise! Daily exercise instantly pays for itself: you feel better, you have a good health (your most important asset), and sharpen your mind (= better code). It's like garbage collection: you can only hold that many things at once, and stress increases with time, so you need to clear your mind periodically. Besides, oftentimes it's when we leave our desk that we actually solve a problem we're stuck on. Getting in shape can be overwhelming, this book is a good start.


Remember you are in charge of your career, it's not up to your boss or even family and close friends to tell you what to do. You have to seek opportunities, and when they present themselves, grab them with both hands.

Secondly, technical skills alone only get you so far. Often a decently skilled and personable guy outperforms a super expert who lacks people skills. In that regard I highly recommend Soft Skills which deals with a lot of this. I am also reading John Sonmez' second book - The Complete Software Developer’s Career Guide - which he is publishing on his blog. Update: this book went to press since and is on to-read list.

What are you consistently doing to get ahead in your career? Share your thoughts in the comments below ...


Update 23rd of Sept 2018:

Difficult roads often lead to beautiful destinations. The best is yet to come ~ Zig Ziglar

  • I missed the words habit and goals above. Both are paramount to achieve any form of success. Goals keep you focussed and you should regularly measure you performance and the necessary adjustments to your plan to stay on track. Secondly I think any success strongly depends on your habits. I highly recommend reading Charles Duhigg's The Power of Habit.

  • Since this article appeared I made an internal job transfer and can confirm that getting familiar with a new large and complex code base can be daunting. It was uncomfortable at times but after biting through (I did not think Bites of Py would help me verbally one day lol), I realized: 1. I have read more code than ever before, 2. by looking at more experienced developers, I significantly improved how I write code and think about design, and 3. getting into uncharted waters grows your confidence. So again: seek new opportunities, even if they seem scary at first. I like what Tim Ferriss says in this context:

    A person's success in life can usually be measured by the number of uncomfortable conversations he or she is willing to have.

  • This article was written exactly 6 months before we founded PyBites (scary)! I feel that a lot of these points were central to getting where we are today. I am also proud and happy that we have been able to provide the tools to help developers write more code, share their progress and guest post to our blog.

  • Leaders are readers, and to become succesful you need a constant stream of inspiration, ideas and knowledge. We made a Django app to keep track of your reading: PyBites My Reading List. Looking for titles? Check out my reading list which has some other pointers as well. Never stop learning!

    screenshot PyBites Reading App


Keep Calm and Code in Python!

-- Bob


See an error in this post? Please submit a pull request on Github.