I have never formally studied computer science. My first job upon graduating college involved calculating gaming odds at a casino company. And yet, in 2016, like legions of others with unconventional backgrounds, I found myself working as a software engineer at DigitalOcean, a cloud-hosting provider.
During my time at DigitalOcean, I have moved from working on Kubernetes and observability to building networking primitives, which I am still doing today. It has certainly been an interesting and challenging career journey.
- Speak to a career coach to get guidance
- Coaching sessions are free and always will be
Here are a few things I did along the way that helped me on my path:
1. Make a List! And Check It Twice
When I first joined DigitalOcean, I felt out of my element. At a cloud-hosting provider, the stack goes a bit lower than expected. Networking subnets, Linux cgroups, iptables–these were all terms my peers would throw around.
I immediately began to jot down terminology in a gigantic Evernote file. Periodically, I would ask to have a one-on-one with a teammate or fellow engineer at the company to go through my questions. This is something I continue to do whenever I onboard to a new project or team at DigitalOcean. I recently went through my first iteration of questions and chuckled. It’s amazing how much I’ve learned in a few short years!
2. Don’t Be Afraid to Ask Questions or Seek Help
Whenever I joined a new team, I was always a bit nervous about asking for help. I would ask myself: shouldn’t I just spend more time researching the question on my own? And while looking at documentation or man pages is helpful, there comes a point when it is easier to simply ask for help.
One potential solution is timeboxing how much effort you should make (i.e. 30 minutes to figure something out) before reaching out for assistance.
3. Make a Learning Plan
This is something I started doing after I moved into the networking team at DigitalOcean. The networking pillar at DigitalOcean has a fantastic practice of creating “10 Week Onboarding Plans” for all new software engineers. These break down the steps of joining a new team–an often intimidating process–into palatable weekly tasks with key deliverables. I realized that making these short- and medium-term goals was something I could incorporate into my professional development well beyond the first 10 weeks of working in a new team. For example, here are some of my latest goals:
4. Take Advantage of Educational and Conference Benefits
This is a frequently overlooked benefit of working for a tech company! If your company is willing to send you to conferences, find one or two that will expose you to topics within or adjacent to your field of interest.
For me, attending Kubecon and Promcon early in my career at DigitalOcean was pivotal. Kubecon exposed me to entirely different possibilities in the world of orchestration. I saw how different companies were leveraging Kubernetes while building custom controllers and schedulers. Promcon, on the other hand, taught me about observability and instilled important reliability engineering practices into me; I continue to leverage what I have learned while building and deploying new services.
Beyond conferences, many companies will pay for educational benefits like free programming books, training, or courses. This might even be a point of negotiation while interviewing; in fact, I frequently bring up educational benefits during the offer stage of interviewing.
5. Break Down Your Tasks and Be Transparent
This is something I struggled with early in my career. Once again imposter syndrome reared its monstrous head! I would often get a task, disappear for days, and chug away, never informing my team what was happening. I was petrified by the possibility that my teammates would consider my progress too slow. But these fears were totally unfounded. In fact, the more transparent I was–giving quick updates, however small–the more people were aware of my progress and made helpful suggestions. This also allowed me to incorporate feedback more regularly and iterate quickly.
Software engineering isn’t the easiest field, especially when making monumental shifts from one area to another. In the midst of this learning process, we can sometimes feel like Sisyphus pushing the proverbial stone up the never-ending hill. But I hope my experience reassures you that it is possible to learn and to feel more comfortable in a new role or field. With a little tenacity and some helpful tips, you too can embark upon an exciting new role!