Building an effective software environment
Most people will agree that any working environment needs to be conducive to staff comfort, happiness and output. To achieve this, there should be the right combination of physical space, tools, processes and people.
Without the starting point of a comfortable physical space and the right tools, the environment is likely to fail, irrespective of developers’ technical ability. To ensure an effective physical space, consider the following:
- A secure 24-hour office with flexi-time managed properly. Employees should be able to work safely when they feel most productive.
- Freedom to come into the office on weekends, whether for ‘real’ work or for side projects and social get-togethers.
The physical space needs to compliment the tools and equipment available. Staff need:
- The right equipment for the job – for example, easy access to whiteboards enables the ability to use models or meta-models (models of models) to communicate within a team or with clients.
- Proximity to other teams, preferably doing technical work. It is great to feel part of a busy and innovative company.
Once the tangible aspects of the work environment are improved, elements such as the processes and people can be developed. To facilitate effective processes, a company should:
- Minimise micro-management and maximise visibility (to both clients and management) and accountability.
- Encourage collaboration with all stakeholders, including the more distant ones.
- Emphasise reward, particularly team reward through exposure, public appreciation and celebrations, and personal rewards by way of pride in achievements and difference made.
The most important element for an effective software environment is the people within it. For software engineers, working alongside a brilliant team is far more rewarding than having a lazy-boy lounger as a desk chair. To ensure job satisfaction, software companies should empower their staff by:
- Encouraging on-the-job learning. Even in cases where a team and project is small, there are creative ways to build these environments.
- ‘Mass’ of team is critical – a larger team carries more momentum in critical softer aspects such as culture, pride and identity. This is a critical learning at Entelect after ten years of building software solutions in team environments.
- Developers like to be grouped with like-minded professionals so create an environment that stimulates
- Curiosity – engineers are curious and happier when we learn something daily. We need to be in an environment where we can feel a sense of wonder.
- Learning – we learn from those with whom we work and from informal conversations, conferences, training sessions, code reviews and so on.
- Support – engineers who know they will have to show their output (and their workings) to another engineer, approach work very differently from those who do not and who do not have the same accountability on the line.
Software engineers often value growth above all else. That feeling of learning something new, meeting someone new, or experiencing something different on a regular basis is key to our happiness. We also need to feel challenged – a little pressure is a great reason to get up in the morning and achieve. Finally, engineers thrive on exposure. We all share a curiosity for the unknown, and a desire to learn and solve. Exposure keeps people satisfied and productive, thereby creating an effective working environment.