There are tons of ways to learn to code. If you were starting from scratch you could do a coding bootcamp or a four year academic Computer Science program. Some people completely teach themselves or learn from friends and family. There are millions of blog posts, articles, videos and online courses out there to help developers learn code and improve their skills. With so many resources out there it can be hard to discern what’s a good next move to up your skills to the next level.
I find myself torn between different paths in my professional development periodically. I’ll find myself wondering, is it better to take this course or that one? Should I build something or learn new tools by following tutorials? Do I need to write tests or is it better to focus on feature development? Is it worth it to learn a new language or technology? What else could I focus on? There are no right answers here. Picking how to move forward requires reflecting on why you wanted to learn to code in the first place and defining goals and where you want to go. Whenever I feel stuck in how to advance professionally I try to focus on a few of these areas.
1. Get Healthy
There isn’t a mind and body connection; they’re the same thing. Whenever I’m in a rut my physical health is one of the first things I know I need to focus on. If you feel stuck in your career progression or not getting the external results you want be sure to turn your focus inward. Your diet and exercise is something that you can control. Working out feels good, calms your mind and can give you more energy to accomplish your goals. Michael Jackson said it best, start with the man (or woman) in the mirror..
Try cardio, weights, strength training, conscious eating and eating less processed foods. Stretch. Brush and floss your teeth. Invest in healthy relationships. Get enough sleep. Don’t drink or party too much.
2. Fix bugs
This isn’t particularly glamorous but it is effective. If you currently work at a company with a codebase find and document bugs and issue pull requests to fix them. At most companies you can lookup existing bugs and issue pull requests to the codebase assuming you have the proper access permissions. If you’re not in a technical role right now you could issue pull requests to existing open source projects to improve them. Fixing bugs is a great way to learn the ins and outs of a particular feature, track down the root cause and issue a fix that does not cause any regressions or new issues. Fixing bugs is a great way to contribute to a codebase and understand a product’s features. Fix things or improve things that are sub optimal.
3. Build new features or products
Launch a product, build an open source project. Write a new feature or product where you work. One great way to become a better software engineer is to ship code. There was a study at a university photography class. The professor told half the students they only needed to take three great pictures. The rest of the students he told he’d grade them on the amount of pictures they took. The ones that shot more pictures produced better results at the end. Not all of your code is going to be perfect but it’s better to keep on going writing code and shipping features than studying forever and not shipping product.
4. Write tests or test automation coverage
Apart from writing new features or fixing bugs there’s always tests. You could write unit or integration tests for product features or build test automation systems for a product. QA automation is a large field of software development. Many software engineers are required to write tests. Shipping code with test coverage in place can give you peace of mind that functionality will work as expected. Writing tests for code or features is a great way to improve as a software engineer.
5. Learn from others: read and watch code
There are thousands of great programming blogs, online courses and videos out there to learn from. Watching videos or online courses is a great way to learn new topics. Reading code or books about code can help you write better code and understand code more thoroughly. There’s open source projects on GitHub as well as hundreds of great books out there. I recently wrote an article about online courses for learning programming that I recommend or would like to take myself :) One word of caution here is that you find yourself copying lots of tutorials or watching videos all the time it might be time to put what you’ve learned into practice by building things or fixing bugs. The best way to learn is by doing but we all need to take a step back and learn from others now and again.
6. Do practice problems
Solving coding practice problems is one other way to improve as a software engineer. You can find practice problems on HackerRank or Leetcode. I’ve put together a GitHub repo of websites to visit and concepts to learn for practicing data structures and algorithm type problems. Though you may never actually use some of the knowledge required to complete practice problems they’re part of the software development industry and they’re good practice. These problems often require that you think carefully and critically, about how to solve a challenge and that can be a great skill to hone and develop. Honestly, practicing coding problems has helped me write better code in the past. It’s not something I particularly enjoy doing and not an area I’m particularly strong in but it is one practice or routine that can help you learn new things, write better code and become a more effective engineer.
7. Share what you know
I really enjoy this part. I hardly know if it makes me a better developer but I think at the least it helps me become a better communicator, which sometimes is just as important! Write blog posts or record videos of what code you’ve learned or what you’re learning. Share with your network what’s going down, what you’re struggling with and what your wins and loses have been. Blogging on the internet doesn’t have to be about pageviews and marketing. Writing and sharing what you know can be a way to build your social circle and your confidence as a developer. Give back to and share with the community. Teaching is a great way to learn and improve! This could be writing blog posts, speaking at conferences, recording videos, doing live streams, writing books or shipping online courses.