Programmers discussing code. | © Getty Images |
By Mark Roy Long, The Blueprint
Anyone who's sat through a software demo knows that, according to the
sales rep, there's nothing their application can't do faster, cheaper,
and better than anything else on the market.
A substantial gap
exists between promises and reality, though, so as your software demands
become more granular, you may decide to develop your own application
from scratch.
Whether you use an in-house software development
team or a third-party solution, software projects have their own
particular concerns. We'll go over their ins and outs and the steps to
successfully complete a software development project for your small
business.
Overview: What is software project management?
Software
project management is a sub-discipline of project management. Software
development projects increased in the 1970s and 80s and originally
relied on existing project management plans.
Missed
deadlines due to miscommunication between developers and end users
became a recurring issue, so new project management methods came into
use that focused specifically on software development.
The software development life cycle (SDLC) uses the waterfall method,
a step-by-step iterative approach, instead of reiterative processes
common in other types of projects. The SDLC's six-step method allows
programmers to remain focused on user-expected outcomes.
The six software development steps -- planning, analysis, design, implementation, testing and integration, and maintenance -- are shown in a circular diagram. | © Provided by The Blueprint |
The software project life cycle
requires end users to clearly identify their needs and expectations;
otherwise, backtracking to change or expand the project's scope can
result in significant time lost.
Software development projects are increasingly using the agile method, which is more flexible and open to change, but it's prone to deadline issues, which can be a problem when timelines are tight.
What to consider when managing a software project
Be
mindful of these considerations before and during each software
development project to maximize your return on investment (ROI).
1. Conduct an initial feasibility study
Many
projects address clear needs with easy-to-see results: construct a dam,
set up an e-commerce system, or develop and implement a marketing
campaign. Software deliverables can be fuzzier depending on end-user
expectations.
A feasibility study can help head off potential
problems before starting your project. Are user expectations realistic?
What are user needs versus wants, and what’s the cost? Your project
shouldn't reinvent the wheel, so is there existing software that meets
user requirements?
2. Worse is better
The "worse is
better" software development principle states that quality doesn't
automatically increase with functionality because at some point, reduced
("worse") functionality is preferable ("better") to usability. A
corollary idea is "keep it simple, stupid" (KISS).
Scope creep
derails many software development projects, so remember both
principles. Instead of trying to wedge in every possible request and
feature, focus on the minimum functionality required to meet your
defined objectives.
3. Use a cross-functional team
You may
want to lock a group of programmers in a room until they're done with a
software project (or have built a robot that can do it for them), but a cross-functional team produces better results.
Beyond
the project manager and coders, incorporate team members skilled in
business analytics, user experience, regulatory compliance, and data
security. Their perspectives provide a holistic project overview and
help prevent groupthink.
How to efficiently manage a software project
According to the Project Management Institute (PMI), 14% of information technology (IT) projects fail outright,
31% don't achieve their goals, 43% go over budget, and 49% finish
behind schedule. Create your own success story with these steps for
managing your software project.
Step 1: Create a detailed plan
Once your feasibility study shows your project is realistic and satisfies an unmet need, begin your IT project management planning. Defined goals, processes, and responsibilities keep your project moving forward and avoid backtracking.
IT project management planning tips include:
- Be SMART: Formulate goals, schedules, resource allocation plans, and other project elements that are specific, measurable, achievable, realistic, and timely (SMART). A little upfront effort to define your activities and outcomes can help you avoid headaches later in the development process.
- Write a software requirement specification (SRS): An approved SRS document forestalls any future disagreements about your team's deliverables versus original expectations.
- Use project management software: Software development projects are too complex to manage on an ad hoc basis; instead, use project management software (or Gantt chart software) for scheduling, project communication management, and tracking expenses.
Step 2: Hire the right software programmers
"Programming"
is a catch-all term that doesn't reflect the discrete activities your
software designers and coders undertake during development.
Common design and programming areas your SRS may require include:
- User experience (UX): The logic and layout of the user environment
- User interface (UI): The visual presentation of the user environment
- Back end: Server-side programming elements
- Front end: Client-facing programming elements
- Desktop: Applications that run on your desktop
- Mobile: Applications that run natively on mobile devices
- Software Development Engineer in Test (SDET): Programs written to test applications in development
Step 3: Test, test, test
Testing identifies where
your software could, or will, fail due to user actions or general
performance issues. A test plan using a formal test script generates
consistent, actionable data to make necessary changes and updates.
Testing has two basic categories:
- Functional testing: The way software features perform in tests using specific inputs and examining the resulting outputs.
- Nonfunctional testing: The way software performs independent of individual features in different testing situations such as load, stress, reliability, and security.
Functional and nonfunctional testing activities are listed in an informal flowchart. | © Provided by The Blueprint |
Testing is never a one-and-done activity. Ongoing testing is required
pre- and post-release to monitor software performance and identify
potential problems before they impact the user.
Step 4: Implementation and integration
Software
implementation requires a structured method for integration with
enterprise networks and end users. You don't want your new software to
crash, and you don't want it to affect the performance of other systems
and applications.
- Employ a phased approach: Don't roll out all software features at once, especially for initial user testing. A phased approach allows you to introduce baseline functionality and check performance before adding more features.
- Use beta testers: Select a group of beta end users with varying skill levels. All users, regardless of knowledge or abilities, must use your software, so solicit their input early on to avoid glaring issues later in the development process.
Step 5: After action review (AAR)
Your
first software development project is unlikely to be your last. A
terminal project management report that captures what worked well and
not so well in an after action review (AAR) is critical for future
projects.
Collect two types of information:
- Quantitative: This objective data is expressed numerically and includes measurements such as days ahead/behind schedule for project milestones, actual expenditures versus projected budget, and customer satisfaction (CSAT) scores for the final software deliverables.
- Qualitative: This subjective data is categorized by different characteristics or trends and includes team member and stakeholder answers to open-ended questions asked via surveys, individual interviews, or group meetings.
Plan the work and work your plan
Software design and development projects have unique considerations beyond project management basics.
These concerns are not insurmountable, though, and effectively managing
software projects comes down to careful planning, collaboration, and
communication.
See more at The Blueprint