Ten years in software
I have been working professionally as a Software Engineer for the past 10 years. In that time, I've learned a huge amount, gained a bit of confidence, and largely ignored the social nature of our field. I haven't given back to the community and now feel like it's a good time to change that. I've been very lucky in my career thus far and want to share the broad lessons that I've learned along the way.
This is part three of a series of pieces written reflecting on my career:
- Part one: How to solve problems
- Part two: Study other people's code
- Part three: Burnout is self-inflicted
- Part four: Fear is the mind-killer
- Part five: The value of a test
Burnout is self-inflicted
Sendio was my first job out of college. While I was mostly happy and learned a ton while there, it wasn't perfect. Coming straight from college, I was bright-eyed, bushy-tailed, and eager to jump into the workforce. Unfortunately I didn't know how to maintain a work-life balance.
I have an "eager to please" personality. When I'm asked to do something, I have a hard time saying "no." Maybe I put a bit too much of myself into the job, maybe I didn't take enough time to reflect or talk openly with my boss, but when the housing crisis hit and the economy started tanking, something changed. The company I was so happy to be at seemed different. I felt trapped and responsible—somehow I thought that if I put more time in, I might be able to save what seemed to be a failing business. To make matters worse, I didn't want to discuss these feelings with my boss. To be honest, I was just immature. I sulked and dreaded work until I just couldn't to it anymore. I burnt out and wanted to change my career.
So I quit.
Nothing was worse than something
I left under the guise of returning to school to get a master's degree, but in reality I had no idea what I was doing. I half-heartedly went back to my college library to attempt to read books and articles about computational neuroscience, but mostly ended up doing nothing at all. My friends were envious of my free time, but after a few weeks the novelty wore off and I felt completely lost. I would try to learn something new, but would end up distracted. I couldn't focus on improving myself because I didn't have a real aim. By quitting a job which used to help define my identity, I ended up losing even more.
I realized, while taking this time off to "recover", the thing that I missed the most was having a clear goal and the time & space to explore and achieve that goal. When I was taking time off and doing nothing, I didn't have a goal and I didn't have a routine. I missed being useful. I was trying to convince myself that I was focusing on learning instead of actually learning to overcome a challenge at hand. My days ended up being wasted on idle distraction and incomplete hobby projects.
Learning to enjoy work again
Thankfully my girlfriend and I decided to make some life changes and we moved to the San Francisco Bay Area. The change was a good one, I had lived in the same 50-mile radius my whole life. This departure from familiar surroundings was a great way for me to break out of this rut.
When I first learned how to program, my motivation was for a love of video games; I wanted to be able to make my own. I stumbled upon a game making program called Sphere and befriended the small community of people who wrote and used the program. I was just a teenager, but the anonymous nature of the Internet let me chat with these strangers, who took their time to answer my naive questions. To this day I owe this group for the foundation of my technical skills.
Now living in a new area, I needed a job. I reached out to these friends I had made on the Internet, and ended up getting a job at IMVU, where the author of Sphere worked.
I had a stroke of luck with my new work environment. IMVU had an incredibly talented engineering organization. They were at the forefront of continuous deployment and were the "original" lean startup, where product development was rapid, hypothesis were made and experiments were performed to verify them, and engineers were constantly working to (and empowered to) improve the status quo.
This time around, I strove to keep a healthy balance of life and work. If I couldn't do something at work, I would speak up and try to reset expectations of what I could do given time and scope. If I needed time off, I would take time off, and if I needed a change in the kind of work, I would ask to switch teams or current focus.
Learning to set expectations to myself and to others were what kept burnout at bay.
Looking back to who I was at the start of my career, I'd want to give myself this advice:
- Learning is part of the job. Read technical books, do research, and spend time learning during work hours. Don't take away from your nights and weekends to "keep up."
- Set the expectations that others use to evaluate you. Educate your peers and stakeholders on project pitfalls and what concerns you have. Work with them to set (and reset) the scope and date of what's being delivered.
- Stress should not be a constant. It's natural to feel stress for a short period of time, but if you're continually feeling stress you'll burn yourself out. Take breaks and take time off whenever you need it.
- Look back on your progress. You'll overestimate what you can do in a day, but underestimate what you can do in a year. Document what you've learned and your accomplishments. Look back on them to see how far you've come.
- Share your concerns about your job with your boss. If they care about you, they'll want to help. On the flip side, if they don't want to help, they don't care about you and you should look for a different one.