I've reached a milestone: six months into my first developer job 🎉 Time for some reflection! What have I learned? If I were to give advice to myself six months ago, what wisdom would I impart? Here are a few highlights.
Find balance
Learning the ropes as a junior developer can be exhausting, especially if you have a competitive "gotta get tons done" personality like I do. Impressing your peers and exceeding your manager's expectations feels so good that it's hard to slow down.
But the cost is real, as I've been painfully reminded. A couple times already I've gotten into a cycle of overwork ⇨ burnout ⇨ lethargic exhaustion ⇨ panic ⇨ repeat. More recently, here are some ways I've found to stay out of that unpleasant cycle:
- Give pessimistic time estimates. When your manager asks how much time you'll need to finish a project, resist the fear of giving an embarrassingly long estimate, because what you think is a long time probably isn't. Expect unexpected delays. After I was burned by a short deadline of my own making, a more senior colleague suggested that I add in a 1.5–2x "contingency factor" to my estimates.
- Put rest into your work rhythm. Despite my best attempts, I've found it impossible to work at a completely steady pace. (Even break timers don't work for me, because I tend to cancel the pauses or close the app entirely if I'm "in the zone" and don't want to be interrupted.) I've accepted that there will always be crunch times when I need to do a lot of focused work, and there will always be slower times when not as much needs to be done right now. Rather than stressing about how to flatten that up-and-down, I've found it more helpful to take advantage of the slow times, using them as a chance to rest. Don't immediately pile on more work when you've just stretched yourself to finish something. Attune yourself to the ebb and flow, and look for chances to step away from the computer, quiet your inner restlessness, and rest.
-
Maintain healthy habits. On the other hand, it's good to keep up a healthy routine even in the busiest times. Find a few things that help you relax and stay happy, and don't beat yourself up if you don't get around to doing all of them every day. For me these things include:
- Reading. I love reading because a good book gives me energy and relaxation at the same time, even while expanding my horizons. Try to find a hobby that does that for you.
- Latin. A more social hobby for me is spoken Latin. (Yes, that's a thing.) Whatever it is for you, regularly doing something fun in a group can provide a refreshing change of pace from your usual day-to-day.
- Mindfulness. The Balance app is great, and free for the first year. I rarely enjoy mindfulness, but it helps me avoid bad thought patterns and appreciate the little things in life.
- Building up relationships. For me this means spending more quality time with my wife—not just watching more Netflix, but trying new things together (this summer it was camping), and making an effort to listen more and be a better companion. I've also been reconnecting with old friends. It takes effort to do all this, but there's no replacement for the love of family and friends.
- Going on walks. The exercise makes me feel good, and it's another chance to talk with my wife, or if I'm alone, to listen to audiobooks and podcasts 🤓 But it's also nice to take off the headphones once in a while and just look at the trees.
- Lying in bed daydreaming. I'm not kidding! Even a short 10-minute burst can be very refreshing. To get there you might have to retrain your imagination, but it's worth the effort.
Keep up your learning journey
For two years before I got this job, I learned programming on the side while working a "pay the bills" type of job. It was a huge relief to put that stage behind me, but a few months into my new job I found myself missing the freedom and adventure that I felt when I was learning programming.
Thankfully it was an easy fix, because I was the one holding myself back. Juniors at my company are encouraged to take time to deepen their skills, apart from product work; I just wasn't taking the time. Part of the problem was that I simply needed to slow down (see above). As soon as I did that, it became easier to spend an hour here and there on learning and deepening my skills.
I've found a few other practices useful in maintaining a learning habit:
- Set goals. Identify one or two areas where you want to improve, and focus on those. For me it helps that I already have lots to choose from in my "Learning Ruby" list, which I've been building up for the past two years.
- Keep an open mind. Even as a junior it's easy to think that you know better than most other developers, or to turn your nose up at X or Y bandwagon that your company's developers have jumped onto. But if you resist that close-mindedness and try to see the good side of even the technologies and techniques that you don't like, then you'll learn a lot more. That happened with me a few months ago, when I spent time learning more RSpec, and it finally clicked in my mind and I started to appreciate its strong points.
- Find mentors. If you're not getting much one-on-one guidance at work, I suggest (a) asking persistently until you at least have someone who can check in with your learning on a regular basis, and (b) looking for mentors outside of your company, such as at First Ruby Friend. The Rails subreddit is another good place to find a mentor, and I've found the StimulusReflex Discord server to be a welcoming place for my questions—and I haven't even learned StimulusReflex yet, but they have very active channels for Ruby, Rails, and lots more.
Don't be a silo: connect more, communicate better
Working remotely (as much as I love it) can make it harder to connect with others unless you're very intentional. I mean this both in the sense of getting to know my colleagues, and also in the sense of hashing out important information.
An example of the latter is communicating with all stakeholders and making sure we're all on the same page. I've found myself in situations where different people want different things from a new feature that I'm working on. The first time this happened, it was fine because I just added extra features that weren't in the original spec, and everyone loved it. A few weeks later, as I worked on a different new feature, I again made adjustments mid-course based on feedback from a stakeholder, but this time it didn't turn out so well. The adjustments I made departed from the original spec in ways that I realized were unacceptable only after a barrage of questions and complaints from other stakeholders. I then had to rush to redo some of my work on my last two days before going on vacation. Moral of the story: don't be the monkey in the middle! 🙈 Get everyone together in the same room (Zoom call) if necessary.
As for getting to know my colleagues, I did great at the beginning when I scheduled an introductory Zoom call with each and every person in the product and engineering departments. However, it wasn't long before I lost touch with even the handful of juniors that started at the same time that I did, and only now am I reconnecting with them. My hope is that we can get back to telling each other about our struggles and successes, as well as sharing new things that we're learning.
Conclusion
I have a few other regrets about the past six months, but they all go back to these three lessons I've learned: find balance, keep learning, and don't be a silo.
More fundamentally, I'm trying to shift my focus away from regrets and mistakes, and instead appreciate all that I've learned. These lessons are already helping me be happier and more fulfilled, and that makes me even more excited for all that I'll learn in the next six months.