
The end of the year is "time to take stock". It is a time when we look back to see what we have done over the last twelve months and then look ahead to prepare for what is coming. Meanwhile we catch our breath, waiting for the new year: a 2024 which, for the IT world (just think of AI coming of age), promises to be explosive. And, we must say, for us too.
That is why we decided to dedicate this last article of 2023 to time, and in particular to how it is managed in a workplace like ours: a software house.
Sharing our experience, we will try to answer the question...
What are the "time best practices" that a programmer or a team of programmers can adopt to work more effectively and efficiently?
Effective time management is often overlooked but crucial to the success of any company. Particularly in a constantly evolving sector like software development, where projects are often very complex and deadlines are tight.
Managing time carefully through smart planning is essential.
So here are the "6 steps" we recommend to manage your time better while programming.
Steps that we ourselves, here at ESSE I, try to follow every day (although we still have a lot of room for improvement), hoping that, after an excellent 2023, they will help us keep doing well in 2024 too.
1) Analysis first and foremost!
When we take on a new project at ESSE I, once the honour and joy of turning an idea into "digital reality" have sunk in, we always realise the burden and responsibility of keeping the promise made to the client.
We believe the key to doing so lies first of all in the strategic planning of the project, which we put into practice by:
- carrying out an in-depth analysis of the requirements;
- setting S.M.A.R.T. goals (specific, measurable, achievable, relevant and time-bound);
- scheduling realistic deadlines, that is, dates by which we commit to completing the development phases by coordinating our team.
As we state on our home page, we are an "agile" company, which means we use methodologies (such as Scrum) that make planning more flexible and adaptable to the changing needs of each project.
2) The importance of prioritising
A software house can face many daily activities, including code development, testing, bug fixing and communication with clients.
That is why, even before carrying them out, we believe that understanding their priority is essential. Identifying the most critical activities and completing them first can help ensure that projects run smoothly, minimising obstacles.
But the question is: how do you prioritise one activity over another?
It undoubtedly depends on the importance we give it. Setting goals (S.M.A.R.T. ones, as mentioned above) is the first step and forces you to "visualise" the results. If you do this too, you will then be able to see more clearly what to add to your to-do list, what obstacles you will meet along the way and how to allocate the necessary time.
A famous technique that helps with this is the Eisenhower matrix, a decision-making tool that classifies all activities into four areas.
You can put it into practice straight away by simply drawing a large cross on a sheet of paper to divide it into four areas, in which you list activities as follows:
- important and urgent activities: essential tasks deserving your full attention;
- important but not urgent activities: important tasks to which you allocate time, making sure they don't become important and urgent (i.e. don't have to move to area 1);
- urgent but not important activities: tasks that hinder you from reaching your goals. In practice, if they take too much time, delegate them or learn to say no (and so eliminate them) without too many qualms;
- neither important nor urgent activities: tasks you can skip, deleting them, or move to area 2 later.
Other methods and techniques for organising time are the Pareto principle (or 80/20 rule) and the Pomodoro technique.
The Pomodoro technique
The latter is particularly interesting because it also fights stress (which we'll come to at the end). It suggests dividing the working day into half-hour sessions following these steps in a cycle:
- define a task (for example coding a nice algorithmic function);
- set a 25-minute timer using something that "rings"; your phone's clock will do;
- start the task: get going on the keyboard, trying to stay within the time available;
- when the timer goes off, take a 5-minute break;
- start again with a different coding activity, and every 4 cycles take a break of at least 15 minutes.
3) Use the right tools
Using tools dedicated to time and project management is just as crucial. We are certainly not talking about pen and paper, but about digital tools designed for this purpose, such as Trello and Asana (the list is huge: just search for "time management tools" to find dozens).
At ESSE I we use Jira, which lets us keep track of our work and its planning. But in many cases free tools such as the hugely popular Google Calendar and Google Tasks are enough. With these you can already monitor activities, assign tasks to team members, check the status of projects and manage deadlines.
In short, for us what matters is starting to use one if you are not already doing so. Once you get into the habit (never underestimate the power of habits) of using this kind of tool, switching to a more advanced one better suited to your needs will come naturally.
4) Make use of "dedicated time blocks"
An effective approach to time management is to use "dedicated time blocks" for specific activities.
Instead of cramming several activities into the same period, why not carry out one specific activity in a given time slot, so as to optimise work and avoid the distractions of "switching" from one activity to another?
For example, here at ESSE I we often reserve certain times of the day for code development, others for team meetings and others for problem solving, avoiding overlapping these activities in the same hours. All this helps maintain an organised working routine without too many distractions.
5) Learn to delegate
Here's a story: until some time ago we handled the company's communication ourselves. Besides being an activity very different from coding, which our in-house staff were, for obvious reasons, not suited to carry out effectively, it took up a lot of precious time, distracting us from our daily work of technical meetings, consulting sessions and, above all, "pure coding".
So we decided to delegate this task to an external collaborator who, by implementing clear strategies and suitable tools, not only improved external communication but also contributed to internal communication, without ever interrupting our workflow.
Since it is an investment, not all software houses can delegate, as we did, this essential activity, which can build or cement reputation: the basis of trust between a company and its stakeholders, which translates into loyalty and new jobs.
If you have to do everything yourself, the only way is to set specific times for creating and publishing posts. Although this probably doesn't solve the problem that marketing and communication work in a different field from coding. In other words, a programmer is usually not skilled at communicating effectively. But exceptions, coders with a talent for communication, do exist, even if rare. Happy hunting!
But remember: delegating is not only about communication.
The point is knowing how to delegate by identifying each team member's unique skills and assigning tasks in line with their abilities.
The point is overcoming the typical nerd tendency to take on many, too many things.
Our approach is therefore now very much oriented towards delegation; it is no coincidence that we have a page on our website currently showing three "open positions" that we hope to fill soon.
And we believe that knowing how to delegate, which is not at all easy, is useful because it increases the overall efficiency of the team, and therefore the value of the company and the brand.
So even if you are a freelance programmer, don't rule out delegating part of your work to another coder: you may think you'll earn less, but in reality you will increase the real and perceived value of your software and, consequently, of your business, putting yourself in a position to raise your prices and so grow financially too.
6) Manage stress
Finally, we want to remember that time management is not only about productivity, "churning out work and money", but also about an aspect often overlooked by business owners: the well-being of workers, which can, among other things, affect productivity itself.
So avoid burnout: avoid overloading yourself and your team with too much work.
This is crucial for maintaining a high level of performance in the long term, as well as morale. At ESSE I, for example, we often promote a healthy working environment with our in-house team and encourage regular breaks.
Moreover, as you already know if you follow us, we have chosen to convey the value of harmony not only externally but also internally, to help keep the team even more motivated, efficient and at the same time relaxed.
This was the last step, which might suggest it is less important than the others, but it is just as important because we believe there is no "harmonious software" without a harmonious team. And for us this also means working to keep stress levels in the company under control.
In conclusion (of the article and... the year!)
We are confident that our advice can help you make better use of the time you devote to developing your software projects.
But, as we said at the beginning, it is also time to rest and celebrate the end of the year and the arrival of the new one.
So best wishes to you and your time!
Including the time that, we hope, you will continue to devote to our blog (perhaps by subscribing to our newsletter) and to our social pages (LinkedIn here and Facebook here, and we are also on Instagram) in 2024 too.
(photos: Midjourney)



