TDD is the process of writing automated tests to ensure that code works before writing the implementation. You write a test, watch it fail (red), write the implementation, watch the test pass (green), and refactor if needed. Repeat the cycle as you build out the system.
The process has been studied in depth and has proven itself to be very useful to increase the quality of software. But did you know that it also saves organizations a lot of time and money?
One of the primary reasons managers cite for waiting so long to implement TDD is the cost. It’s common for initial project build-outs to take up to 30% longer with TDD.
What those managers need to know is that TDD reduces production bug density 40% — 80%, and that makes all the difference. More bugs in production lead to a dramatic rise in maintenance costs.
According to the IBM System Sciences Institute, fixing a production bug costs 100x more than fixing a bug at design time, and over 15x more than fixing a bug at implementation time.
Using these figures, let’s look at the relative costs of a fictional project with and without TDD. The project will take 1,000 hours of up-front implementation without TDD, not counting maintenance:
In our fictional example, we saved 623 man hours, or, for a team of 4, about a month of development. If each developer is paid on our yearly average ($30k) and factored an average of 30% on top of developer’s cost to cover benefits, we reach a savings of almost $10,000 USD.
Of course, this is a fictional example making a lot of assumptions. Your mileage will vary based on lots of factors, including your team’s experience with TDD, the presence or absence of other quality measures (such as code review), etc…
Here are the assumptions made:
- Production bugs without TDD: 100
- Production bugs with TDD: 40 (60% fewer, middle ground between 40% — 80%)
- Average time to fix bug at implementation (TDD) phase: 1 hour (this number is only used to derive the production bug fix cost)
- Average time to fix a production bug: ~15 hours
Playing with any of those variables will obviously alter the results. What is pretty certain is that TDD saves time & money as maintenance costs get factored in — a lot of time & money.
The relative results of this fictional example ring true to me based on my experience with real production projects, both with and without TDD.
Code Reviews Have Similar Effects
Code reviews have similar effects. In fact, some studies have found code reviews are more effective than TDD. According to a 1988 study, each hour spent in code review saves 33 hours in maintenance.
That’s pretty extraordinary, but the bug catching benefits of code reviews just don’t live with my personal experience. I find automated tests far more useful at catching bugs — so how do we explain the extraordinary effectiveness of code reviews?
Knowledge sharing. When you employ code reviews, your team self-corrects when developers are using anti-patterns and other poor practices. At the same time, they’re sharing effective patterns, teaching each other better ways to do things, and teaching each other how to write more readable code.
The net result of that is that your junior developers quickly rise to the level of the smartest developers on the team, and your whole team velocity improves. It’s hard to over-state the value of a mentorship culture on your team.
The Cost of Interruptions
Why does it cost so much more to fix production bugs? Because once a bug reaches production, the cost is much more than the simple cost of fixing the bug.
Fixing a bug in production is much more expensive than fixing a bug during development. To understand the magnitude of the difference, you must first understand the cost of interrupting a developer.
A production bug fix frequently means an interruption in the context and cadence of feature development. In other words, developers are pulled out of the context in which they’re currently working and dumped into the context of the bug, where it takes a time to absorb the related code and flow, diagnose a root cause, fix the bug, and then reabsorb the context of what they were working on before.
Each context switch can cost up to 20 minutes of developer productivity, but the bleeding doesn’t stop there. Interrupting a developer to fix a bug is likely to cause more bugs in the code they were working on before they were interrupted. According to Microsoft Research, an interrupted task takes about twice as long to complete and contains twice as many errors as an uninterrupted task.
In other words, the cost of fixing bugs that get released in production isn’t just about the cost of fixing the production bug. Interruptions increase the cost of current development work and introduce more bugs that will eventually need fixing, too.
On a related note, multitasking is a really bad idea. To be productive, developers need to focus on one thing at a time.
The next time somebody tells you they don’t have the time or budget for TDD or code reviews, tell them with confidence, “in that case, you really don’t have the time or budget to skip TDD”.
Many years of my experience in web and mobile development, including complex and often risky quoting processes I was involved in during my career at Stepin Solutions, has left me with the same dilemmas: how to accurately quote web projects? What time buffers should I assume? What risks to consider?…
The final quote sent to the client is based on the time estimate and aforementioned factors. I’m sure the same patterns are applied by the most of worldwide web agencies which struggle with clients requesting fixed-bid assignments.
What are the client-side results of fixed-price approach?
Quotes sent in by potential project managers are probably not free of overestimating. Let’s face the truth – in most of the cases it is the project managers who is more aware about the real costs and potential risks of a project.
Of course, years of experience in managing software projects allow to estimate resource needs more accurately, however even with the help of Nostradamus we are not able to predict every possible situation. And I’m positive there are more situations like this than characters in this article! Even solid track-record and extensive experience in custom web application development does not make it much easier to predict problems with various website components or with integrating the software with an external APIs.
Medium- and low-budget developments created with a help of open-source solutions such as Symfony or Drupal or Magento can be delivered within accurately prepared estimates and without major issues. On the other hand, custom development can create complications and getting into more and more specific requirements brings unwanted project growth. And then, we either start to try and force-fit the project in the budget or debate on whether the requirements meet preset project scope or not. Instead of working on the real project development, we waste days or even weeks talking about it, negotiating and clarifying the specification.
What if the projects were charged by only actual time spent by the agency and their developers? What if we could forget the full specification and manage the project on the go? Impossible? Well, there is a way that make it easier – the Agile approach and charging projects by man hour costs.
The software is being developed iteratively (in so called ‘Sprints‘), and the goal of each iteration is the delivery of a product (e.g. a particular, predetermined set of software features). Each sprint is followed by testing and compatibility verified against business requirements. Successively, features or even the whole project can be redone or pivoted.
- Gathering requirements
Starting a project with creating a full specification means the crucial decisions are being made in the very beginning. Well, the question is whether we know enough about the nature of project at the moment. Changing requirements later can be difficult, not to mention how costly it can get.
Using Agile, we start working having only the business requirements and key features. The features are being adjusted after their core is created and when we have the essential information. Changes in the project are just a natural part of it in Agile approach.
- Financial risk
I suppose we can all agree that words “precise” and “long-term” assessment stay in opposite. During an estimation process we are forced to introduce project risk factors. Charging hourly rate eliminate potential risks because we cover only the real time spent to achieve particular tasks and goals.
- Common priorities
In fixed-priced projects the priorities of both sides, although common, can lead to a situation where the contractor wants to complete the project as effectively as possible in order to maximize its profit (which is dependent on spent man hours). On the other hand, the client desires a product of the best quality and the time frame is not of his concern, since it doesn’t drive any extra cost. What’s the solution to that? Decide on working with the best contractor and charge the project by the time.
- Meeting expectations
In the waterfall model, acceptances are made by stages, therefore it’s harder to track progress. Any changes made can mean throwing out parts of work already done. In the Agile model you can review the work results more often (sprints usually take weeks, rather than months), so we can track our expectations on the go.
- The project can be started earlier
In Agile approach we don’t focus on creating complex and full specification from the start. There are only particular business requirements and incremental work – from the general key features to the details. Everything is more clear, the documentation is rather simple and comprehensible as it covers only the particular iteration.
- Tracking progress and verifying requirements
In fixed-price approach the project is verified by the client after certain stage is fully complete. In fact, we don’t have a possibility to verify the requirements as they go. In Agile model we track progress constantly, we are well informed and have full transparency in terms of requirements, especially those financial.
- Changes in the project
Charging hourly rates allow us to change priorities at all times. Agile gives us full control – we can pause what we do at the time and simply change direction. Constant tracking of the outcome enables us to improve the project on the go – sometimes the best ideas come up in the middle of the work. Agile makes them real without the necessity to renegotiating, meetings, quoting and futile documentation.
- In the end, it’s… cheaper
That’s right! As I mentioned before, when charging fixed rate, the agency must calculate any risks and problems, what can lead to overcharging. Charging hourly rate is actually cost-effective, because the client pays only for the real work done.
- The time we don’t track
Discussion whether a particular piece of the spec means this or that is a waste of time. Have you ever calculate time spent on discussions and negotiating? Not to mention planning every little detail of the project before starting it.
OK – I believe I’ve done my best to convince you to charge projects hourly, using Agile methods. I’m sure that during the next initial negotiations it’s very likely to hear following question:
“Agile is great, the sprints are awesome, that’s it – let’s do it! But first I need to hear how much it’s going to cost?”
There’s no way to charge by fixed price in Agile – it just doesn’t work like that. I’m aware, though, that cost must be somehow estimated, so it’s always helpful to conduct couple of workshops and specify business requirements (having a list of user stories and wireframes help a lot to determine estimates). With a help of workshops and tech-planning and project analysis it allows us to estimate the number of sprints (cycles) required to deliver the outcome by a particular team and pre-calculate the cost. We can also give a range to the client based on how many cycles a project of similar nature normally takes.
Mind that nobody can promise the estimates which match the final budget. There’s no way to predict any modifications or the elements that would need further discussions. Full transparency and control is crucial to approach the project holistically, especially from the financial perspective.
Sound good, doesn’t it? Well, another doubts can arise – what if…
“If I pay for each man hour, how I can be sure that they won’t tweak the hour count?”
A diligent analysis of the potential project manager is crucial. A product of the highest quality that fully meet client’s expectations can only be made by a team we fully trust and the team than can have proven track-record.
What to consider when choosing an agile development agency?
The size and the experience. If the agency runs for years and its portfolio shines with robust projects, delivered for trusted brands and employs top experts of particular competencies, it’s sure a way to go with. It’s always a good idea to reach out and get to know the tools the particular agency uses to track progress.
And if you’re searching for coding and programming partner, Stepin Solutions is the one which can be the best fit for your project.
So, Now what? If you will work with an experienced team like us whom you trust and ycan be a part of our development process, the success is sure. Agile approach following hourly rate is likely to deliver much better outcome than the fixed price projects.
At last we would like to thanks merixstudio for publishing this topic as its very important to clear this dilemma before starting a project and when clients are unaware about the risks involved with fixed costs. As we found merixstudio`s artical very useful for our readers we have published it on our site.
10 Advantages of Offshoring Software Development That Other Successful Companies Don’t Want You To Know About!
Discover the Secret of Saving Thousands of Dollars Each Month While Increasing Your Web and Mobile App Development Productivity
Here’s the ultimate ‘Offshoring Discovery’:
If you think about it Google hasn’t even reached its twentieth birthday, yet it is one of the fastest growing companies in the world. How is it that some companies seem to have accelerated growth and others have come out of nowhere to become leaders in a really short period of time. How do they do it?
Answer: Leveraging Time and Talent
They are not stuck in the old traditional (comfortable) ways of doing things. In fact some would say they are rule breakers or industry transformers. But, the one thing they all have in common is a Global workforce. They have figured out how to leverage highly skilled and talented people from around the world.
They take advantage of the world economy and provide great jobs in countries where the cost of doing business is much lower. They have figured out how to leverage the time zone differences to extend their days and get things done faster.
You can do the same for your department and your company. All you need to do is leverage the advantages of offshoring.
Top Ten Offshoring Advantages And How To Make The Most Of Them
Advantage #1 – No Real Estate
Where is the person going to sit? The cost associated with that desk space is a big consideration in the leading corporate cities around the world. The price per square foot in any major city in the world is a big factor in the overall cost of providing for an onshore employee –desk, chair, computer, etc. On top of that there is the time needed to find the space, negotiate the lease, and build out the space. Plus you need to be comfortable taking on the long term commitment. All are things that can slow you down.
When you setup an offshore development office you are not paying the high rents associated with onshore offices. Nor are you taking on a multi-year commitment.
Advantage #2 – Highly Talented People
For many companies a limiting factor affecting growth is the ability to find smart, highly skilled employees. There are smart people born everywhere, and many pursue a University Degree in Computer Science or Computer Engineering. The cool thing about computers is the language they understand transcends spoken language. Computer languages have a much smaller lexicon therefore allowing many people to understand and decode what is being done.
Advantage #3 – Different Time Zones
What began as a disadvantage, smart companies like Google have parlayed into a strategic approach that speeds development by creating a 24 hour development cycle.
Having developers work both onshore and offshore allows development to continue when one group finishes their day. Development speeds up as the project is handed off from one team to the next. Some additional management time and co-ordination between teams is required but the result is staggering. What would take 3 days to develop using a resource in a single time zone can now be completed in a day with round the clock development.
Advantage #4 – No HR Headaches
Have you ever wished that you could just have a conversation with someone about the type of people you are looking for, and they immediately got it. They then went off and wrote the job posting, prescreened all the candidates for you and then just brought you the list of candidates for you to choose from. That’s what happens when you work with an organization that manages the all of these details for you. An additional bonus is that you don’t need to get approvals for various job sites, salary levels, etc.
You establish your budget for your offshore team and then you’ll get just one invoice, which is a pure expense to the business. No need to manage payroll, or benefits.
If someone doesn’t work out it is then easy to release someone from the team with no HR issues.
Advantage #5 – Easy to Manage
Everyone wonders about managing people half way around the world, the key is to have your overseas staff working for one organization that takes care of all the basics like checking to see if everyone arrived on time and put in their full days work. What you need is while you are sleeping, someone else is watching over the team for you and creating for you the basic reports.
You get to focus on the tasks they are working on, the challenges they need help with you don’t need to deal with the petty little stuff.
Advantage #6 – Responsiveness & Scalability
As your needs change it is easy to change your workforce. When you need more people or you need to shrink your workforce you can just pick up the phone or send an email and say I need more or less. You are not managing space, infrastructure or employee termination processes.
You can also easily swap out someone that is not working out for you because the relationship is with the Offshoring Company you are working with. The relationship they have with you is larger than that one person.
Advantage #7 – Security, Control and Confidential Information
Having security, control and protecting confidential information is easier today. With today’s technology it is easy to setup a VPN or virtual private network access or VDI virtual desktop access to your current infrastructure. This gives you full control over the access to your systems. You can even install monitoring software that lets you check-in on people from time to time and see what they are doing with or without notifying them.
Advantage #8 – No Hidden Costs
When you have a dedicated team of developers offshore that is provided to you through one provider you pay just one price per month: there is no hidden costs.
When you hire for a project, you often run in to additional costs because of natural evolution of change as the code moves through the normal testing and release schedule of alpha, beta, release candidate, live.
Advantage #9 – Culture
When you outsource a development team (rather than a project team) you can indoctrinate them in your corporate culture – Wear the logo – etc. They become your employees, they know your standards and understand what it is that you are trying to accomplish. This naturally leads to a better outcome. You know this to be true. Your best developers are the ones that have bought into the company goals and culture. It is no different when you move development offshore.
Advantage #10 – Continuity – Same Resource – No Retraining
When you hire an offshore development team they are your team dedicated to you. As the scope of the project changes it is no different than how you manage your home team. As new projects arrive, you assign them to your team. These are the people you are comfortable with and you have developed trust in.
When you work on a project basis when the project ends the team is disbanded and moved to other projects. You may or may not be able to have the same people.
Take the next step…
Get any and all of your questions answered about offshoring at Stepin Solutions, simply email at firstname.lastname@example.org to schedule time to get any remaining questions you have about offshoring answered. We have an experienced web and mobile development team. And if you need a dedicated developers we will reach out to you to achieve your dream by providing a full stack development team.
Do you think mobile app development needs API support for flexible, light weight and robust application development? If you don`t have any idea about it then you are at the right place to be aware about the truth and hidden scenes.
APIs, or “Application Programming Interfaces”, have revolutionized the way that we use web and mobile applications by allowing computer programs to talk to each other. Because of this revolution, software development and innovation has periodically sped-up over the last 10 years and apps get integrated and communicated in an amazing new ways.
What is an API?
We use our PCs, laptops, mobile phones and tablets very day to communicate with our friends, family and colleagues. But how do computer programs communicate with each other?
Being a Trusted Mobile app development company, we have been asked questions like;
– How to Build an App Like Uber?
– How much does it Cost to build an App similar to Uber?
– I want to build a Taxi App similar to Uber. How can we go about it?
Being a responsible solution provider we thought to bring you the exclusive information which helps to answer all above questions.
Uber, being released in March 2009 has changed the way people think of a Taxi and Transportation services worldwide. Despite the fact that it’s in the market for almost 7 years — market there is still pretty competitive. Things that matter are the quality of the services (such as price, cars quantity, on time delivery, etc…) and the usability of the application itself. Also, you should not forget that we are basically talking about 2 apps instead of 1, as there is one app for a driver and the other one that is used by passengers. To keep things under control you would also need a web based admin dashboard.
Many Digital Agencies are winning with Remote Developers. Here are the ways to do it at your own.
If you own or manage a digital agency, you would agree to the point that hiring the appropriate talent is critical to your success. But hiring the most suitable developer isn’t that easy as demand often exceeds the supply of talent in many cities.
Many agencies have started hiring remote developers to overcome the shortage. These agencies are getting ahead of the competition by ensuring they have their required talent to help their clients.
According to current research 20% (or 1 in 5) of agencies are virtual and over 80% of them agreeing that using remote employees improves productivity.
There was a time when people used to travel around the world with guide books, maps and different awkward printed material; that era has died out. The future is always on: it is portable and always in your pocket in the form of a smartphone or a tablet.
As a result, the relationship between travel and technology has become closer than ever, with more and more businesses turning to mobile apps to promote their services and reach customers in a more personal way.
The travel and tourism are a huge 6.3 trillion dollar industry according to the 2015 statistics. A huge part of this success has been played by mobile apps. As the partnership between the tourism industry and technology grows, both of them have earned several grand slams and much more are on the way.
Google launched a major update on April 21st which was about extending the use of mobile-friendliness as a ranking signal throughout mobile search results. This change will affect worldwide mobile search results in all languages, and Google says it will have a “significant” impact.
To be precise, this update involves 2 things.
- It basically separates Google search results for Mobile and Desktop where in Mobile search results, mobile friendly websites get significant advawill be ranked higher.
- This is not as significant as 1st one but it is better to know that from now on, in google search results you will occasionally see content from installed app on your device.
As you can see out of the 2 updates launched, the one with mass impact is about considering mobile friendliness as a ranking signal. Let’s talk more about the important one then.
If you are thinking of developing a mobile app, an important decision is to decide whether you want to a native app or a hybrid one. Choosing to use native or hybrid mobile application is always the pain for everyone who wants to make their mobile apps.
From our experience working with mobile app development we have narrated following inputs which we feel will be useful for you make a decision.
Native apps are specific to a given mobile platform (iOS or Android) using the development tools and language that the respective platform supports (e.g., Xcode and Objective-C with iOS, Eclipse and Java with Android). With Native apps, you have complete control over features you want to implement in an app. In terms of overall performance which includes look and feel, using device features etc. Native app is best.
Is anyone having a justifiable definition of Code Quality? We don’t think there is a good definition, and We see plenty of bad definitions. There are many definitions for Correctness. But don’t be nervous we have correct examples of code ethics.
Our definition of code ethics is term used to depict the speed and programming methodology used in developing codes for software. Code is directly linked with algorithmic efficiency and the speed of run-time execution for software.
Let’s make it simple, in simple words code must be Economical. No worries we will elaborate you more.