In my last post, I gave my thoughts on the role of an engineer. This got me thinking. I’ve been speaking with a lot of startups and small businesses recently who seem to be having issues deciding on a technical team. I wanted to give my view on what the Minimum Viable Team (MVT) for startups could look like. I know this is a very subjective topic and there are a lot of successful businesses that have delivered excellent products with teams that look nothing like what I’m about to describe but from what I’ve seen, if you have these key players your are more likely to develop something that works. Please note that this makes no assumption about the product, it’s usefulness (or lack thereof) or ability to gain customers.
When working with companies to design solutions, I typically have one or more whiteboard sessions to give them the ability to talk about what they want to achieve, I don’t limit them to version features but I let them speak their mind and state any and all possible ideas. Afterwards, we identify all the features from the conversations and then whittle that list down to a Minimum Viable Product (MVP) feature list. I’ll take that approach here. I’ll outline my perfect team and then identify the subset of people required to deliver a basic product.
My Perfect Team
- The Project Manager (PM) – With the advent of agile methodologies the PM no longer fits the traditional profile of a project manager but can now be a member of the team and not a dedicated entity. I believe that it is important to have someone assigned to this role who can be an enabler for the team ensuring that everyone has what they need to do their job and that there are no bottlenecks.
- The Designer – Design is *almost* everything. Steve Jobs has shown the importance of beautiful design but also demonstrates that beautiful design is more than something that is pretty. Beautiful design is understated. With brilliant design your brain should not notice how beautiful it is but just accepts it as truth and forces you to quickly identify things that are wrong with everything else in the world. The designer is key to ensuring that the UX and UI enables users to flow effortlessly through the system.
- The Technical Architect (TA) – Too few people see the importance of a TA. This is a key role and is the person who works with business units and development teams to create a technical plan. The TA will need to spend the time to understand the business and its goals. They will also need to understand the technical team and their capabilities. Understanding these two sides will allow them to make better decisions in designing solutions. In more traditional environments this role overlaps with Business Analysts (BA) but for my team I can do without the BAs.
- The Senior Developer – This will be your guru in the development platform of choice. Your senior developer will have solid experience in building applications and on backend coding, APIs, design patterns, Web Services etc.
- The Database Developer – The database developer will know the database platform inside out. They will live and breath schemas, partitions, triggers, stored procedures and indexes. They will know how to normalise and denormalise data or construct data models for use in NoSQL stores.
- The Frontend Developer – With more and more apps moving back to the browser, talented frontend developers are crucial. They make the user interfaces that people see and are responsible for making sure that the visual designs and user experience is optimal.
- The Infrastructure Engineer– The infrastructure engineer is responsible for designing and maintaining the infrastructure for running your system. They ensure that your application/site is fast, secure, backed up and always on.
- The Mobile Developer – We are the mobile first generation and your mobile developer will be the person for deploying your creation on iOS or Android (or Windows).
Those are more people than most startups or small businesses can afford to hire. One strategy that can be employed is to outsource the entire development of a product which will allow the outsource company to offer all the roles but reduce the cost of the business.
For my MVT, all of the roles identified above exist but multiple roles are covered by an individual.
- The Senior Developer – This person will be responsible for multiple roles early on. For startups this could be the Technical Co-founder and will be encompass the roles of the Project Manger, the Technical Architect, the Senior Developer, the Database Developer and the Infrastructure Engineer. It’s a lot, I know, but you will find that true senior developers can perform these roles with a significant level of competency from their years of experience.
- The Designer – Cannot and should not be sacrified
- The Frontend/Mobile Developer – Many frontend developers these days have dabbled in the tools of the trade and will need to be competent enough to deliver both web and mobile applications.
It is a lot to ask of the Senior Developer in my MVT and if it can be avoided less should be put on his/her shoulders but when resources are limited individuals need to assume more roles than one. It is important to keep these roles in mind when hiring within your situation and ensuring that the required skills are identified in the candidates.