— Apr 08, 2016
I received an email from a coworker seeking advice for professional growth. This was my response.
Looking back, are there specific habits or practices that you found useful to help you level up as you were working as a developer, especially in the early stages?
Bias towards action. Find time and do whatever is on your mind. You’ll screw up. Learn from that.
Write. It doesn’t matter if anyone reads it. Actually other people don’t matter much at all. Don’t get distracted or worried about what everyone else is getting done. Sometimes it will feel like you’re hopelessly behind in what you know. This is self-defeating. Just do things and learn from them.
The flip side of the previous question would be valuable as well: are there habits or practices to avoid that’ll hinder growth?
Try not to get too caught up in minutia, but don’t be afraid to deep dive into something specific to understand what’s going on. There’s a balance between going off in the weeds and getting lost in them.
Something I’ve been struggling with is self-evaluation/measuring my progress as I learn and grow. Have any advice you’d offer around those themes?
Write a lot. You’ll be able to see what you’ve learned. For OSS, I keep a tracker so I can go back and see what all I’ve done. This let’s me constantly free my brain of trying to remember things and focus on right now. You’ll be pleasantly surprised by how much you’re able to do! It’s also fun when you’re trying to remember or do a thing and found something you wrote that you don’t even remember that helps you.
Two most important tools for me.
Git is a lot more than “oh crap i deleted everything”. It’s a way of revisiting the thought process of something that was written, and it’s a way of managing source code locally as a feature is realized. Managing the local repo is a critical part of my development process.
When learning a thing, automated tests are an excellent way of creating repeatable scenarios to play out and store for later while you realize your domain. I find that I tend to write more tests when I’m learning something, because I’m not able to take as much for granted. Once you’re beyond that, you are armed to use them for system confidence as you continue to work.
Hope this is helpful!