How Your Business Can Get the Software You Expect: Know What is Required, Plan Accordingly and Manage the Process With Confidence
Part II – Know the Team
This is the second in a series of articles (read part one here). It is intended to provide guidance to small businesses in need of software development expertise. In this article, I’m going to focus on the most important factor in any software project: the team. Whether you are hiring your own staff or working with an outside or offshore vendor to build your software, you need to know whom you are hiring and carefully gauge whether or not they can do what you want.
Software teams have a familiar composition, just like a construction crew for a home. The following is a description of the key people in a software project team. Depending on the complexity and budget, your project may or may not incorporate all of these specialists, and some individuals may wear more than one hat.
- Account Manager (AM) – A non-technical sales and business liaison with the client. They are the relationship manager, often presiding over the budget.
- Project Manager (PM) – The non-technical day-to-day person charged with coordinating, budgeting, scheduling and monitoring the project.
- Product Manager (PM) – An alternative to the project manager, a more technically proficient person with day-to-day responsibility for coordinating, budgeting, scheduling and monitoring the project. They have knowledge and even experience with the technical aspects of software development. It is generally better to have someone with technical comprehension managing a project because they will grasp the impact that certain technical facets will have on the budget and timeline.
- Lead Developer – The only management role among developers. This person is an engineer and technical expert who also has management responsibility and demonstrated management skills. He or she supervises the hands-on development efforts of the technology team and approves the work being done. He or she is at minimum a senior developer, and is usually a software architect as well.
- Software Architect – The senior most non-management technology role. Architects not only execute, but more importantly, design how the software will be built, what components and tools will be used and what skillsets are needed for a project. They make key decisions, such as whether to license a pre-existing product or build something from scratch. They provide a high level of technical direction. An architect may play a hands-on and active role, or may just be an advisor and strategist who lays out the initial plan and provides guidance. Architects are able to understand business requirements and translate them into technical requirements.
- Senior Developer – Has several years experience developing software, usually ten or more. Also has some architectural skills, and may have gained some management skills depending on their talents and career interests. He or she is an expert in various hands-on aspects of development and acts as a mentor to more junior members. A team needs at least one senior developer to ensure quality software development. The most important qualification for a senior developer is proven, prior experience on successful software projects and strong process-oriented knowledge. A senior developer has mastered the art and craft of creating quality software.
- Junior and Mid-Level Developer – Junior developers typically have less than 3 years of experience and require significant mentoring and supervision. Mid-level developers have between 2 and 8 years of experience.
- User Interface/Experience Expert (UI) – This person is responsible for carefully considering the interaction that users will have with the software, and for creating mock-ups and final layouts called “wireframes” that incorporate all the essential elements of an interface, whether it is a web page, a pop-up menu, a drop-down menu or the layout of an application window on a desktop or mobile device.
The importance of a UI expert in creating wireframes can’t be overstated. If users can’t locate a key feature or have to endure a cumbersome process in order to complete an essential task, then your entire business can fail before it starts. This understanding is something that companies like Apple have mastered par excellence, and it explains in large part why their customers love them, even while major competitors (hint, hint) repeatedly ignore user experience and chip away at their reputation with end users.
- Designer – Designers create the graphics, style and theme for a software application, website or mobile application. They fill in the wireframe layouts defined by the UI expert. Buttons, images, layout components and rendered text all fall under their responsibility. It is not uncommon for designers to also act as UI experts, and quite capable ones.
A Few Notes of Caution
In my experience, developers can rush to achieve senior, architect and even lead designation, often well before they have proven themselves ready or earned the necessary merit badges. There is a very nice bump in pay that occurs at every level. It is important to gauge the qualifications and experience of each lead, senior developer and architect on a team and ensure they are suited to their position.
I’ve also seen designers and business people (PMs and AMs) try to be developers, almost always with very poor results. The lack of formal training and mentoring means that they neither understand nor grasp certain formal processes and methods of quality software craftsmanship.
Lastly, I’ve seen developers try to be designers and UI experts, with frankly the worst possible infringement on aesthetics and good taste that one can imagine. Developers should not be permitted to design so much as a button! In terms of talent and career, one can either be a developer or a designer, but one cannot be both, and never on the same project.
When evaluating a team, consider applying the following criteria.
1. Ensure that each person on the team has the skills and experience to merit the role they occupy. In the case of developers and designers, that means formal education and the appropriate years of experience.
2. Ensure that the people in management positions have proven management experience.
3. If you are hiring an outside vendor, the team you work with should have prior experience working together for several months. A team that knows one another has already learned how to work together, to communicate together and have already established effective processes.
A poor team will kill a software project. They will make critical mistakes in the user experience, architecture and/or design. They will fail to see or plan for certain crucial components, and often blow the schedule at the last minute as a result. They will build substandard work that requires a complete redo, often at your expense. I’ve worked with numerous teams in my career, both good and bad. Problems and dysfunction will most likely occur if the team lacks capable managers and senior staff.
The Vetting Process
Don’t be afraid to ask for the bios or even résumés of all the people assigned to your software team. Don’t hesitate to ask for an introduction to the PM, lead and senior developers, as you can’t afford to have inexperienced or unqualified people in those key roles. Three questions to ask are: how long have them team members been working together? How long have they held their current positions? How many years of experience do they have in total? What similar software applications have they previously built?
Lastly, it is important to understand that the relationship between you (the client) and the execution team can vary greatly from team to team and project to project. In some cases, the client is allowed to reach out to every member of the team as needed. In others, the client is directed to the account manager, project manager or lead developer. It is typical of a client to want unfettered access to everyone at a moment’s notice, just as is it common for a team to want to be removed from direct communication, apart from the AM or PM. A good team knows how to manage a client and how to set expectations at every step. As a client, don’t be afraid to ask to speak directly with a developer on a task if you feel your needs and requirements aren’t being understood. In general, you should expect better results – and to be better understood – if you interact with the managers on the team. Too much client interaction can be a distraction and can interfere with the process.
In the next article in this series, we’ll discuss the process of software development. We’ll help businesses and clients understand how quality software is created and explore some of the tools and elements that are part of the process.