Unfortunately, a large percentage of software development projects fail. These statistics can often be daunting to someone taking on a new software project. That’s why it is important to understand the definition of failure as it is different for every project, and is based on who is defining the success or failure. For example, to a business, the definition of failure might be
Needless to say, if you have a lot of bugs in the software, your customers won’t be happy. Since developers are notoriously poor at testing their own code, it is up to you to ensure that the program gets tested. This might mean you wind up doing the testing or might mean you have to hire a QA (Quality Assurance) tester/team.
The key to dealing with defects is to find them and get them fixed early. The longer it takes to find a bug and the further it gets into the development life cycle, the more costly the defect.
The chart below shows the relative cost to fix a bug at different points in the lifecycle. Note that it is not linear and the cost increases significantly the further the defect gets in the development process. Think of all the people that get involved later in the cycle.
While putting together some more information for a book and workshop on website performance optimization, I did some research on tools to help with the process. The goal was to find a cost effective way to analyze and fix my websites in a way that minimizes the time I spend on the process. While many of the tools referenced are free. Some of the tools you have to pay for end up being more cost effective because they save you a lot of time. If you value your time, then you can easily rationalize paying for some of these tools.
Before getting into the tools, I want to briefly cover the 5 step process I go through while evaluating and improving an existing website:
1. Determine if this site is worth saving
2. Fix W3C Validation issues
3. Improve page load performance
4. Improve Security and accessibility
5. Improve SEO and marketing
The main intent of this article is to show you some tools that help you to quickly and effectively optimize a website for performance and security using a process similar to the above. The tools will be broken into 7 main types and covered over 3 blog posts:
1. All in one
2. W3C Validation
3. Page load analysis
4. Mobile friendliness
7. SEO and Marketing – not covered in this article
It is important to give deep thought as to what you want to accomplish with the software. If you tell a builder that you want a building and give no other amplifying information, what do you think you would get? Would you get a house, a garage, an office building, or something else? About all you can be sure you will get is a floor, roof, walls, and doors. Now suppose you tell them you want a house. With this increased specificity, in the US, you are likely to get a building with a kitchen, bathroom(s), living room, and bedroom(s).
This is still far from enough information to be sure you and the builder are thinking along the same lines. You could be thinking the White House and they could be thinking a starter house. The more detail you give the builder, the more likely you are to get what you want. This same concept applies to developing a software product.
When you are looking for a developer you should keep the following in mind.
First off, the developer should be experienced. Experienced developers have already made a bunch of mistakes and hopefully learned from them. The inexperienced developer will be learning on your dime. Experience will help them make the right tradeoffs for your situation.
While the new developer may be a quick learner and may be willing and eager to do the job at what seems like a good rate, you will pay for the inexperience in the long run. The odds of the project running way behind schedule and having hard to correct costly issues after release will be much higher. You may find that your project costs you more; especially if you have to then bring in the experienced developer to fix the issues.
How does one define success and/or failure when discussing software development projects? Well, it depends on who you’re talking to. The end user’s definition of success will most likely be quite different than the business who is paying to develop the product. Let’s look at an example of what a business’s definition of success might be
The project meets the needs of the business unit at the desired price and the specified time frame.
Very few projects succeed on all of those fronts – functionality, time, and money. You could in fact fail by that definition, but still have many happy users. The point here is that even with happy users, you may not get more work from the business because the person paying your bill might not like the cost overruns. I’d venture to guess that most software development companies would view this scenario as a project failure.
If you do a lot of networking, you end up with a lot of business cards. How often do you set these cards on your desk or in a drawer with the intention of adding them to your contact list or CRM system? How often do you really get them entered into your system within a couple days? If you are like me, many of those cards still haven’t made it into your contact database.
A couple days ago I was meeting with someone to discuss their business needs. I was doing some research to determine what functionality we need to add to our business management application to make it a winner. She mentioned that she has an app on her phone, CamCard, that she uses to scan in the business cards. However, she has no way of getting these cards into her contact management system.
Are you interested in having your own software product created but don’t know where to start? Or maybe you have tried it in the past and have run into many issues. If you would like a guide to help you navigate the potential pitfalls of software development, then download the “Developing a Software Product”.
The download is free and there is no obligation. We don’t even ask for an email address unless you want us to send you updates to this continually growing guide.
Walling Info Systems had the pleasure of working with Columbia, SC based software development company, Softdocs this year. We were tasked with creating a website updater application to help Softdocs better serve their existing and future clients. The application allows users to quickly update their existing websites by a simple click of a button. This enables Softdocs to continue to provide their clients with exceptional customer service without inconveniencing their day to day business schedules. The client updates their websites whenever is most convenient for them.
Walling Info Systems had the pleasure of updating an out of date golf league management software application for Twilight Golf League located in NY earlier this year. The application was so out of date that it was only able to run on Windows versions prior to XP. Twilight Golf League uses the software to keep track of overall team scores, handicaps, match results, etc. Our job was to rewrite the software making it compatible with newer versions of Windows operating systems.