I’m a software developer by profession and I have realized that there are quite a few productivity practices that can be applied to any office setting—be it a shared workspace or a home office—so I decided to write this post and introduce at least some of the practices to you.
Don’t worry: I try to keep things simple so that you can grasp these concepts easily even if you are not a developer yourself. Just go through the post and start implementing these lessons one by one, and eventually you’ll realize that your office productivity has improved and you feel good about yourself, and your progress as well.
I know what you are thinking: “You’re talking about multitasking, right?” Nope, I’m not. You see, developers can create code that is asynchronous and that’s a great way to avoid application’s performance bottlenecks. If this asynchronous processing wasn’t possible, the end users would in some cases just have to wait for the application to respond before they could continue with their tasks.
For instance, if you visit a web page, the asynchronous way provides the ability to read the text on the page, while the rest of the elements are loading on the background. On the other hand, if this wasn’t possible, each user would have to wait until all the elements of the page have been loaded first, and that would be very frustrating indeed!
Take this same concept into a project that you are working on.
Let’s say you’re building a website for your business. Instead of doing everything by yourself, you would delegate the responsibilities to various professionals, like to a graphic designer, a copywriter or a web developer. This would speed up the process and you would be doing your tasks while other people would be working on theirs.
Essentially, this is all about outsourcing where every member of the project has their role which ensures that the project gets done faster than if it was done the synchronous way. In other words, the project members can do their part without having to wait for each other before they can start working.
Advanced developers are capable of building solutions which are reusable: each piece of code they develop can be used in future projects, and that improves their productivity. The reusable code also makes maintenance of the application easier. This saves their time and effort—for instance, in the case of defect-fixing.
The idea of reusability can be applied in two common situations in your home office:
1. You (or an outsourced designer) could create templates that you use in your presentations or in other company materials. Once the template is created, it can be used as many times as needed in the future, instead of creating it from scratch again and again.
2. You could document your business processes, and that documentation can be used by you or your virtual assistant many times in the future.
Obviously the biggest effort is in the creation of the documents in the first place. However, once the initial work is done, the only thing that’s needed is to keep the documents up to date.
In order to free themselves from doing recurring work, developers try to find ways to automate those tasks. When the automation is in place, things roll along smoothly and the chance for human error is radically decreased.
Try to take advantage of automation in your office wherever it’s possible. For instance, I don’t like paying bills, so I try to automate the process as much as possible. If needed, I can still be part of the routine by approving the bills before they get paid.
Another great example of automation is running backups from your computer: as the process of running the backups manually is error-prone, you should buy a dedicated service for this activity instead. You could also ask if your Internet Service Provider is offering this kind of service for your computer(s).
Batch processing means doing many tasks at once, which is obviously faster than doing one thing at a time, like when databases do mass-updates on a lot of information at once.
One of the natural places to do batch processing in your home office is with your e-mail. Choose daily time windows to process all your mail at once. The number of windows could be 3 times a day, for example, and within those time blocks (15-30 minutes) you process as many of your messages as possible.
Other ways to use batching could be by recording multiple video clips for your web site or approving/paying multiple bills at once.
Workflows are integral parts of any developer’s life. For instance, there may be a certain way to handle the bug fixes in an application.
As soon as the defect is found, it’s put to a developer’s task queue with the assigned status. When a developer starts working on the defect, he/she changes the status to in progress. Finally, when the developer has finished fixing the defect, the work labeled with fixed state. After this, the defect goes for testers, who then approve or reject the bug fix and set the status as closed or back to assigned.
Having a defined workflow ensures that things move on as smoothly as possible and that a task gets done according to specified rules and standards.
You should find ways to standardize your repetitive work processes so that no time is lost and that the chance for human error is as small as possible.
You can do this by documenting your work processes and clearly defining how a task gets done from start to finish, and which kinds of roles different people have in this process. For instance, I have defined my blogging workflow, and although it has changed a bit since I initially documented it, it’s still valid. Once you have everything written down, it’s also much easier to see the parts which could be automated, outsourced or even removed.
Developers write code which reacts to events. For instance, if a user tries to submit a form on a web page, it initiates a validation process, which in turn prompts an error message if required fields are not filled.
Although events are part of natural workflow in an application, you should take a different approach when it come to your own work productivity. Instead of checking your e-mail as soon as new one arrives in your inbox, you could define policies how you react to emails, and even how you react to certain types of emails.
You could also define how you want to handle other distractions when you are working: instead of giving others access to your by phone or by instant messaging, mute the phone while working or turn off the instant messaging client. You could also isolate yourself by changing the location when you work—if you work from home, consider going to a coffee shop, library or any other locale where family members cannot interrupt you.
Computer programs are based on logic and “if-then-else” is the most common piece of logic that developers can use. In essence, if a certain condition is met (if), something is done (then). Otherwise (else), something else is done.
Use this same logic with your daily task list and create a plan B for your tasks.
Let’s say that you have a task of updating some blog posts to your website, but before you can update the content, it has to be proofread. If the proofreader has returned the material, you can update the content right away—otherwise you have to find something else to do while you are waiting documents back from him/her.
In general, having a plan B is always beneficial since you can keep yourself productive if you are unable to proceed with your main task.
Software developers can teach us a great deal about productivity. Just take these lessons and implement them in your own office environment, and you’ll notice that your productivity will increase. Hopefully this will eventually show on your bottom line as well.
Love this article? Share it with your friends on Facebook