8 votes

Software development is nonlinear system

3 comments

  1. [3]
    Jambo
    Link
    Preamble: I'm tired and crabby so this may come off as scathing. It's not, I've been programming some 8 or so years now and can agree on the concepts the author is speaking about. In practice,...

    Preamble: I'm tired and crabby so this may come off as scathing. It's not, I've been programming some 8 or so years now and can agree on the concepts the author is speaking about. In practice, it's not so easy but in an ideal world, they're not far off.

    I think a lot of dev success comes from a strong project manager or just manager in general. When it all falls on the dev, things get really hard, really fast. I would kill to have a guy go out and get requirements, have meetings for me, understand the problems that the client faces and get back to me with the bare necessities so I can focus on what I do best, which is writing good and efficient code. It's much, much harder to be good at MY things if I end up wearing everyone else's hats... now I'm not super good at any one thing, I'm just kind of good at tons of things and really shitty about getting everything done in a work day.

    I'm coming up on the end of a project currently that has taken us (me and my 1 coworker) roughly a year to complete. About 4 or so of those 12 months have been mostly coding, while maybe 2-3 were spent on interruptions and day-to-day minutiae. I spent a LOT of time gathering information, building a scope of work, building documentation on how the existing system works, the problems, the requests, requirements etc. I mean a LOT of time.

    Being here now, within 3 or so weeks of shipping, I feel my efforts spent preparing amounted to a failure. I didn't have enough detail, I missed topics that should have been discussed a long time ago so that by now I wasn't running around trying to get a plan together. I thought I was being overly thorough and I missed things that have really slowed me down, causing tons and tons of overtime, stress, depression, burnout and honestly I thought about quitting my job over this multiple times. I love my job, I've been here going on 10 years now. This is the first project that has ever kicked my ass like this. I feel defeated because when I was building out those docs, I felt like I was making everything easier. In practice, they weren't used at all, it was a total failure. Now I'm overworked, tired, stressed, and I can't think of anything other than this project. I have dreams about it. I'm not joking, I eat sleep and breathe this project right now.

    Thinking is a skill. It's easy to think too much about the wrong thing, and miss a big problem all together. It's especially hard to do well when you're part of a small team (think "Jack of all trades"). I'm not saying I don't think about problems, I spend ~50% of my day thinking. Some days I don't produce a single line of code. Some days I'm just putting together a plan. But it is very hard to get into 'the flow' when there are interruptions, fix-it tickets, special reports, outages (thanks crowdstrike...), etc. Hell, with such a small team (my 2 man team), if one of us gets sick we're basically both not getting anything done for the day because there's too much overhead and the person who is here can't concentrate at all on any meaningful amount of progress.

    Yeah, this is indicative of a poorly managed department. I'm part of the problem, my IT director is a part of the problem, and the company culture is a part of the problem. People have no problem pinging me in our chat app instead of going through the ticketing system. Things get lost, balls get dropped. All that to say, it's not always rainbow and sunshine. I would love to get out of bed at 6am, stretch, go for a morning jog, get to work, peacefully contemplate and gingerly type my problem away, but reality is a bitch and that basically never happens. In reality, I'm getting dragged into meetings all day, getting nothing done so I ended up sending a report to the CEO at 1am last night, I finally get to bed and my kid wakes me up cause she peed the bed at 3am, dog is barking at the rain at 5 and I drag my sorry ass out of bed at 8:25 to be at work at 8 (ofc I work from home).

    The part I think that mostly rubbed me the wrong way was the section on taking care of myself. Sure, all that sounds wonderful, but how? When do I have time to go out with friends? What friends? I haven't had a friend since high school. Of course that's sad, and of course I should fix that and work on myself and be better to myself. My diet sucks, my mood sucks, I'm depressed, tired, in a rut and it takes such a monumental effort just to take a shower some days.... how will I ever live up to how I should be doing things?

    There's a lot we SHOULD do, and it's easy to point out the best path to the best version of yourself, the problem is taking the step is so incredibly difficult sometimes.

    Sorry, this mostly turned into a therapy session. I probably shouldn't have posted it, but I do think reality vs "how you should be doing it" can be extremely difficult to sync so I hope I at least made that point, even if poorly.

    9 votes
    1. adutchman
      Link Parent
      It sounds to me you have just taken too much on your plate. I am a student, so I can't recommend a course of action, but I would suggest talking to someone about this and thinking about how you...

      It sounds to me you have just taken too much on your plate. I am a student, so I can't recommend a course of action, but I would suggest talking to someone about this and thinking about how you can get less stressed at work. The part about caring for yourself goes two ways: if you are burning yourself up at work, you indeed have no energy to socialise/eat well/sleep well, especially if you also have a little one. The thing I would do is talk with your manager/boss. You already mentioned you are less productive, so the company also has the incentive to make you more focus. All the best!

      6 votes
    2. creesch
      Link Parent
      I think it is good that you posted this. I can very much relate, as previously I was at an organization where a lot of the same was happening. Of course, it isn't the same, but I do see a lot of...

      I think it is good that you posted this. I can very much relate, as previously I was at an organization where a lot of the same was happening. Of course, it isn't the same, but I do see a lot of similarities.
      To be frank, it very much reads like a boiling frog type of situation. Where you are trying to plug more and more holes by putting on a variety of hats, and where the company lacks the safeguards to not have it take the toll out of people.

      Taking care of yourself in that situation can be incredibly difficult, and there is no easy solution. Well, moving companies can be an "easy" solution, but there is of course no easy way of knowing what sort of company you will end up with.

      Depending on how supportive your manager is, one of the starting points is to raise the issue there. Before that you could also take a little bit of time to map out what you believe your role to be, what tasks come with that and more importantly what tasks do not.

      Also, very often in situations like this due to structure in a company, it becomes really difficult to focus due to the ensuing chaos. In order for you to be able to think again, you need to eliminate some of the chaos. One way of doing this is by setting clear but reasonable boundaries (even though some people will try to make you believe they are not reasonable).

      A few of the things I started doing:

      • Refuse unannounced teams/slack calls. I'd hang up and just leave a message along the lines of "hi, bit busy with something at the moment, what was it you are trying to reach me about?". Doing this has several benefits. It allows you to more quickly redirect those that you can't or shouldn't (because it is not part of your tasks) help, which safes you time. It gives you more control over your time as it allows you to prepare if they need something specific.
      • Decline meetings without a clear agenda.
      • Decline meetings with a clear agenda, but where I was simply not needed. Sometimes it was not related to my responsibilities, I would let them know and if I could, I would forward the meeting to a person that was responsible. In other cases, I simply was not needed in person because the information was already written down somewhere. In that case I'd provide them with the information.
      • Decline meetings during my lunch break.
      • Decline meetings that overlapped with other meetings in my agenda, specifically stating I was not available due to another meeting.
      • Block a few moments in the week in my agenda as "focus time", set those to private meetings. To the credit of the company, they eventually did recognize that a lot of the IT engineering staff was sitting in too many meetings and then as a company policy blocked of the Wednesday and Friday afternoons for everyone.
      • When getting general help requests about things I knew for a fact were written down in documentation, I'd refer them there first. Ask them to go over the documentation first and then let me know if they had specific questions.
      • Do not work outside working hours. This one I feel like should be at the top, but I also am typing this from the knowledge that US working culture is very different from working culture here. So this might be easier said than done depending on your companies culture. But you really need to timebox your working and private life as you are working from home. Sending a mail to a CEO at 1am is you actively sabotaging yourself.
      • Specifically communicate what the impact would be of taking on additional tasks outside those I already took on. Basically bartering your availability with management and make them aware of the fact that your FTE is not enough to cover all the work.

      Basically as a lot of it comes down to setting boundaries as companies will often not do that for you. They happily take advantage of someone running 100% of the time, so they don't need the expense of another FTE added to payroll. And often times it might not be malicious, if you are basically covering for a variety of roles that are lacking nobody up on the totem pole will even notice that they are short-staffed until it is too late because you have a burn-out (by the sounds of it you might already be there).

      3 votes