I was driving today and saw a bus driving in the snow. I’ve never driven a bus, but I imagine that snowy days are some of the most difficult. The roads are bad. People are crabbier. Accidents happen. You are still on the hook for making the schedule. I’m no bus driver, but I bet when the driving is easy, as in the summer during off peak times, the job is easier.
However, when things get hard, that’s when you earn your pay. Since software development is such a sprawling occupation, it’s hard to generalize about the most difficult moments, but I can mention some of mine:
- When I face a problem that you’ve never faced before and have no idea how to tackle it (like setting up recurring bookings over daylight savings time changes).
- When I ship a bug that costs your customers money and I have to analyze how much money was lost and a game plan to fix the bug and get them their money. Then I need to contact the customers to apologize as well as let them know what the plan is.
- When I realize I’ve chosen the wrong implementation for a component.
- When I realize I’ve made an architectural decision which made sense in the moment but will have maintenance and performance costs down the line.
- When the system crashes and I know the reason, but I haven’t figured out a way to replicate it or to fix the issue.
- When a system is slow and I am unsure where to start looking.
- When someone on my team isn’t working out and I need to let them go.
- When I watch a user navigate around your system and totally miss features that will make their lives much easier.
- When I join a new project/company/team and walk into an existing system of software and personalities about which I have very little clue. And yet I want to be effective and move things forward, but need to be patient.
- When I argue with someone about the best way forward, and then my path isn’t chosen, and I have to support the plan that was chosen.
- When I argue with someone about the best way forward, and then my path is chosen, and I have to work with people who disagreed and may not fully support the new plan.
- When I am at the end of a project and I just want the damn thing done, and yet I have to maintain the same level of attention to detail that I had at the beginning when the idea was all new fresh and exciting.
You don’t earn your pay for the easy stuff. It’s when the going gets tough that you really earn your pay.