...for our core development functions.
Background: We are a software development agency specialised in high performance business applications and project rescue services. We operate as small teams of between 4-7 people, with each team taking on full responsibility for their individual project. We are a purely technical company.
The non-techies as we call them here in Moodio/Muljin. A despicable bunch! People for whom work involves talking to people rather than actively coming up with ways to avoid them. People who think a hashset is what you're served for breakfast when you ask for beans and sausages with your potato waffles ( Disclaimer: I have no idea what the edible version of "hash" is, sounds potatoey though). We don't need them, we don't want them, and we'll definitely never hire them. Well, we will for admin, finance, HR, and other type roles, but never for any core software development roles!
While our hatred for non-techies is exagerated, I'm even actively married to one in real life, the rest of the statement isn't. Early on in the life of Moodio/Muljin we made one important decision that has shape how we work and how we communicate both internally and externally, we will absolutely never hire a non-technical person to manage, supervise, perform and sell technical work. We do not hire delivery managers, project managers, business analysists, or anything similiar. This includes both internal and client facing roles and we don't even hire non-technical sales people.
This post isn't to say there is anything wrong with these roles or the people that perform them, there just isn't a place for them in a high performing software development team. These roles are created to remove friction, but instead end up just moving them from one part of the project to another. Developing software is filled with friciton, its filled with things that can't be done, either because of your budget, your timeframe, other parts of your requirements or the technical feasability of what you are asking for and whether it can even be done. Successful software development, is about finding these sources of friction early on and improving the overall design to remove them.
What we find happens however when people from non-technical background are put in charge of things such as project management, planning or sales, is they do not possess the required knowledge and experience to make accurate decisions on what can be done or what should be done. Ask any sales person if something can be done, they will always say it can, ask a good engineer the same question, and they will list a many reasons why it cant be done before telling you whether it actually can. A sales person will always leave you feeling optimistic and happy, while an engineer will always leave you feeling cautious. While we wont tell you which we think is the more appropriate way to start a project, we do think it can't do much damange to tone down your optimism a bit, especially when noting that more than half of software projects fail( https://www.projectsmart.co.uk/white-papers/chaos-report.pdf.)
Its no different for anything else, non-technical delivery managers create time lines based on little more than wishful thinking, non-technical project managers with no knowledge of the work required for different features have no way of making informed decisions on what will give the most bang for the buck, and non-technical business analysists have no real knowledge into how best to translate business needs into technical concepts, where improvements can be made and efficencies added and where extra care must be taken or alternative solutions found due to technical limitations.