We’ve all been there, working away trying to solve some an implementation issue or design detail and suddenly realise we’ve been browsing the web or the building, chatting with co-workers for no reason, surfing the email inbox, going for over-long breaks or otherwise avoiding the task at hand. The most likely diagnosis? You are either stuck or bored, today we are going to look at dealing with being bored.
Boredom is common, especially during tedious tasks that involve repetitive tasks. The solution to this is automation, either with tools or a scripting language. A good software engineer should be lazy and by this I don’t mean they should do no work, I mean they should not do the same task more than twice in recent succession before they start looking for a way to automate the task so they don’t have to do it again manually because its just plain boring:
- Doing lots of copy and pasting?
Chances are you are either copying the same code snippet around, if so that is screaming out to be factored into a separate function: copy and paste duplication of code is evil, especially if you don’t fully understand the snippet you are moving around. Are you sure it is safe to put that snippet there in that method? Or have you just renamed something and are now searching for and replacing each instance with the new name? Don’t do this manually! Invest in some refactoring tools. Most good editors and IDEs now come with some form of refactoring tool sets built in, find them, learn them, love them they will save you tons of time!
- Calling a n step pipeline of tools manually?
Invest some time in learning a scripting language like Python, shell script, php or Perl (my favorite is Python): n step tool pipelines are the tedious problems that scripting languages were designed to solve by automating them into a single script call. Scripting a pipeline becomes an investment especially if this pipeline is being run a lot by many users, think of all the time you are saving all those users and the removal of operator error by taking the time to automate it.
- Waiting on an external dependency?
Are you waiting on something from someone else that is blocking you? First off: do they know they are blocking you? It may not have been communicated to them, don’t assume they know: check. If they know but they can’t give you their deliverable yet, is there anything you can do to help them or to prepare for the coming integration (e.g, refactoring)? If all else fails, do you have any other task you can do while you wait? Maybe something you’ve been meaning to do but didn’t have the time? Still nothing? Find your lead or manager, there will be something else for you to do while you wait, if there isn’t I’d be worried!
- Waiting for bugs and in code base lock down?
So you’re near the end of development in your current cycle, most of the bugs have been found and fixed, your code base has been locked down and you’re not allowed to change anything except for bug fixes? You have several options here still, the most immediately useful is to see if anyone else has a bug they could give you to keep you going. Then if there is no spare bugs start testing your application yourself, be pro active, find bugs, torture your areas or responsibility to make sure they work. Bored of that now eh? If you’re near the end of a development cycle chances are there is going to be a sequel: start your own mini postmortem of the project, think about what went well, what didn’t and what you would do differently next time.
Next we will look at being stuck…