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!). Wether 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.

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.

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! Your boss or even family and close friends are not trained to tell you what to do. 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.