Burned out as a developer and that is good for me
Let me be quite honest in this public post. I got burned out after working for 2.5 years as a software developer at the startup. There have been ups and downs in higher frequency, meaning that I was exhausted from projects but quickly recovered after short rests. But this time is different. It's longer term issue and more serious. I need a career overhaul.
Coding is still fun, but...
As a developer, I code. Coding was simply fun. It's still fun enough for me to pick up leisure coding outside the work. But as a profession, I started to crave something more strategical than executing tasks. I also want to weigh more on the activities to make causes for long term.
Coding is one of numerous tasks in product development. Rational Unified Process 1 defines 6 engineering disciplines: Business modeling, Requirements, Analysis and Design, Implementation, Test, and Deployment. Coding lives around Implementation. No coding, and no software product. I know it's that important. But by the time it gets here, requirements are meant to be crystal clear, and the developers just have to code it efficiently. It is still a respectable work of intelligence, but it's also a matter of execution and output.
I am tired of it. I need to step up.
The start up grew bigger: Time to rethink my role
After I realized that I got burned out, I gathered my courage, and made a personal judgement, and detached myself from the task of the week to think through where I would want to go from here and how I could be most productive and effective for the company. It was a painful exercise, and I did not feel any better before going to bed. Exhausted from thinking hard, I fell a sleep. And next morning in the train to San Francisco for work, the thoughts finally started to form in a meaningful way. So, below is my tentative plan that made me feel much better about where I stand.
When we were very small, we had to do everything from ideation, implementation, and all the to customer support. Two and half years after I joined, we are many times bigger. The company is more organized, and the engineers are primarily focused on Implementation. We also have multiplied the number of talented developers who can execute coding tasks very well.
In my small team, I have a younger and better programmer than I. We also have a capable and diligent intern. Fortunately, they are not overloaded with tasks. So, I should delegate almost all the coding tasks to the younger team members, and contribute more by leading the white-board discussions, pair-coding, and reviewing their code. Those activities will provide them with wisdoms from an experienced team member. I am good at polishing their skills as developers through conversation. My role should be a Socrates on the job, and focus on making the team work more effectively than being a lone star.
I also think the company can get help from me more on hiring. Top of the funnel towards productive team is hiring, and I am experienced in giving technical interviews, and I am good at evaluating candidates. I am willing to allocate more time to interview people. I will also get out there more often to network.
Being strategical while getting stuff done
Aside from team development, I can help the company staying ahead of the game by researching on our technological options. I love reading technical articles, and evaluate the relevance to the business we are in. I also enjoy prototyping and showing proof of concepts.
While I do those fancy works, I would also like to contribute to the team by getting stuff done. I am one of the engineering team members who are with the company for the longest time. Naturally, I am knowledgeable on broader code-base and various aspects of the company business related to the engineering. I can be a handyman for various issues that pop out here and there. I am thinking to take on fixing things like bugs and build system hiccups and let younger team members focus more on the new developments.
New breakdowns of my weekly schedule
Based on the above thoughts, I am going to propose my manager on the following allocations of my weekly schedule.
- 10% Networking and interviewing engineering candidates
- 30% On-the-job coaching & mentoring
- 10% Reviewing code
Strategy and planning
- 20% Research
- 20% Project management
Get the stuff done
- 10% Handyman tasks
Those breakdowns are by no means precise and it varies week to week. But it's good to have a point of reference so I won't get diverged, pushed by near-sited fire-fighting mindset.
Finally, to design my life as a whole, I would keep in mind to take the advice from my wife. I will seek a mentor myself. I will recognize my nature of thinking too much, and push myself to try doing new things even when I initially cannot buy in the idea. I will do so both at work and at leisure.
And let's see how it goes ...
Appendix: A mental exercise: What am I good at?
While I was reflecting and writing this post, I did a mental exercise. I wrote down what I am good at inside and outside work. I don't need to be better than someone else to list an item. Just list whatever comes in my mind. I will keep adding stuff on the list.
I am good at:
- Code design
- Following up issues
- Trading forex, metal, bitcoin, and equities
- Risk management in trading
- Agile product development
- Lean management
- Statistical analysis
- Be on time
- Telling stories
- Talking to customers
- Sourdough pizza baking
- Sliver jewelry making
- Speaking English as a foreign language
- Sharing online
- Geometric modeling
- Computational geometry
- Numerical methods
- Numerical optimization
- Facilitating discussions
- Finding good coffee
- Finding good wine
- Smoking ribs
- Playing with little kids
- Talking to people in different fields
- Planning ahead
- I ran full-marathon twice just by self-training
Original post: July 10, 2014 | Last updated: July 11, 2014