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.
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.
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:
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.
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.
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.
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:
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.
Lofty Labs is helping businesses solve problems with software solutions.