Software Development Team Structure: Important Roles and Responsibilities
steelkiwi.com
steelkiwi.com
Compare this with how some of the fat-moving companies work. Instead of 7 different people (from BA and PM and a dedicated DevOps engineer etc etc and all the comms overhead) you have two people / roles: - Product & design: the “why” and “what” - Software engineers: the “how” and building/shipping. Note that these people are called engineers for good reason at these companies. While the article says “ A team full of great developers may not bring the expected outcomes if there’s poor communication.” - duh, at places I’m talking about, engineers communicate with each other without a project manager for the most part. In fact, decent comms is something these companies screen for during the interview process. And “DevOps” is part of the role: you build it, you own it. Of course, there would be platform-focused teams and program/feature teams.
These tech companies have other roles for sure: most notably, data scientists and other not-so-technical roles (marketing, operations, legal etc)
But by having one engineer own what companies like SteelKiwi have several people do, no wonder they’ll be able to move faster (less comms overhead), pay more (far more value per engineer) and provide more autonomy (you own solving the problem, not executing the task the BA and PM agreed on, and you’re not expected to understand anyway).
[1] https://blog.pragmaticengineer.com/what-silicon-valley-gets-...
This is how teams in the UK Gov are structured (infact we have more roles [52 at last count]) and its horrible. Aside from the lack of ownership and autonomy at an individual level you also end up with increadibly fragile teams as theres no depth of experience.
If you have 7 people and they all do different things you spend more time finding things for people to do than working on valuable problems - much better to find people with overlapping skillsets in the domain you want to solve a problem then let them get on with it. So if you want to build some software - hire people that can write code, if you want to provide information - hire some writers. Hire smart people and they can do the bits around the edges 'enterprises' think they need specialsists for.
"A jack of all trades is master of none, but often times better than a master of one"
In an internal software project, when an engineer looks at a problem and realizes it can be trivially solved with an off-the-shelf airtable template, that's a win for everyone! Less code to maintain, less distractions from other more valuable projects, and value delivered sooner.
If a developer working for an agency realizes that, and says it out loud during a meeting with the client, they just undermined the basis for the entire engagement.
It's a good approach if you can't attract great talent to begin with. You'll pay lower and have a higher head count so costs are about the same.
SV has the talent pool and the compensation to make it attractive to work there.
When delivering enterprise applications, we usually have three roles running the project; Project Manager for processes/planning/..., Product Manager on the requirements/BA side, Solution Architect on the tech side, some code involvement, focus on the bigger picture.
Regarding senior engineers; we have multiple seniors on the team anyway, seniority doesn’t necessarily put you in an influential position.
We use the SA basically as a technical coach. They are not the boss, and they don’t own the solution or push decisions, we practice collaborative ownership in that regard. I like to say the SA is our development scrum master.
We run like this on projects for banks or insurances. Allows us to execute in an agile fashion (we actually use XP) while still being able to plan months ahead (high level) - those types of customers love their Gantt charts and solution architecture documentation ¯\_(ツ)_/¯
I would argue environmental ops is a different speciality and it has a lot of very specific domain knowledge attached. Its doable but it doesn't feel efficient.