13

I'm relatively new to the software industry. I've worked about 1 year at the government as a programmer and about 3 months at a small eCommerce company. Both companies are fairly small and the development team consists of a (non-technical) manager, senior dev, and junior dev (me).

In both of these positions, I always find myself out of work to do.

  • Most of the time I'm waiting for clarification/information/files and find myself with nothing to do until then.
  • I always fix small bug fixes on time and send emails upon finishing, asking what's next.
  • I'm waiting on another developer's dependency so that I can work on my part of the project.
  • I've finished a project and am waiting for my next task.

Sometimes I'll be out of work for a couple hours, sometimes I'll be out of work for days. During this time, I'll run tests, clean up code, read documentation, and add small quality-of-life features to applications.

My question is: Is this normal for developers? Should I just implement a feature without asking for clarification and then present my results? Should I present a project or a feature that I could work on? What should I do during my downtime?

I find it difficult to get through the day when there's nothing on my plate.

  • 10
    Is this normal for developers? Depends on the company... Should I just implement a feature without asking No. – deviantfan Aug 30 '16 at 22:10
  • 1
    Welcome to SW dev. This is normal. Don't change stuff without running it by the senior guy, but do make suggestions to him, especially for tooling improvements. – Bohemian Aug 30 '16 at 22:23
  • @Bohemian Would you say that a junior dev should turn to the senior dev if the manager/team leader is out of work to give out? i.e. help out with their project or get some small tasks. My concern is that those given tasks may clash with the manager's intended tasks. – chakeda Aug 30 '16 at 22:28
  • 2
    If the manager is not around, it seem natural for the senior guy to make minor decisions in his absence. This only applies if you have nothing to do. If the manager has left tasks for you, of course do those. It's not rocket science. – Bohemian Aug 30 '16 at 22:30
  • 3
    There's always more to do. Online training, familiarizing yourself with your company's business processes, and bug backlogs. IMO nothing beats getting paid to do training classes and improving your skills on someone else's dime. – Ethan The Brave Sep 1 '16 at 19:53
23

In short: yes, especially for junior team members of small teams (and especially small development teams embedded in large companies).

You need to realize that as a junior developer with little familiarity with the code-base; you represent a tiny portion of the development team's capacity. It's easy for you to slip between the cracks because your senior co-worker is (hopefully) outproducing you by a large amount. As you grow in experience (both total and with the company's systems) this gap should fade away.

I recommend using this time to make yourself more familiar with the environment. Minor bug fixes are a great way to build familiarity with a code base. As is documentation, writing tests, and other assorted maintenance.

  • 7
    Further to the last paragraph, ask for a background task such as some documentation or test writing. Whenever you finish or are blocked on your higher priority work, continue with the background task. – Patricia Shanahan Aug 30 '16 at 22:26
  • 2
    Yes or come up with your own background task if the boss can't. In my first job as a multimedia developer (mostly Macromedia's sadly extinct language Lingo) my background task was to learn Java and my very next job was as a (much busier!) Java developer. – Dave Kanter Aug 30 '16 at 22:39
6

Having been in a similar situation - here's what I suggest.

The most important thing - in my opinion - is that you don't sit around twiddling your thumbs. This can lead to depression on your part, and developing bad workplace habits.

Instead - you need to find some way of maintaining engagement.

What I suggest is looking for projects you can work on that are related to your work.

  • Perhaps your company is using an outdated technology - you could start investigating and learning a technology to replace it.

  • Are some aspects of your job repetitive? Create a tool to automate it.

  • Is there some feature that you think your business will benefit from? By all means create it - but don't commit it to the code base. See if it's valued by saying 'Oh btw, here's this tool I created.'

  • What do you want to be doing with your career? Learn that technology.

  • You can always jump on Stack Exchange and answer questions / code review questions.

Now - you might feel bad for doing work that you haven't been specifically told to do. To alleviate this tension, I would suggest just talking directly to your manager - 'Hey boss - I'm currently waiting around on work - I was thinking I would do XYZ while I wait - is that cool with you?'. So

long as you are getting the work done that you need to do, and your manager is reasonable - this should be perfectly fine.

  • +1 especially for the automating part - and try to extend it to other's need. Especially your boss. If your boss has a boring, repetitive task to do, and you can automate, it's good for everyone. and especially for your career. Don't neglect other people - especially those who seem to do a lot of Excel-like tasks - potential for productivity increase here is usually huge. And they will love you for making their lives easier. – gazzz0x2z Aug 31 '16 at 11:16
2

Should I just implement a feature without asking for clarification and then present my results?

That's the only thing I object to on your questions. Don't do anything you are not authorized to. What if a bug in your feature messes up something? Add your features on your local environment at best.

As your original question, value this spare time by learning a new technology which is also useful for your current project. Don't ever look bored or completely free, because this will annoy your coworkers and managers, even though they are the ones who are keeping you free or not.

  • I think "Add your features on your local environment" contradicts the rest of your objection. What's wrong with developing a possible feature in your own branch and presenting it as a proposal for what could be done? It isn't messing up anything. Could be a good use of spare time that you don't have good direction on how to use. "Don't do anything you are not authorized to" is a bad approach if you don't have enough work assigned to you. – user45590 Aug 31 '16 at 13:02
-1

As you already understood, refactoring, and hunting bugs are activities which software developers are always expected to do when they are not occupied with other tasks.

Try to familiarise yourself with the company's codebase. Reading code is always instructive, but it's even more valuable for young programmers. If you encounter things you don't understand: congrats, you just found something new to learn about. If something bothers you, try to find out the reason behind it (version control and the bug tracker can help), or ask the senior developer in one of their less occupied moments.

  • 1
    Not sure about this downvote. What is wrong with this answer? – kukis Jun 21 '18 at 20:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.