Software done right, on time, every time

About Us

Company Overview

Edge Software Factory is a niche software development company (founded in 2019) with offices in Woodmead, South Africa. Being part of the Edge Evolve group of companies, Edge Software Factory is a B-BBEE level 2 company.

At Edge Software Factory we believe in forming long-term partnerships with our clients, in order to assist them to achieve their strategic objectives. We broaden their competitive edge by implementing efficient, purpose-built technology and software.

Our Values

Regardless of the specific methods used to deliver an engagement, there are some values we hold common to all our projects. We aim to instil these in our teams, at all levels, as the foundation on which our practices and activities are based.

Focus on business value

In any technology project, success must be measured not in the achievement of deadlines or delivery of raw features, but rather in the delivery of value to the business.

To deliver business value we must understand the business and what it values. We must look beyond narrow measures of technology success and focus on what can be done to increase a project’s return on investment by thinking outside the project, delivering value quickly, and eliminating waste.

Quality in everything we do

Quality is not something that can be applied at the end of a software development project: it must be built in from the beginning.

In technology projects, quality assurance usually goes hand in hand with software testing. Testing is important, but we must maintain the focus on quality throughout the project life-cycle: in the way we write and evolve requirements, in our plans and solution designs, in code and other artifacts, and in the deployment of those artifacts. Above all, we must ensure quality of outcomes, not just of outputs: the solution must meet the needs for which it was built.

Simplicity

IT is more expensive now than it has ever been, yet IT spend is under increasing scrutiny. There are two solutions to this problem evident in current industry trends, such as the use of open source software, off-shoring and Service Oriented Architecture: reduce the cost of building and maintaining new systems, or stop building new systems altogether.

When we do build software, we must strive for simplicity. It is not about doing more for less, but about doing less for less. We should work in the most efficient manner possible to solve problems with the least amount of effort (and thus cost), pragmatically focusing on the activities that directly deliver business value, and avoid spending time on those that do not.

Again, simplicity applies throughout the project life-cycle. We will strive for:

simplicity of requirements, by not doing more than is needed and recording requirements in a way that can be understood by both the business and development teams;

simplicity in design, by choosing the simplest design that can possibly work, opening up the possibility of evolving the design as the project progresses;

simplicity in development, through patterns, reuse of existing code and components, and refactoring throughout the project; and

simplicity in method, by using the simplest method possible for a project and then adding more controls as necessary.

Collaboration

Continuous collaboration allows a shared understanding of the system to evolve as the system does, helping to ensure the final solution is fit for purpose.

We always aim to build cross-functional teams, comprising not just developers, but also business analysts, testers, project managers and business stakeholders. By avoiding a disconnect between those who build the software and those who specify, test and manage the delivery of it, we can shorten feedback loops and draw upon a diverse set of skills to deliver a better outcome.

Feedback

Stakeholder’s understanding of a project improves as the project evolves, be that the client’s understanding of their requirements, the developer’s understanding of the technology they are working with, or a project manager’s understanding of the team’s performance. It is important that such improvements are constructively brought to bear on the project. We achieve this by encouraging regular, positive feedback loops.

Timely feedback must take place between the client and the development team, between the development team and project management, and within the development team itself. The development process must explicitly identify and encourage feedback loops that allow both the solution and the team’s working practices to be improved in response to feedback throughout the project, not just at the end, when it is too late to change anything.

Commitment

Software development is a process that at times requires intense concentration, long hours and an injection of creativity. This is unlikely to result from a detached project manager dictating the tasks a developer should work on to meet the needs of a client even further removed.

Quality outcomes are much more likely to result from a development team individually and collectively committed to delivering a given set of features to the client. This requires that the developers are close to their managers and the client, and that the commitment that is made to the client is based on a shared understanding of the business value that will result from the delivery of, and the feasibility of delivering, a given set of requirements.

Commitment works best when it is focused around a tangible set of features being delivered for a near-term deadline. By working iteratively, we can make incremental commitments and back those up with a track record of regular delivery.

Visibility

There is sometimes a tendency to hide the development team’s progress (or lack thereof) from the business. This can lead to issues coming to light too late to be rectifiable.

An open working relationship between the development and business teams is crucial for effective risk and issue management. By working closely with the business and employing effective reporting based on actual implemented requirements, we can allow the business to have constant visibility of the project’s progress.