4

I'm the sole developer and my responsibilities include development, maintenance, communication about new requirements and some consulting. I should add that I report to board member who supervises the financial results, and who don't get involved in the planning.

Estimating development tasks is the biggest issue for me as I tend to commit to the nearest possible deadline, but then get sidetracked by maintenance, consulting or higher priority tasks. I miss deadlines constantly.

I feel overwhelmed. In a different environment I could afford to have longer queues, stronger lines of communication, and more accurate requirements, but the environment is too dynamic for it.

How can I go about introducing more organization into all this?

2
  • 4
    Sounds to me like you have trouble saying "No" to people. Say you're working on urgent Task #1. If someone else walks up with a request that is not as urgent, postpone and communicate why you're doing so: "hey, I got your email, let's talk about it next Tuesday". If something more urgent (Task #2) does come up, figure out how long that should take, and then communicate the delay to Task #1 stakeholders. Maintain a list of tasks (Trello is good for this), and switch them to active/inactive based on priorities. Share the Trello board with stakeholders as needed.
    – AndreiROM
    Dec 5 '19 at 16:03
  • 1
    take your estimate and multiply it by pi (imagine a circle: a straight line from one side to the other through the centre is your original estimate, a best-case scenario; and the circumference of the circle is the actual path you'll take, before ending up back where you are) or forget the circle - it's a silly meaningless metaphor that doesn't work - just multiply your estimate by pi. (source: several decades of multiplying my estimates by various numbers)
    – Aaron F
    Dec 5 '19 at 22:00
10
  1. Get a little app to log your time. Use it for some weeks. You should get a metric for how much development work you really did. From now on, estimate in hours / days and multiply by this overhead. Communicate this to your boss, i.e. "I need 20 hours pure development, so that´s 2 weeks with overhead ..."

  2. One thing that is not immediately apparent to non-developers is the cost of task-switching. That is the second thing you can use your log for. Every time you have to halt your development to deal with something else, account for 15 minutes of lost development time. Add that up and if it accounts to something meaningful, talk about that figure with your boss. If he questions this overhead, show him some resources on that.

You probably won´t get off the maintenance duty, but perhaps you can help the higher ups to understand the cost of that kind of assignment. Maybe there is a way to organize the tasks better (Maintenance on Mondays, development the rest of the week etc.) or at least to get an understanding why you struggle with timing tasks.

2
  • This answer + @joe-strazzere answer = Excellent Solution Dec 5 '19 at 14:11
  • 1
    Sharpenhologist is right, dynamic environment would not allow you to have productive 8 hours a day of development, your daily hours number should be lower for estimates
    – Strader
    Dec 5 '19 at 16:44
5

Well - if I were in more certain environment I could afford to have longer queues, stronger contracts and more accurate requirements, but the environment is too dynamic for it. Sometimes I have impressions that the chaos is the only solution. Is that really possible? Or is it possible to introduce more organization into all this?

Most folks have multiple tasks that need doing every day.

If you are feeling overwhelmed, talk with your boss. Ask for help estimating your work and setting your priorities, so that you don't constantly miss deadlines.

You can also talk with your boss about organizing your work better. Perhaps a ticketing and/or scheduling system could help.

1
  • Yes, start measuring "how long does it take from when I get a task until I deliver it", and find out how long stuff really takes to get done on average. Because that's more practical than how long it would take in a better world where you get to give it your undivided attention.
    – ObscureOwl
    Dec 5 '19 at 17:53
5

The terms for the development tasks are the biggest issue for me. I tend to commit to the nearest possible term as the deadline for my development tasks, but then the maintenance, consulting and requirements tasks intervene and sometimes I even take on some development tasks from more important clients and so, I am missing my deadlines constantly.

It sounds as if you promise people "it'll be done by X", where X is when you could get it done if nothing else unforeseen happens.

Don't do that.

You've discovered that you have on average Y amount of unforeseen things. So when asked for an estimate, tell them X+Y+Z. Not just +Y, because the nature of averages is that much of the time, you're above-average. So if you want to guarantee people "it will almost certainly be done by...", then you need to name something higher.

In practice, people are unhappier about missed deadlines, than they are happy about early deliveries. Missed deadlines cause problems. So set your estimates so that you're almost never wrong. If that means delivering early much of the time, wonderful; but don't let people push you into offering more optimistic (riskier) estimates.

1
  • 1
    This. Deadlines start with your estimates. If someone claims you could have a feature done yesterday and they told you about it today surely you would push back as it is unreasonable. The same thing should be done when they try to tell you how long your work will take. (Programmers generally take estimated time and multiply by 2-3x to come up with a good estimate)
    – IT Alex
    Dec 5 '19 at 15:58
2

I’m hearing 3 things here...

  1. You have a lot of planned things to do on your plate

  2. You get a non trivial amount of unplanned work

  3. 1 and 2 are causing you to miss deadlines

You need to put 1 and 2 on a view that you and your manager can see so that you both can see what’s on deck and take appropriate actions (e.g. change deadline, prioritize urgent things, etc).

A 3 column Trello board should be a good start. To-do, doing and Done. You and your manager add cards (tasks) to the To-Do column, ordered by descending importance. Your manager arranges the cards according to priority. You pull the top card on the to-do column and work on it, then move it to done when you’ve finished the task, then pull the top card from the To-do column...repeat. Tweak as needed.

That will at least allow you and your manager to see the same things and see patterns in your workload that can be / should be addressed ( e.g. you’ve fixed X 10 times for the same thing...maybe we should make code changes to handle that).

1
  • Also, you can then aim to have only few things in the "doing" column. Because being halfway on a lot of stuff is not as efficient as getting half of that completely done.
    – ObscureOwl
    Dec 5 '19 at 17:50
1

Just try to find an average duration that your task increases by, compared to your estimate. For example: You estimate 5 days to complete, calculate 1 or 2 buffer days for life cycle of other projects, different clients, administration,...

That's the easiest way to handle this and if you are done earlier GREAT the client will be very happy.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .