Maximizing productivity in software development
Since good developers’ time is precious, IT outsourcing companies must implement best practices and use at maximum the tools available to help them increase the productivity of each team member and enable the team to deliver with maximum results.
To achieve this, there are various tactics that could be used.
Make employee retention your priority
Since both employees and customers come first in the professional services industry, IT outsourcing companies should have a strategic focus on keeping both employees and customers happy.
Nowadays, if you have a good reputation and you deliver outstanding services, customers might be easier (and cheaper) to find than replacing key employees.
Professional Services companies should start from the early stages, with a well planned HR framework that maximizes the results of the recruitment process, from candidates search, to a thorough employee background screening process, technical and soft skills evaluation.
In addition, the performance evaluation, the learning & development programs and the recognition methods should be aligned to top engineers’ expectations.
Celebrate and recognize good skills. Reward ingenuity and creativity. Help good engineers grow.
From an attractive “off the shelf” compensation package, to continuous specialization, social activities, sending teams to hackathons or other industry events and creating a positive culture that celebrates success, all should be your business priorities.
Outsourcing companies should have an interactive, ongoing employee feedback program in place, where all team members are encouraged to speak out freely through an open door policy through surveys, polls or gamification.
Introduce “off the shelf” employee compensation models =
Training budget + Learning & Development consultancy + career path + performance incentives + alternative vacation models + additional benefits to create work/personal life balance
In order to have productive teams and happy employees, organisations should encourage a healthy life style and a healthy work/personal life balance. They should organize open air activities and contests, include sport, dancing, singing bonuses in the standard compensation package, anything that could keep the mind and body healthy.
Encourage all employees to be physically active and have a healthy work/personal life balance
Additional to keeping employees happy, such activities will help you build a strong employer brand. And nice IT brands attract the best programmers out there.
Use tools that enhance the productivity
There are many tool sets that bring a huge gain to projects productivity and in many cases they are free. Some of the tools we currently use within Euro IT Group teams:
1. IDE (IntelliJ or Eclipse) – (Integrated Development Environment) We use IntelliJ over Eclipse, because we find it to be more stable and faster. Additionally, it has plugins to integrate with almost everything. IntelliJ plugins are better fitted and actually work. From our experience, we believe developers are more comfortable with it. It is important to mention here, that the entire development team should use the same code style configured in IDE
2. JIRA – Agile dashboard for task management and progress tracking. A benefit is that comments are together with the task and can be revisited whenever necessary. It can be used to generate productivity reports and charts and used to log time, since developer daily basis work is on tasks. Alternatively, companies use Trello but we prefer Jira due to its friendly users interface, custom workflows, full agile support, powerful integration and advanced reporting features
3. GIT – a free and open source distributed version control system designed
4. Confluence – an easy to use Wiki for documents management (eg: code guidelines, setup steps, release documentation, business requirements etc)
5. Jenkins – Probably the most used continuous integration server in the Java space (and beyond). We use it to control and run our pipeline. Jenkins has the concept of jobs. A job is a standalone build task performed upon source code within an environment
6. Crucible – Used for code reviews between team members, enhancing code quality and making sure the features implemented are following design and code guidelines
7. Sonar – works with over 20 programming languages and out of the box with Java. For each project that is analyzed a dashboard is created where at a glance one can have an overview of all the seven metrics – complexity, potential bugs, coding rules, unit test coverage, duplications, comments, architecture and design. Sonar can calculate the deltas of all the metrics and show how the project has evolved in time from the point of view of code quality
Focus on processes and project documentation
Some organisations automatically assume that just by going agile, Scrum, Kanban software will be built in less time. The application of waterfall, agile, RUP, Scrum or Kanban only influences the productivity of a part of the application since software development is a lot about creativity, work environment, collaboration framework, team spirit and enthusiasm. Indeed agile has many advantages beyond increasing productivity (or at least a strong perception of improving productivity) such as a better quality of code, flexibility, better collaboration between IT and business or more enthusiastic project teams.
Although Agile does not imply such a detailed project domination as Waterfall, balancing documentation and discussion in Agile is essential and valuable; projects that are not properly documented can significantly increase project costs and create headaches on the long run.
In agile you need to decide when documentation is needed to achieve relevant goals, what type of documentation is needed and more relevant (e.g.: executable specifications, not static documents), how can you simplify the documentation process, what and when to document and also to require engineers to justify each documentation request.
Usually the process of composing project documentation is complex and time consuming but the benefits it brings to both end customer and the IT outsourcing company pay the price. High quality project documentation and specifications help drive a shared vision of the project, understand in detail the project scope, and significantly influences project quality and cost.
Besides project documentation, internal processes should be all aligned to achieving better productivity as a priority business objective by:
- having clear leadership roles within the team to keep projects on track (we are against one man show approach; for example the Scrum master should not be the Test Lead)
- having a strategic focus on understanding customer requirements from early stages. Architects and project experts have an essential role in reducing the time allocated for code rewriting and debugging
- supporting team adherence to the same standards: from requirements and analysis, release and iteration management, development and integration and testing. This should be recurrently evaluated through peer assessment activities
- having a clear definition and understanding of projects plans (task definition and distribution/allocation)
- implementing best quality coding standards and guidelines and having a comprehensive code knowledge improvement framework (generally done through code reviews, regression testing and check-in commit scripts)
- having a process for knowledge sharing and smooth integration of new members in the team
- using continuous integration and deployment (as means to have clear visibility on code quality, complexity, status etc)
- using transparent, industry standard metrics such as lines of code, function points, time, and cost, etc
Some operational/admin aspects
Create an office environment that minimizes distractions and optimizes the way the time is spent
- An example would be the introduction of quiet day/quiet hours when nobody should send/read emails, make phone calls or use instant messaging
- In agile we have lots of meetings, but each meeting should have clear objectives since meetings usually take more than the time allocated for them
- Include various soft skills trainings in your SDC program (eg: communication, time management, effective delegation, listening, mentoring/teaching, critical thinking and problem solving, etc)
- Don’t underestimate the time spent with operational tasks while travelling; programmers shouldn’t be bothered to make travel or accommodation arrangements, to write useless internal reports.