Why do I see so many computer scientists who look drained, tired, and overstressed? by @lancewalton
Answer by Lance Walton:
I think you mean ‘programmers’ rather than ‘computer scientists’. I'm going to answer on that basis.
One of the problems with programming as a job is that the following happens over & over again:
- Some people talk about something they’d like to get done that's going to involve some programming. They don't know anything about programming.
- They ask some other people to do some analysis on the problem.
- On the basis of that analysis, somebody is asked to come up with a best guess (the stupid word ‘guesstimate’ is often used) as to how long, how many people, how much, etc.
- They then start recruiting a development team while continuing to analyse, design, etc. All in Word documents & Visio.
- The development team looks at those documents & the older ones shake their heads in despair, while the younger ones think of the glory
- The required delivery date is stated
- The more belligerent developers will challenge it: what can be de-scoped, why is that date important, what can be moved out of the way to give even a glimmer of hope of hitting that date? The answer: nothing. It's all required by that date for reasons.
- Then the work starts. As the work starts, the problems are found in the analysis. Most likely the analysis covers the 1/10th of the actual work to be done because nobody has thought about the network failures, the problems associated with multiple users interacting, the fact that there isn't actually a source of reference data that somebody had assumed existed, the fact that you're talking about a global app but some of the analysis didn't think about different holiday calendars around the world (and do we have those holiday calendars? Of course not), & millions of others details, small & large that cannot be ignored any longer because the developer who is writing that line of code cannot just leave a blank in that branch no matter how infrequently the analyst thinks that that problem will occur. Some people are going to comment that not enough time was spent on analysis & design before the implementation started. It's not just time that's missing, it's the right people. & detailed up front analysis & design of systems of sufficient complexity essentially turns into an implementation activity anyway. When this is done in Word, it's implementation without appropriate formal structures.
- Now we’re running late because development is slow. Let’s ask the devs to work longer hours. A couple of extra hours a day for a few weeks to get the release our the door.
- Those couple of hours turn into 6 extra hours, not including the fact that each developer on the team is now unable to sleep without dreaming about whatever problem they are currently trying to deal with.
- Those few weeks turns into months.
- Finally something is pushed out the door that you have no pride in. Maybe you leave to go to somewhere new where things will be better. Or the same.
I did this for a few years before deciding that the problem was not mine. Now, I dig in hard when people bring me ill thought out documents. I help them to analyse. I help them to find ways to reduce scope in the interests of getting a small, functional system released into the world that can be evolved. I do work that I can be proud of.
But, I still pay a price for this. People want me to shut up & code to what they've written. They don't like me picking it apart. I have arguments. It can get stressful. But that stress lasts a short time (usually) and the conflict finds resolution (usually). Not tackling it this way, for me, feels like I've accepted the mantle & am failing. The only mantle I accept these days is one that’ll involve collaboration right until the end. People don't get to set dates, write documents & then blame the devs for failing to deliver & the testers for letting too many defects through.
Anyway, moan moan moan. I hope that answers your question to some extent.