It’s hard to believe that I’m almost through my twenties. It doesn’t seem like too long ago when I was balancing a school workload with my fun, new internship at Atomic. My crowning achievement as an intern was adding some code to our homegrown CI monitor to pull builds from TeamCity CI.
Since I’m entering a new decade in my life, I thought it would be a good time to reflect on my eight years at Atomic. I’ve been trying to put into words how I’ve been able to grow as a professional and a person while I’ve been here.
Here are the five principles that I think encompass all of the unique and fun experiences I’ve had as an Atom (so far).
1. Give (and Accept) Opportunities to Grow
One thing I really struggled with early on at Atomic was adding my perspective during meetings. Sometimes I knew I had valuable information, but I stayed silent because I was afraid that I would struggle to articulate my thoughts or that they would be immediately struck down.
The biggest thing that helped me get over this fear was for senior Atoms to bluntly ask for my opinion in the middle of a meeting. It forced me out of my comfort zone, and it forced me to put those thoughts into words. Sure, sometimes I stumbled through an explanation or ended a thought in an awkward way that didn’t advance the conversation, but I was better for trying at all. All I needed was a nudge toward the opportunity. Once I took it, I found it fulfilling to contribute and collaborate with teammates and clients.
The best way for me to learn is to try (and sometimes fail) — to be given a challenge and the freedom to work through it on my own. My Atomic coworkers have been there to check in or bounce ideas off of, but they let me own the core. It’s the best way to make me feel ownership over the solution. It taught me to deeply understand the whys beneath the hows and to think about the tradeoffs I was making.
2. Find Ways to Carve Out a Role You Love
I learned that I shouldn’t let my job title dictate exactly what I’m responsible for on a team. There are always gaps or gray areas that need to be filled. After I felt like I had a good grasp on the tech stack for a particular project, I would look for other responsibilities that made me excited. Maybe I would try to be the code review guru (writing detailed feedback and noting tradeoffs). Or maybe I would try to identify ergonomic improvements we could make for the team.
During one project, I was considering becoming a Delivery Lead. It was a big rewrite/rethink project, and our Delivery Lead was up to their neck in product consulting — and rightly so. They were training our primary customer how to be an effective product owner.
I decided to try to backfill some of their responsibilities as a DL. I facilitated the sprint ceremonies. I spent time breaking down work and building up a backlog. It was a great way to test drive the Delivery Lead role, and the Delivery Lead was thankful for the support.
3. Care for Your Team
Supporting your teammates builds trust, morale, and (most importantly) friendship. I remember one of my first mobile projects when I trying to wrap my head around Reactive Programming, ReactiveCocoa in particular (yeah, that long ago!). One of my more senior teammates could sense my frustration and lack of progress. They stopped what they were doing and spent the better part of an hour walking me through code, library docs, whiteboard drawings, and so on, until I had a much better understanding of everything. That simple act built the trust I needed to go back to that person when I was in a similar situation. It also helped me recognize that I could be that helping hand for someone else.
Caring for your team also extends outside of project work. We spend eight hours a day together, but everyone has their own trials and successes outside of work. Sometimes, all it takes is a simple, “How’s it going?” to spark a thirty-minute conversation about the great weekend they had cycling and hanging out with friends. Other times, it identifies when someone might have less time and energy to dedicate to a project.
The best way to build relationships and friendships is to just stay connected and care. The project you’re working on might be a grind, or maybe the client is difficult, but enjoying one another and caring about one another is what gets you through it together.
4. Reflect on How Far You’ve Come
It’s exactly what I’m doing here!
This was especially important for me in my first five years as a developer. There is so much to learn all the time — different programming languages, new programming patterns, new project management philosophies, and more! — that it sometimes made the whole thing feel insurmountable.
When I was struggling through these times, one of the best ways to keep marching forward was to think about the things I had learned. For example, when I was working on my second project and had to learn a new tech stack, I relished in the fact that I no longer had to use a Vim cheat sheet to be effective in the editor. Or more recently, when I was working through how we could make a big team more efficient, I reflected on the fact that I was no longer nervous to present whatever I came up with because I had grown as a consultant.
5. Stay Hungry
This one is simple, and it has guided me through much more than my professional life. There’s more to learn and experience than I’ll ever have the time for, but I don’t let that stop me from trying to grow.
When the days start feeling longer, and I find myself watching the clock, I know it’s time to challenge myself in another way.
I’m sure I’ll look back on this blog post in ten years and think about what new lessons I’ve learned or how I’ve continued to build off of these to become a better consultant and person. Hopefully, you’ll find something that you can apply going forward too.