This is the first part in a series about developing your skills as a software developer. To learn efficiently, you first need to learn how to learn, which is easy to overlook. Because of this I want to share the routines, habits and strategies that have helped me with my personal development.
Why should I spend time and energy on developing my skills?
Being a software developer demands that you are used to dealing with changes. You need to be up to date with the current de facto standards, while also looking beyond the horizon to avoid being stuck on a sinking ship. Be mindful however that the invested time in learning something new should always benefit yourself by adding personal value. It should feel fun and engaging and that it will enable you more freedom through more options. Having both breadth and detailed knowledge enables you to shape the world instead of following the crowd. You will also come to the realization that you have the ability to give back, that you can teach others what you know and at the same time strengthen your own competence further. In time you will be more effective by working smarter and can instead focus on the challenges that interest you.
Feeling motivated? Whatever the case I will proceed to discuss some strategies on learning smarter and more efficiently. Some of them will feel obvious, however repetition is also a means of learning. Should you want to commit all the way then I suggest that you read my article My Ideal Daily Routine.
Good habits for various situations.
- Hang out with people more experienced and knowledgeable than yourself. It will make you aware of what you do not know, while simultaneously letting you take part of their knowledge and experience. Business man Warren Buffett has said “It’s better to hang out with people better than you. Pick out associates whose behavior is better than yours and you’ll drift in that direction.”
- Spend 1 to 3 hours a day on studying. If you are having a hard time allocating time for studying, then try to plan an entire week from time to time where you push yourself a little extra. If you are listening to or watching recordings, try doing it in 1.5x or 2x speed. It is usually not a issue to perceive the important parts.
- Avoid getting stuck to ideologies, it limits your thinking and clouds your judgement. Instead be open to the thought that everything you know may be wrong and could potentially be replaced with something better. Strive to become aware of what you do not know and spend time to prove yourself wrong. Not only will this let you see the bigger picture but also give you an advantage in an argument. Also be honest to others about your shortcomings and act responsibly by learning to answer that question until next time.
- Have constructive discussions, to make it meaningful it is paramount to understand the respondents argument. Take your time to listen thoroughly and analyze before coming up with a counter argument, avoid getting stuck in bike shedding discussions.
- Teach others what you know. While reading is useful, it just can’t beat the impact that teaching has on learning. It helps you in identifying parts that you still have not fully grasped and is necessary to revisit. Be active in lectures and workshops, you will learn more that way than just listening and taking notes.
- Challenge yourself and your surroundings. Or as John F. Kennedy put it “We choose to go to the Moon in this decade and do other things, not because they are easy, but because they are hard; because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one we intend to win, and the others, too.”
- Write down what you know that you do not know, or rather write down all the questions you have regarding a topic. Then rate them and prioritize based on which questions are of great importance with a high return on personal value. The result will become your personal well informed study plan.
Seven strategies for software developers
- Regard everything as tools, even code is just a tool and should be replaceable with better tools.
- RTFM (Read The Fucking Manual) as some might say. Skim through documentation and API’s, you will always learn something new and sometimes be positively surprised. Use DevDocs to find documentation on most libraries.
- Use a REPL if there is one available for the programming language that you are learning. It is a quick way of trying out functions or a certain idiom to understand how it works.
- Do coding exercises, also known as “kata”. codewars has exercises with varying difficulty and support for many popular languages.
- Use GitHub frequently, if you are going to try out a new technology then create a repository. Also do everything as professionally as you would for a real customer. The additional effort will pay off later when you realise that you will need to do it in a real case scenario. When you already have a repository you can expand it when you want to learn more technologies or just improving and refactoring it will also improve your skills. Having a public repository is also a good way to show that you have experience using technologies that you might not have the opportunity to use at work.
- Become an active contributor to open source projects, preferably the ones that you use frequently. This will give you insight to how the tools work and also allow you to collaborate with developers from the around the globe.
- Make use of Stack Overflow or Code Review.
Miscellanous Tips
I can recommend a few YouTube channels, Coding Tech, Strange Loop and Computerphile. Together they cover a wide range of tech and programming related topics.
GitHub has a collections page on open source projects https://github.com/collections.
So with that, I hope that I have helped you open your mind and set you on a smarter course in your personal journey in becoming a better software developer.