Our Aim is to Instill Confidence
Confidence is an important factor in getting started quickly on a new task and also in knowing when that task is complete and ready for sign-off. When you’re afraid of the unknowns, when the setup is confusing and unfamiliar and when you’re terrified that whatever you do could break the code that’s already in place, that’s when productivity takes a nose-dive.
Throughout this guide we talk about the ways in which the software practices we work to can aid your confidence as a developer: having a thorough test suite as a rock-solid base to work on; separating out deployment environments so that you can sandbox your app with ease; adding monitoring in early to save head-scratching time later; making reusable components sooner rather than later for you and your developer friends; it’s all good.
ADAPTIVE LAB’S CULTURE
The work environment we have established is a key factor of fearless development. We’re highly focussed on the working culture we’ve set up and we foster an environment where individuals in the team feel supported in what they do. There are no stupid questions!
Everyone has different skills and expertise, so we like to share those around the team, sometimes by giving talks on subjects of interest. Books, courses, meetups and by allowing the time and money to learn new things, helping to plug any knowledge gaps.
When working as part of a team, it makes sense to leverage that combined knowledge. The sum of the whole is worth a lot more than the individual parts. The whole team (of developers, designers, product managers and the like) should feel responsible for the quality of the work that it produces and the combined experience can be used to help ensure good quality.
THERE ARE NO STUPID QUESTIONS!
When given a new challenge to solve and there are bits you’re not clear on and are uncertain of, then pipe up early. No one’s going to mock you for anything you might ask. Some people know some things; other people know other things. No one knows everything, especially when you’re dealing with domain-specific tasks that come with a history and a language created before you even came to work on it.
We try and make things easy on ourselves because we like an easy life. Luckily, it makes things simple for new developers too. Every project's dependencies can be brought into being through a simple command, no matter how complex they are, thanks to virtualisation.
No new features get into the codebase of a project until it's been reviewed by a fellow developer. The reviewer's goal is not to belittle your efforts - the benefits go both ways in fact. You might get some good insights into better ways to do certain things but so might the reviewer too.
Benefitting from a thorough test suite
For anything that needs to live more than a couple of weeks, having a good set of tests can give you as a developer a lot of confidence that whatever you add isn't going to screw up whatever's already there.
Sandbox and development environments
Making it easy to try out new features and functionality goes a long way to speeding up the development process. It allows a developer to throw caution to the wind, dive right in and try out the ideas they might have had when they were planning out what it was they wanted to do. We provision for staging environments as a matter of course for each and every project and make it easy to get set up with tools like Vagrant and Ansible.