Summary: As technology evolves, web application development is playing an increasingly important role in the business world. More and more, application development speed directly contributes to a company’s competitive advantage. The problem: Many companies still struggle in this area. Learn which problems slow them down, and how to fix each one.
In a Wall Street Journal article a few years back, Marc Andreessen explained “Why software is eating the world.” It’s hard to argue with him.
We see examples of software-driven companies ousting established companies on a regular basis. Do you remember what Netflix did to Blockbuster? Or, how iTunes revolutionized the recording industry?
It’s all part of a growing trend: More businesses are moving to the web. Those who innovate quickly with software are gaining a competitive advantage.
This doesn’t just apply to software companies. It affects everyone. For instance, what if you could deliver mobile apps to your sales team or customers before your competition? What if you delivered modern web applications to your business users when they need them?
Wouldn’t that give you a competitive advantage? Of course!
Yet, a study from Forrester finds that this isn’t happening. It finds that most IT executives focus on “keeping the lights on,” not innovation. It finds that business leaders believe that application development is too slow.
In short: We’re in an era where development speed creates a competitive advantage. Yet, most businesses still struggle in the area.
This begs the obvious question: Why? What problems slow down web development? Today, let’s focus on these issues, and uncover a few ways to correct them. Here are 7 common problems that slow down web development:
1. Communication between developers and users/clients
“I think the #1 problem is client communication and expectations,” says Aalap Shah, Co-Founder of SoMe. “If there is no clearly outlined scope, projects often slow down/come to a standstill. Or, clients perceive the project has slowed down because of many new items that they added to the scope after the project began.”
As any developer soon learns, coding is just a small part of web development. Clear communication with stakeholders and team members is just as important as good code. What exactly does “clear communication” mean? Communication boils down to a few key points:
a. Clearly defining the projects and goals up front.
Problems crop up because business users and developers aren’t specific, or use different terminology.
“I’d have to say the biggest problem that slows down the web development process is communication,” says Brandon Howard, Owner of Allmywebneeds.com. “There is often a disconnect between the client and the end developer because they each understand things differently. For example, the client often looks at the project from a marketing perspective. But, the developer looks at it from a coding perspective. The client will explain what they want. The developer will lay out what they can do. But, all the while they’ll be talking about completely different things.”
“A specific example happened with me a couple of weeks ago. With a past website project, I said we’d create a “web form that lets users type their information into fields on the site and then be emailed to you”. From a web development perspective that means we create a contact form on the web page that accepts user input and emails the site owner when the user clicks submit. Now, it’s causing delays in the project. The person I talked to thought we were going to have fields for users to enter their information, have it populate a PDF form, and email that pre-formatted form to her so she could print it off.”
b. Set clear expectations
Surprises are the last thing anyone wants in a development project. Developers must understand what they’re building. Users must understand what they’re getting. Last but not least, users must also understand the impact any mid-project change will have on the rollout date. As Shah explains below, up-front communication is key to project success.
“We work to solve communication problems with clearly outlined scope and deliverables, feature lists, and wireframes before we start development,” says Shah. “We also create a checklist to ensure that we have all the digital assets before the project starts. We often communicate that any changes made to the scope and work of the project may delay it all together. It’s better to have the tougher conversations up front vs. having a project that goes into perpetuity due to project requirements changed. Two-way communication is critical to avoiding any delays.”
c. Keep everyone in the loop
Once you have the specs and have communicated the goals to the users/clients, you can’t just go off the grid and work on it. Keep everyone involved informed on the project status throughout the duration of the project.
2. No alignment with the business need
Too many development projects start from a feature perspective, and not a solution perspective. A business user sees a feature or application they want, and requests it from development. The problem: This feature doesn’t solve a business need.
“The #1 problem we have found is that ‘the development didn’t align well with the business need,’” explains Koby Bryan, Managing Member, Koby Consulting. “In other words, people approach the project mechanically. They dictate features and benefits, and then when they start to flesh them out…they start to align them to a business need. What this means in development is the specs start to change. You start out cooking a chicken, then find out the client really wanted fish. So you get a chickenfish.”
“For instance, we had a client that put an internal team in charge of defining specs for a project – only to find out the team had different goals than the main decision maker. They were thinking in terms of ease of maintenance (make their jobs easier), he was thinking in terms of a new product for a compelling business need.”
3. Trying to release the ‘perfect’ code
What happens when a developer tries to build the “perfect” app? What happens when they try to build every conceivable feature into the application from the start? They never ship the product. Or, they ship it late and miss the boat.
“Trying to develop everything from day one is a sure-fire nightmare,” says Eran Eyal, CEO/Founder at Springleap. “Pick the core of your problem that you can do a release on and learn quickly (as well as A/B test). This way you can get the core of your model (the part that people will most likely interact with) correct. This saves you from spending a ton of time developing a complex system and waste runway/ funding on having to redevelop something really complex.”
4. Interrupting the Development Team
I’ve seen companies that almost live in the conference room. They have meetings about everything. They even have meetings to plan meetings (really).
The problem constant meetings create for development: It slows everyone down. Studies have shown that brains need about 12 minutes to re-focus on a new task. This applies not only to constant meetings, but even simple distractions.
“The amount of time it takes to context switch to a meeting and then back to development is more than most people realize,” says Tim Segraves, Co-Founder and CTO of Revaluate. “The solution is to try and schedule all meetings at the start or end of the day so developers can maximize their uninterrupted time to focus on the product.”
5. Scope creepHave you ever heard statements like this: “I love what you’ve done so far, but wouldn’t it be nice if it could also do (fill in the blank)?” Or, “How hard would it be to add (feature X)?” Or, “I ran the application by (person X) and they have some ideas for you.”
It’s the dreaded scope creep. The users change the app features, and then expect the project to still meet the original deadline.
“Adding last-minute functionality always takes longer than you expect, and tends to “break” other things,” says Karl Sakas, President of Agency Firebox. “This creates unnecessary pressure during an already stressful launch. Likewise, clients (or internal stakeholders) tend to under-estimate how long it will take to create content to populate a website or app. As a result, you can’t launch for weeks or months after finishing development because the product is “empty” of content.”
How can you avoid scope creep? It starts with managing expectations (as mentioned in the first point). Also, Sakas explains below how setting a cutoff date for new features will help curb this common problem.
“To solve these problems, manage client expectations up front,” says Sakas. “When it comes to last-minute additions, let stakeholders know at kickoff (and remind them along the way) there will be a “freeze” on new features. After a certain point in time, any new requests will automatically become “Phase 2″ items.”
6. Doing everything from scratch
While coding everything from scratch may be more rewarding, it’s usually a bad idea. With the available open source code, frameworks, and development tools, there’s little reason to code any web app from scratch. Not only does coding from scratch waste time, it results in inferior solutions.
“The most successful web developers understand a simple rule,” says Tyler Wassell, Software Development Manager at mrc. “Coding everything from start to finish is often unnecessary. They don’t to re-invent the wheel in each project. Instead, they use web frameworks or development tools. This eliminates the repetitive coding tasks and promotes stability, maintainability, and security. In the end, development is about delivering quality solutions in an efficient manner. Selecting the right tools will help save time and improve software reliability.”
7. Manual bug-finding
“Bug finding can be tedious,” says Adam Pilling, Technical Director at www.myhomeneedsthat.com. “Developers don’t enjoy doing it and it distracts them from progressing with development tasks. Outsourcing bug finding via websites such as odesk and peopleperhour can help increase the productivity of developers.”
Another way to reduce testing time comes from the previous point: Don’t do everything from scratch. Are you building a web site? Find a template. Are you developing a web app? Find a tool that comes with pre-tested templates. This approach eliminates much of the work because someone has already tested these templates for you. The amount of templates and tools available these days can dramatically decrease your development time.
So, what do you think? Is there anything you would add to this list? If so, please share your thoughts in the comments.