In the Software Engineering Department, we are in charge of developing the Agicap product. We collaborate closely with the Product Team to shape and update product features that align with the needs of our users. We encourage a culture of quality so that our product can be scaled and developed for expansion, and continue empowering business owners. We take pride in engineering fundamentals and always strive to find a balance between getting things done quickly and achieving long term maintainability and scalability.
To ensure that our application remains efficient and maintainable, we have established a true culture of software quality at the heart of Agicap. We made sure to develop this culture from the beginning, and it is now present at all levels of the team.
By making sure we make decisions for the long-term, we can ensure that our product is maintainable- so features we develop are not short-term solutions. Five years from now, we want to ensure that adding new features is not difficult, and we don’t need to go back and fix bad code. As Agicap is in a phase of hyper growth, our code also needs to be scalable and easy to read for future developers. We also want to be able to continually improve Agicap for our users, so we pay attention to our working methods and architecture, so they don’t slow us down.
In our culture of quality, clean code is essential. Our developers are the guarantors of quality of our code through the application of tests, code reviews and peer programming sessions. We want our developers to be proud when they have finished a project, knowing that the code they created is great quality. This is why, even during sprints, we don’t rush delivery and consecrate 20% of our time to continuous improvement projects.
We ensure collaboration through pair programming. We do this because it is a learning experience: different team members might approach a process differently, and it’s a chance to discuss why we make certain decisions and to understand different ways of approaching the same problem.
We also work closely with other teams at Agicap. We interact the most closely with the Product Team, which defines our product roadmap. There is a ratio of one Product Manager and one Product Designer to a maximum of four Developers. This ratio ensures that the Product teams can conduct user research and design phases effectively, so that during the delivery phase with the Software Engineering team we know exactly what we need to deliver.
We also work closely with the Customer Success and Sales team. We want to remain close to the customer, and as each of these two teams have daily calls with the customer, we often do shadows of these calls. By understanding how our customers use our product, we can more effectively develop the features that respond to their pain points.
We’re a close team, and we always help each other improve as engineers. In our small and autonomous squads, our developers are always empowered to step up and solve a problem.
We work in sprints of two weeks, with scrum ceremonies like sprint plannings, daily stand-ups, sprint reviews and retrospectives. Working closely with customers, sprint reviews are a very good time to showcase what we’ve worked on as a team, as well as to give direct visibility to our stakeholders. Backlog refinements are also a very important moment for us to understand what’s coming up, and the challenge requirements. Every member of the team can give their input and have much of an impact as the next person.
Our teams are organized into squads, which each specialize in a clearly identified business context. With around five people per team, we are not bound by geographical boundaries, as many of us work remotely from all over France. We work collaboratively and every team member tries their best to help one another, ask questions and challenge ideas.
Each squad has a team lead and a Product Manager and includes a variety of profiles so that the team can independently work and release new features in the application (Full Stack Engineer, Front-End engineer, DevOps engineer).
We apply the SOLID principles to reduce design errors (Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle and Dependency Inversion Principle). We also conduct a wide coverage of automated tests (unit, EndToEnd, functional, integration, acceptance (based on SpecFlow). In an agile environment with continuous deployment, we also use TDD (Test-Driven Development) to design better tested and more reliable software, in other words, better quality.
Algorithms are also a key element in our developments. We have to analyze the data provided and process it in real time. In particular, we analyze the cash flow history and outstanding amounts to automatically build a reliable and customizable forecasting base. We allow our users to automate their cash flow forecasts and thus have visibility on the future. Machine learning is applied to the automatic categorization of bank flows, replacing the time-consuming manual entry of an Excel file.
During the recruitment process, we put our culture of quality mindset first. Candidates might be surprised to learn that we take basic coding knowledge and hard skills into relatively little account. Above all, we want to make sure there is a good culture fit. We start the recruitment process with a theory discussion to explore the candidate’s foundations in development. Then, there is a practical case study of code review, where the candidate will code on a project in front of the team and have a discussion about the reasoning behind the different decisions. We do this to really understand the candidate’s mindset and make sure they align with our culture of quality.
The general onboarding takes place on the first day, and the rest of the onboarding process happens within the team. On the Software Engineering Team, our onboarding takes two weeks.
Each new member of our team is assigned a Role Buddy, who will be their main point of contact throughout their first month. They will spend much of the first week with this buddy, setting up their computer, pair programming and familiarizing themselves with the code philosophy at Agicap. During the first week, newcomers will also participate in shadows of customer calls on the Sales and Customer Success Teams, to make sure they understand the product and customer needs.
After the first week, the newcomer will integrate into two different squads for two weeks each. This allows them to understand different services and applications in our stack, and meet several colleagues. While on these squads, they will participate in all aspects of the process, including daily meetings and stand-ups. Along with these squads, newcomers will participate in the Agilauncher Program, where they will take the lead on small support tickets, to develop solutions to support problems.
Then on week six, our new team members will join their permanent squad, based on their preferences and experiences.
We are looking for people to join the team who always reach for excellence, and continually question the processes in place, so we can always aim to improve as a team and as a company. Are you ready to join an adventure filled with daily challenges, and above all, join a team where each person wants to bring our users a product that solves real problems and has a real impact?
Check out our opportunities here.