Blog

Understanding Software Development and making it work for your business

One of the most common misunderstandings about Software Development is that it’s a logical, straightforward profession. Stakeholders expect to give the developer their list of requirements and receive their imagined product in a predictable timeline, much like you give an accountant a list of expenses and incomes and expect him to come back to you with a budget. However, this is often not the case. It’s not just that software development is hard, this has been known since the 60s and many solutions and workarounds have been found. In this article we explore FORWARD’s vision to help you understanding Software Development and making it work for your business.

Quantifying velocity

A common problem that should be familiar to any project manager for a software development team is the inability to measure the team or a team member’s velocity. Many approaches have been tried over the years such as measuring lines of code written, measuring the number of commits made or measuring the amount of tickets completed. Nowadays we mostly try to dance around the issue by using an abstraction such as story points that’s no longer directly tied to any real-world metric. Yet while this practice is becoming more widespread, the fundamental underlying principle that this practice is based on is still not widely understood, especially by people unfamiliar with the software development field.

Software development is a creative pursuit

While it is true that logical reasoning skills and technical knowledge are basic requirements to get into the field, what makes a good developer is creativity. Creativity is what allows you to solve a problem in an elegant and efficient manner, to translate vague requirements in concrete functionality, to work around technical limitations. As architects and technical leads at FORWARD, when we want to assess the skill of a developer, we don’t look at the amount of code he’s written, the functionality he has delivered or the tickets he has completed. We look at the code itself. If it’s beautiful and elegant, we know the dev is fast because he’s solving problems in an efficient manner and he takes joy in his work. No one works faster than the person who enjoys what he’s doing.

Encouraging creativity

Many more traditional companies have looked with amazement at the pampering of developers at Silicon Valley: recreational rooms complete with arcades, ping pong tables and other facilities are provided for employees to use at their leisure. Some might believe that these perks are solely offered in a bid to attract talent, but it’s been found that these perks actually increase productivity. A developer with a spark of inspiration can be more productive in one hour than a developer banging their head against a problem for 8 hours. Here are some tips to stimulate creativity and embrace the art and science of Software Development:

Focus time

Ensure developers can work on problems uninterrupted. Modern communication tools like Slack are a great help, but they’re a double-edged sword. It’s all too easy to just shoot someone a quick question, but the productivity cost is actually much higher than the two minutes it takes to answer. One way to mitigate this is to reassure people that it’s ok to answer questions when they’ve got the mental headspace for it and to encourage them to mute communication channels when needed. Avoid wide broadcast messages like the infamous @channel. We like to tackle this issue by providing dedicated consultants as points of contact for our clients, leaving our developers free to code away.

Avoid inefficient meetings

Nothing is more mentally draining than a meeting that goes on longer than it needs to or isn’t needed in the first place. This is a known issue for offices worldwide, but for software development specifically make sure that requirements are clear and documented before starting the meeting. Whatever you do, don’t invite developers to long meetings “just in case” they need to answer a technical question. We prefer to sit together with you and understand your business needs, using our architects and technical leads to ensure technical feasibility before getting our developers involved.

Positive work environment

The best way to encourage creativity is to acknowledge it. Treat your developers as the talented and creative minds they are, not like laborers that slave away at a keyboard. Guard your developers against stress and put their accomplishments in the spotlight. Listen to their ideas, whether it’s about the product, the project or the company. Take the abstractions of software out of the screen by giving architectural diagrams a prominent space on the work floor.

The work itself is the reward

All the above is ineffective if the developer is not challenged and intrigued by his work. Talented minds will and should move on to projects that take advantage of their capacities. Less assertive people will simply get burned out. Avoid giving repetitive tasks to developers, avoid inefficient reiterations of the same feature because you cannot decide on the requirements. Distribute complex tickets among the team, don’t give everything to your most senior profile. Don’t pigeonhole people into over-specialization, give everyone a chance to work on all aspects of the project.

Keys to success

We haven’t yet tackled our main issue “How do I ensure my software project delivers on time and within budget”? What should be clear though, is that there is no silver bullet. There is no single metric or set of metrics that you can monitor and take predefined actions on to ensure smooth delivery. Instead, we should focus on the following:

Building trust

Trust goes both ways. Trust that your team has good intentions and they will entrust you with the issues they encounter. You need the insight of the team itself to evaluate the performance of the team. Build this relationship by getting everyone on the same page. You’re all working towards the same goal: delivering an awesome product.

Be lean

Your required functionalities should be split up as much as possible, this enables you to spot issues sooner and makes you more flexible when shifting around scope. Your project should be aimed at delivering a Minimum Viable Product (MVP). Remember that it’s better to deliver a functional product with minimal capabilities than a non-functional one. Fit your business processes to pre-built or declarative tools rather than customizing the tools to your process. Our consultants can help steer you towards industry standards and best practices and avoid unnecessary or unvaluable customization.

Be agile

Unexpected issues will occur during development. Some tickets will take longer than expected, some shorter. Requirements will change. Be prepared to deal with this by keeping the timeline and budget up to date and adjusting the scope as needed. Define critical or must-have functionalities and order the rest of your requirements by priority based on the business value they will deliver vs the estimated amount of effort required. Implement a buffer in your budget and timeline. Setting all of this up ahead of time will enable you to add and remove scope from the project as the velocity waxes and wanes without spending countless hours in meetings while development grinds to a halt. As part of our services we also have different tiers of Project Management offerings to help you manage this.

Spotting issues

Instead of trying to measure velocity, try to optimize it and trust that the team will deliver.

  • We keep track of how much time our developers actually spend developing versus meetings, rituals, answering questions, chasing people because requirements are not clear or dependencies are not met, doing routine maintenance,…
  • We investigate why tickets are rejected by QA and UAT.
  • We track scope that is added to the project.
  • We will challenge the business value of your requirements.
  • We do all of this to make you aware of risks threatening your project’s delivery.
The Product Owner

You might have wondered to yourself who can and should have these responsibilities. This role is typically labelled the Product Owner (PO). A strong PO is instrumental to a project’s success. These are essential characteristics a PO should have:

  • A mandate from business to decide scope and priority
  • An understanding of the project methodology (e.g. Agile)
  • A strong understanding of the business requirements
  • Knowledge of the sector and how to create business value
  • A basic understanding of the project technology
Conclusion

Software development continues to be a problem that vexes companies as they see their budgets overrun and their deadlines missed. The unpredictable nature of development needs to be accepted, as it’s a creative undertaking. Few people question why a logo can cost anywhere from $0 to $625000. However, a smooth delivery can still be guaranteed with a trusted implementation partner, powerful declarative tools such as Salesforce and an Agile approach to project management. We build that trust with you through our honest and transparent communication policy. We look forward to delivering an awesome product with you. Let’s get in touch!

Tags
Commerce CloudSalesforce
Share

More information about this topic?

You can contact

Forward newsletter

Sign up for our newsletter to receive updates, relevant cases and upcoming trends. Get inspired!

Explore the latest stories on our blog arrow_right_alt