Chris Thacker has over 12 years of experience as a tech professional. He started his professional journey as a Java developer and quickly moved on to a testing role. He spent a couple of years working in automation testing, holding leadership positions across different companies. In 2019, he transitioned to an engineering management position, as he became the Head of Engineering at MoneySupermarket, a price comparison website for financial products.
In early 2021, Chris briefly joined a startup, Mojo Mortgages, as the Chief Technology Officer, working at the company for a few months until it was successfully acquired, and he joined PHMG as Director of Engineering in the last quarter of 2021.
PHMG is a leading multimedia audio branding agency that provides audio branding solutions for small businesses and big corporations. PHMG thrives in making entrepreneurs sound professional and big brands sound as impressive as they are. The company has worked with over 32,000 brands during its 20+ years of existence and is currently leading the audio branding market.
This article covers our discussion with Chris extensively. However, if you’d rather watch the live session itself, here’s the link to the full recording:
The software development process relies heavily on principles, processes, programming languages, methods, and other concepts that determine developers’ workflow and outputs. On the surface, adding a software development philosophy to the mix may not seem necessary. However, Chris strongly recommends establishing a software development philosophy of our own to help guide your team for the two following reasons:
Finding great talent is a top priority for any organization, since people are pivotal to achieving any organization’s objectives. The candidate with several years of experience and all the technical skills needed to succeed in the role is not always the right person for the job. In reality, the truly right candidate often boasts a mix of technical competence and soft skills, while also being a cultural fit.
Finding this talent from a pool of eligible candidates can seem akin to finding a needle in a haystack. But if you have a software development philosophy guiding your team, you can identify candidates that share similar values with your company. This makes recruiting a lot easier, since in Chris’ words, “Understanding how you want to build makes it easier to find people who want to be part of that.”
While you may have brilliant ideas for improving your team’s workflow and productivity, these ideas may be easily neglected when you leave the team or when you’re not closely supervising your team’s activities. This can lead to client dissatisfaction and low-quality projects or projects not aligned with your team’s past achievements.
Establishing a software development philosophy is a great way to communicate expectations clearly to team members and codify ideas that your team members can easily consult in your absence. This way, your team can keep building quality products that meet the set standards.
It may be difficult to identify candidates that align with your software development philosophy by running technical assessments and interviews. You have to employ unique and innovative strategies in the recruitment process. Chris recommends a few of these strategies that are worth considering:
According to Chris, “You are more likely to identify candidates compatible with your software development philosophy if you assess their technical capabilities based on subjective criteria.” Chris summarizes these subjective criteria as the four Ps, which are:
Software developers need to prioritize learning cutting-edge technology, new methods, and novel techniques to remain competitive in the industry. Self-motivated developers may be more open to new software development philosophies than developers who don’t pay that much attention to their personal development.
You can also identify candidates compatible with your software development philosophy by tailoring interview questions to the philosophies you’re looking to introduce or implement in your team.
This way, you can assess people’s preferred approaches for compatibility with your software development philosophy. As Chris puts it, “You need people who can pick up an idea and run with it, and not people looking to play tiki-taka when you’re trying to play a long ball.”
Software development philosophies can significantly increase your team’s autonomy and productivity. However, establishing these philosophies and ensuring that your team complies with them is not always a seamless process, especially if your philosophy is very different from the standards adopted by your team.
If you’re in this position, Chris recommends two broad methods you can adopt to implement and ensure compliance with software development philosophies in your team:
Chris recommends starting with the soft methods when setting and enforcing software development philosophies in your team.
For instance, you can encourage your team members to adopt software development philosophies by constantly talking about the software development philosophies during stand-up meetings and one-on-one meetings with the team. You can also call out people deviating from the philosophies and praise people adhering to the philosophies.
For the hard methods, Chris recommends adopting tactics such as fitness functions—an architectural test that will allow you to embed software development philosophies. For instance, you can use a unit test to determine how well software development philosophies have been adopted in the coding process.
You can use both soft and hard methods, and seize every opportunity to reiterate software development methods in your team. You can also share resources written by industry leaders, such as blogs, tweets, and books that reinforce your software development philosophies. According to Chris, “Sometimes, an authoritative figure saying the same thing may drive your point home faster.”
Creating your own software development philosophy doesn’t necessarily need to be a herculean task. You may have preferred processes, methods, and platforms that could be ingrained in your software development philosophies. However, you also need to consider incorporating external factors. If you’re looking to build your own software development philosophy, here are some tips that will help:
The end goal of your software development efforts is a great starting point when building software development philosophies. Chris recommends starting by defining what business outcome you intend to achieve with your software development philosophy, and you will be able to decipher other important factors stemming from your desired result.
Your preferred platform and processes may not be optimal for achieving your desired outcome. Hence, your choice of platform and processes should be influenced by your desired outcome instead of your preferences. Chris recommends choosing the platforms and processes that offer the benefits you need and are comfortable with.
Hiring talent is expensive, but losing talent may be more expensive. Hence, you should always consider your team when developing software philosophies and ensure that your philosophies serve to keep your team focused and engaged.
You should also prepare your team for the change. Chris recommends building autonomous teams that are resilient and can make decisions independently to facilitate implementing software development philosophies in your team.
Your software development philosophy should ideally align with your company’s business objectives. In addition, you should also consider your company’s risk profile. Certain software development policies may pose a threat to your business. Hence, it’s best to create software development policies that won’t expose your company to further and unnecessary risk.
Your first attempt at developing a software development philosophy may not be successful. It may take several attempts to come up with a software development philosophy that will guide your team to achieve your desired business outcome. Chris recommends viewing each attempt as an experiment and deciding what works based on the findings from your experiment.
The saying that whatever is worth doing is worth doing right very much applies to software development.
As a tech leader—beyond developing and implementing software development philosophies in your team—you will also need to set and enforce high standards to ensure that your team delivers quality work. However, this may be difficult when working with a team of talented developers, since you will need to battle with different ideologies and preferences.
On the other hand, if you don’t set standards and hold your team members accountable to them, work quality may drop and bad behavior may spread in the team. If you’re wondering how to set and enforce high standards in your team, here are some tips that can help:
Chris recommends introducing mild penalties to encourage your team members to become more conscious of the adopted standards and committed to enforcing them. Rest assured that it doesn’t have to be a hefty fine. In fact, Chris recommends something small, like donating a few pounds to charity anytime someone defaults, which he has implemented in his team and seen tremendous improvements as a result.
Feedback is essential for enhancing performance and nipping unacceptable behavior in the bud. You can always leverage feedback to remind your team members of your standards. Chris recommends adopting the BIFF (Behavior, Impact, Feelings, Future) feedback model, explaining how your team members’ deviation from the standards can affect the team or projects, how it makes you feel, and telling them what they need to improve in the future.
As a team leader, you’re responsible for ensuring that your team’s activities align with the overall strategic business objectives. However, translating those business objectives to an autonomous team may be a bit challenging, as you probably won’t want to interfere with the team’s activities. If you’re wondering how to navigate this tricky situation, you may find the following strategies from Chris helpful:
If you want your team to remain focused on the business objectives, you have to inform them about those and do it early enough. Chris recommends having these conversations with your team at the end of each year and ahead of the next year. If your team understands the business objectives, they’ll be able to tailor their activities toward achieving them.
Chris also recommends setting goals and key performance indicators to help your team track and measure their performance. Importantly, though, those goals and KPIs should be set in collaboration with your team and not without their input.
Once you have agreed on the goals and KPIs with your team, you can step back and allow them to get to work and let them come to you if they need any support. According to Chris, “Autonomy is essentially your team moving towards the best outcome expected of them, and how they approach it should be up to them.”
Software development does not need to be a systematic process. You can explore several unique approaches to guide your team to achieve set objectives.
Remember that building a software development philosophy is an iterative process. You don’t need to stick with any given permanent solution. In Chris’ words, “Feel free to chop it and change it as needed.”
Thank you for reading our article. Before you go, we recommend that you subscribe to our Tech Leaders Hub newsletter for more expert advice and check out the following resources on our blog: