Leveling Up as a Junior Engineer
I recently had a conversation with a good buddy and former colleague of mine about a side project that would be good for him to work on so he can improve his software dev skills. This got me thinking about the handful of folks I’ve mentored or helped with in regards to engineering work over my career. I figure it’d be good for myself as well as others to try to distill some of my experience and turn it into a post, especially for those that are new to the software development career path. We’ll cover some cool stuff like finding a mentor, involvement in the community, side projects, what to read, and soft skills.
Finding a Mentor
One of the best ways to grow as a programmer is by attaching yourself to someone who knows vastly more than you do. There is no substitute for pair programming with or getting a solid code review from a senior engineer. Doing this allows you to tap into the way they problem solve, their opinions, and their programming workflow. These are some of the things you’d want to absorb into your own routines because they are critical for getting the job at hand done.
I’m sure a lot of folks reading this are probably thinking, “Well of course I need a mentor. That’d be great. But I don’t know where I can find one.” That’s totally valid because it can be quite difficult, depending on your situation, so let’s talk about finding a mentor.
First, I’ll say that the mentor mentee relationship doesn’t need to be an explicit, signed document that says “So-and-so will mentor me for a period of six months and at which time we’ll reevaluate”. It can and likely will be just an informal relationship that you have with someone you interact with regularly. It’s as simple as you asking them questions about code or problems you’re struggling with, getting their opinions or answers, and then you learning and growing from that experience.
Secondly, there are a lot of places you can look to for a mentor. Here is a quick list:
- A colleague. This is the most likely scenario. Someone who’s working on the same codebase as you or at the same company as you is your best bet. He or she would most likely want your code to be better because it would make their lives easier or the company better as a whole. Ask someone. It won’t hurt.
- A friend. You probably have one of those friends who graduated a few years before you, knows all the ins and outs of X framework, and is working at a rad company. Ask her or him if they would look at your side project or even ask them to work on a project together just so you can learn from them.
- Online. There are a few services out there that offer to pair you up with a mentor you can check in with regularly. This costs money, so it may not be for everyone, but it’s a good route to go if you want explicit mentorship. It’d also be a great way if you’re not surrounded by many devs who could mentor you. You could look to (Codementor.io)(https://www.codementor.io/) or a smaller platform, bloc.io.
Involvement in the Tech Community
Getting involved in discussions about tech and asking questions to the community is key to growth as an engineer. This is where you’ll learn important best practices, find help debugging that awful issue that is stumping you, and grow your network. Here are the best places to jump in:
- Join a Slack community. There is a Slack community for everything nowadays. Almost all languages, most frameworks, and general things like code cleanliness have Slack channels. Join one. Talk with people. Ask questions.
- Jump on Twitter. You may not be interested in tweeting, but joining Twitter just to follow folks in your specific area of tech is a smart move. Got a favorite open source library that you work with everyday? Follow the person or the team who wrote it. They’ll likely be tweeting interesting conversations that will help you grow in that particular library or language.
- Meet ups. There are tons of meet ups and talks going on about software dev in every city around the globe. This is where folks from all levels of experience get to meet and learn from one another. Go to these events for your particular corner of software, grab a beer, and talk with people. You’ll definitely learn something new and you’ll probably have fun!
Reading and growing your knowledge in your field is another important aspect to leveling up. Got time on your bus ride to work or have trouble falling asleep? Stop playing Clash Royale during that time! Pick up a book or read that blog post by Jeff Atwood that’s been on your to-do list.
My suggestion is to read broad first. Books that software development generically like “Clean Code by Uncle Bob” are great because the lessons they teach would still be applicable even if you had to pick up $NEW_HIP_LANGUAGE 6 months from now. If you’ve read enough of those, then start reading about your language or framework of choice. Always read blogs of the folks who are at the cutting edge of the technologies you’re working on.
The only thing I have to say about side projects is that you should have one — At least one per year that you actually ship (the hard part) at a minimum. If it doesn’t get finished, then it doesn’t count. This is where all the knowledge you’ve acquired from reading, talking with the community, and getting feedback from your mentor really gets used in a way that you can show off. You’re not going to be able to bring that elegant bit of functional code with you from your previous job and show it on your GitHub, so having some public repos to show off is important in letting others know that you know what you’re talking about.
Lastly, but probably most importantly, is your soft skills. Working with others inside and outside of your team is really crucial to being a good engineer. You can write the cleanest, most beautiful code in the world and yet if nobody wants to work with you it doesn’t matter. You won’t have a good time in your career and the folks around you won’t either.
My suggestion on this is to always be looking for feedback. Have a manager? Ask them how you could interact with your team better. Tell them that you want that as feedback during your review. You freelance? When you’re wrapping up work for a client, ask them how your communication could have gone better or if anything bugged them about your process. These are hard conversations to have a lot of the time, but they’ll pay off in the long run.
Software development is hard. You have a constant need to ship, to be learning something new, and to keep up with the fast pace of the industry. But having a positive mindset and following the suggestions laid out above will help you grow and stay sane. Know that this growth takes time, but you’ll get there. Good luck on the journey!
Have a question or want to point out something I missed? Feel free to comment or ping me and we can discuss!