To the uninitiated, software development represents an endless field of technical knowledge, that mysteriously results in the creation of a functional product. While it's not necessary to know the nitty gritty details, it's vital for businesses to validate the skills of their vendor, so that they can be confident in their investment.
Before deep diving into the two essential development roles, it's important to understand that every developer has a different skill-set that has been shaped by their experience with various languages, tools, and organizations. A junior engineer may have only a few years worth of knowledge, whilst a senior could have decades of experience with a number of programming languages under their belt.
Software developers, and software consultants, are both involved in programming, documenting, testing, and troubleshooting applications. This article will explain the difference between these two essential roles, and specifically focus on how software consultants set themselves apart to provide additional value to their clients.
Who is a software developer?
A software developer has the ability to design and implement software solutions from start to finish. Even the most junior developers can write well structured code without significant input from senior engineers.
All engineers are fluent in at at least one programming language, and are responsible for implementing systems. Senior engineers design and document architecture for client projects, mapping out the product they need to build, while mentoring a team to execute their plan through to its completion.
What qualifications do they have?
Most qualifications are dependent on the type of position, level of experience, and industry where the software developer is working. Here are some generic qualifications that most developers should possess:
- BS/BA in Computer Science or related field of Engineering
- If no degree, years of experience with software development
- Strong knowledge of data structures, software design patterns, relational and non-relational databases
Is a software developer client-facing?
Developers can be client-facing if the organization that employs them allows them to interact with the client. Generally if there are consultants within the organization, only senior-level developers will have contact with a client.
At Lofty Labs we encourage our developers to learn how to comfortably communicate with clients when they are working on projects.
Who is a software consultant?
The software consultants we have at Lofty Labs are senior developers with over a decade of professional experience. They provide expert technical advice and guidance on projects, create the architecture for software engineers to follow, and strategize with clients to create software that solves business problems.
A consultant spends quite a bit of time with clients, capturing project requirements from key stakeholders, and translating these into objectives that can be met by the technical team. They are collaborative, and have a holistic view of all sides of the project.
At Lofty Labs, our software consultants continue to write code at a senior software developer level. This ensures seamless transition between the planning, and execution phases. In certain organizations, or if working as a freelancer, consultants may not write code but are familiar with the technical aspects needed to create software.
What qualifications do they have?
- Years of experience building software for many businesses and industries. Using this experience software consultants can quickly adapt to a client's business.
- Software consultants are able to embed themselves within the client's business, and plan or build software as if they were a direct employee of the business.
- Very good at multi-tasking and time management. Should have experience handling more than one project at a time.
- Demonstrable ability to lead projects, and others, without waiting for specific direction from management, or the client. A software consultant has done their due diligence, knows what needs to be done, and is always working toward meeting the client's needs.
- Provide technical advice that will reduce cost, increase revenue and make processes more efficient.
What sets software consultants apart from developers?
Software consultants are specialists, and can use their knowledge and experience to advise management. Unlike a software developer whose knowledge is strictly technical, a consultant has experience in the operations of a business.
Consultants take long-term ownership (responsibility) over the life of a product, or make a transition plan from the beginning so that it can be passed seamlessly to another person. (Note: Full legal ownership remains with the client. Ownership here means responsibility for the management of a product in a technical capacity.)
Traditional development companies often don't care what happens to the software once it's done, which is why corners are cut, and problems arise when the product is given to another software developer to fix. Consultants ensure that a business has the blueprints for a product, so that they can save time, money, and effort in the long-term.
How does a software developer become a software consultant?
Software developers who become consultants have years of industry experience. Senior developers are required to always be learning new things, and adapting to change. The best consultants are proficient in a number of languages, have worked for several different businesses, and industries. Once a software developer has sufficient experience, they usually need to build a solid network base before starting a small consultancy business.
Learning how to be a small business owner, whilst simultaneously remaining an expert in their field is difficult. Solid time-management skills is a must, as is an approachable manner, and a talent for explaining ideas intelligently.
Usually businesses call in a consultant when a team needs expert direction to lead a more junior team, or require high-level experience before building a new type of product. Developing a process for learning about the client's business, their needs, and how they need help, will help the consultant deliver a solid plan of action to the client and the developers who need to build the software.
If your business is trying to decide between hiring in-house developers, or consultants, you need to answer the following questions:
- Do you have technical leadership in your company?
- Do you have plans to grow out a technical team?
- Are you prepared for long-term financial cost of a development team?
- Does the project require long-term development?
If you answered yes to all of the above you are in a position to hire developers in-house to meet your business needs.
If you answered no to the first question, and yes to the rest, you risk incurring financial and technical debt if you hire developers without a CTO, VP or Director of Engineering level person. As we explained in the article, managing a project requires years of experience, and an understanding of how the technology will impact the business. Unless you're willing to hire technical leadership, working with a consultant is a smarter, more affordable solution for your project.
If you answered no to all of the above, you are in a great position to have a consultant learn your business, translate your goals into an action plan, and manage the entire process from strategy to development and delivery.