In the always-growing technology field, the best way to get ahead is to make yourself better. Now, I don’t necessarily mean better than the person next to you or better than the majority of software developers, but better than your previous self. The ability to constantly evolve is an absolute requirement to exist in the technology field as a real contender.
This it the first post in a series devoted to making yourself a better developer.
Learn to Learn
Not One Size Fits All
Everyone learns differently; we all know that. Some people are visual learners, some require a mentor, and some can learn from reading theory. However, when it comes down to it, you’re going to need to implement that knowledge at some point in time as code. My buddy Jon wrote a great article about Making Badass Learners that defines good documentation:
your documentation should provide many straight-forward, and incremental usage examples, rather than paragraphs of theory and explanation
The ability to read code examples, understand what they do, and implement them is important. If the particular library you are learning about doesn’t follow these guidelines, you need to implement learning schemas to ignore the noise, and understand only the important information. How do you do that?
Break it Up
When you endeavor to learn something new, it can be overwhelming how much there is to learn, and sometimes it can be so daunting that you almost feel paralyzed. The important thing is to define a starting point and go from there. Break the source material into digestible chunks and consume them one at a time. Similar to how you would eat steak, you wouldn’t pick the steak up with your hands, and try to shove the entire thing down your throat at once; you use a fork and knife to cut it up into bite-sized pieces, and you consume them one at a time. When you were a child, you needed to learn to use a fork and knife, to cut your food, chew, and swallow. Learning to learn software development is no different. You are going to have to learn the tools (utensils) to cut up the documentation, guides, videos, and tutorials into bite-sized and manageable pieces, so that you can work through them (chew), and ultimately understand (swallow).
One of the great things about software development is that the barrier to entry is generally pretty minimal. If you are reading this right now, you likely have a computer capable of developing some kind of software—whether that be a website or web app, a mobile app, a desktop app, or an embedded system application.
Found a new technology you want to learn? Think of something to build that can incorporate that technology and build it. Figure out the first thing that you need to do to get started and do that one thing. Break down each barrier as you come to them and you will learn each part. Once you learn how each part works and how they all work together, you can learn how to architect a solution before you start, next time, or you can start refactoring things you now know you can do better.
Don’t Give Yourself Analysis Paralysis
I’ve seen Analysis Paralysis kill more “side” projects and destroy more developer’s spirits then I can count. To avoid this, try not over-analyizing a problem or solution. A big part of a developer’s job is to find simple, maintainable, and quick solutions. Using that cool new bleeding edge library might not be the best choice this time around, and that’s okay.
Give Yourself Time
Give yourself some time to absorb what you are learning. If you don’t feel like you understand something that you are doing, take the time to understand it better. If you end up getting stuck and feel like you can’t move forward, then find another problem or feature you can work on. Maybe the next thing that you work on will help you understand that previous thing better.
Teach Someone Else
One of the best ways to reinforce your own knowledge is to test your skills when teaching someone else. Helping another has a physiologic effect on you by providing your brain with “feel good” chemicals (dopamine), which makes you feel awesome that you’ve helped someone, and will reinforce what you’ve taught even more. While teaching someone else you may be faced with a question you might not have asked yourself, you might have to learn about more technical aspects, or you might stumble on something new while teaching.
You have to be confident in yourself and your own ability, before you are willing to help another — Simon Sinek
Once you know that you feel comfortable teaching someone something else, you feel confident that you know the material. It works this way with giving a speech or a lecture. If you know the material, it flows out of you naturally; whereas, if you don’t know the material you are teaching, you’re more prone to errors, pausing, and the dreaded “ummm” before every sentence.
Don’t Be Afraid to Look Something Up
This isn’t grammar school. Don’t struggle to remember something if you can’t. Don’t be ashamed to look something up if you can’t remember it. Don’t force yourself into learning the way someone else does or the way that someone told you for fear of ostracization. Understand how you learn and do it that way. You aren’t doing yourself any favors by working against your own nature. If you don’t know how you learn, do some experiments and learn in some different ways (videos vs. articles vs. tutor).
A great way to make yourself better is by learning to learn. If you don’t know how you learn, start there.
- Understand yourself and how you learn, and work on those skills
- Find source materials that help you utilize your learning style
- Don’t force yourself into learning from sources that you struggle with or that waste your time
- If you are having trouble reading documentation, find other materials
- tutorials others have created
- dig into the code and read comments
Once you’ve mastered the techniques to teaching yourself new skills, you will become an invaluable asset to a team due to your ability to pick up something new and run with it all the way to production.
In the next post in this series I will be writing about soft skills, and how those skills can help make you a better developer.