Software Development Philosophies: How to Develop and Implement Them

Time to read
10 min
Category
Software Development Philosophies: How to Develop and Implement Them
No Results Found
Table of Contents
  • Introducing Chris Thacker and PHMG
  • Why do you need software development philosophies?
    • 1. Software development philosophies come in handy when recruiting talents
    • 2. Software development philosophies promote uniformity of your team’s projects
  • How to recruit candidates who are compatible with your software development philosophy
    • 1. Conduct subjective technical assessment
    • 2. Look out for candidates passionate about their personal development
    • 3. Set questions tailored to your software development philosophy
  • How to implement software development philosophies in your team
    • 1. Soft methods
    • 2. Hard methods
  • How to develop software development philosophies
    • 1. Start with the end in mind
    • 2. Determine the platforms and processes best suited to your objectives
    • 3. Think about your team
    • 4. Consider your organization’s risk profile
    • 5. Be open to failure
  • How to set and enforce high standards in your team
    • 1. Introduce mild penalties to deter defaulters
    • 2. Leverage feedback to improve poor standards
  • How to help your team become autonomous and focused on key objectives and results
    • 1. Openly communicate business objectives to your team
    • 2. Set clear goals and key performance indicators (KPIs)
  • Final thoughts on developing and implementing software development philosophies

Software development is often filled with systematic processes. Developers learn programming languages, techniques, methods, and procedures to arrive at the generally accepted workflow.

It would seem there’s little room for innovation and creativity in the software development process, but that’s not always the case. Having a unique approach to software development or adopting a software development philosophy might be the missing link your team needs to become more aligned and build better products.

While software development methodologies, techniques, and processes may serve as a benchmark for working harmoniously to build great products, there’s always room for developing and implementing philosophies that can guide your team’s software development attempts, and even contribute to the general body of knowledge on software development.

If you’re wondering how to develop and leverage a unique software development philosophy to improve your team’s productivity, you’re in luck. We recently chatted with Chris Thacker, Director of Engineering at PHMG, on a recent episode of our Tech Leaders Hub series about developing and implementing philosophies of software development in engineering teams.

Chris spoke extensively on the importance of software development philosophies in building harmonious and high-performing engineering teams. Keep reading to learn the advice Chris shared with us and apply it to your own teams!

Introducing Chris Thacker and PHMG

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:

 

Why do you need software development philosophies?

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:

1. Software development philosophies come in handy when recruiting talents

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.”

2. Software development philosophies promote uniformity of your team’s projects

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.

How to recruit candidates who are compatible with your software development philosophy

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:

1. Conduct subjective technical assessment

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:

  • products—access candidates’ technical skills based on the products you’re building;
  • people—access candidates’ ability to work in the teams they would be joining;
  • processes—access candidates’ knowledge of the processes your team adopts;
  • platforms—access candidates’ knowledge of the platform your team adopts.
2. Look out for candidates passionate about their personal development

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.

3. Set questions tailored to your software development philosophy

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.”

How to implement software development philosophies in your team

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:

1. Soft methods

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.

2. Hard methods

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.”

How to develop software development philosophies

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:

1. Start with the end in mind

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.

2. Determine the platforms and processes best suited to your objectives

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.

3. Think about your team

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.

4. Consider your organization’s risk profile

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.

5. Be open to failure

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.

How to set and enforce high standards in your team

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:

1. Introduce mild penalties to deter defaulters

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.

2. Leverage feedback to improve poor standards

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.

How to help your team become autonomous and focused on key objectives and results

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:

1. Openly communicate business objectives to your team

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.

2. Set clear goals and key performance indicators (KPIs)

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.”

Final thoughts on developing and implementing software development philosophies

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:

Also, if you’re looking for an autonomous team to support your next project, STX Next is always available to help. Feel free to leave us a message and we’ll get back to you in no time!

Get your free ebook

Download ebook
Download ebook

Get your free ebook

Download ebook
Download ebook
Content Writer
Share this post