Development, Testing, and Quality Assurance

How important is it that your software runs correctly and to spec? For most software it is of the utmost importance. One of the Joel Test 12 is “Do you fix bugs before writing new code?”. Smart development, testing, and QA help prevent bugs in software.

Fixing Code Before Production and After

Fixing code before it goes to production will save you time. I have had bugs that would have taken 30 seconds to fix before going to production that I spent more than a week on fixing after it went to production because it messed up data in another system.

Ways to Prevent Bugs

One of the big things in the programming industry in recent years has been unit testing(and integration testing, TDD, BDD, etc.). Testing is good! It helps find bugs before they are a problem and helps developers make changes in important parts of the code base and have more confidence that they aren’t causing problems in other parts.

If I had a dollar for every time I was asked if I’m writing unit tests why QA is needed, I would definitely have a few dollars. Very simply, QA finds bugs that unit testing does not. Unit and integration testing catch many things, but even though I keep making better software, users will always find a better way to break software.

Featuritis(Scope Creep)

Scheduling software is hard. Estimating software is hard. Deadlines in software are hard.

When someone says “we need this thing you estimated for 4 weeks in 2” the question is “what can we cut or push back into another release?”

Not managing the scope creep situation well ends up with:

  1. Increased Costs: Scope creep can lead to increased costs, as additional resources and time are required to meet the new requirements. This can impact the project’s budget and profitability.
  2. Delayed Timelines: Scope creep can also lead to delayed timelines, as additional work is added to the project. This can cause frustration for stakeholders and can have a negative impact on the project’s overall success.
  3. Reduced Quality: Scope creep can also lead to reduced quality, as developers may be forced to rush to meet the new requirements. This can result in code that is less efficient, less secure, and more prone to bugs and errors.
  4. Disruptive to Team Dynamics: Scope creep can be disruptive to team dynamics, as team members may become frustrated with changes and additional work. This can impact team morale, productivity, and collaboration.

Here are some ways to avoid scope creep in software engineering:

  1. Clearly Define Project Scope: Clearly defining the project scope at the outset can help to avoid scope creep. This includes identifying key objectives, deliverables, and timelines, and outlining a plan for how they will be achieved.
  2. Communicate Effectively: Effective communication between stakeholders, team members, and project managers is essential for avoiding scope creep. This includes keeping stakeholders informed of any changes or updates to the project and maintaining open lines of communication between team members.
  3. Manage Expectations: Managing stakeholder expectations is critical for avoiding scope creep. This includes setting realistic goals and timelines, and being transparent about any potential challenges or roadblocks.
  4. Document Changes: Documenting any changes to the project scope can help to avoid scope creep. This includes maintaining a detailed project plan and updating it regularly as changes occur.

You’ll notice that managing expectations and communicate effectively are basically the same thing – that’s on purpose. Communication is the most important part of the software engineering process.