24
Wed, Apr
0 New Articles

Do You Know What the User Really Needs?

General
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times
The scene is familiar. Representatives from one or more of your company's business units draft a project request for a new system or system change. The document is at most two or three pages long, but it is laden heavily with vague, abstract phrasing that speaks to the author's familiarity with the request without regard to that of the audience. The project sponsors and IT staff sit around a table in a conference room and prepare to hand off the project to IT. The meeting is scheduled to last an hour, but it gets off topic within 15 or 30 minutes. The meeting adjourns, and IT is left holding the ball without a clear direction.

What happens now?

In a previous article, I discussed various approaches to software development. However, even the most refined methodology and error-free system will fail to meet the users' needs if requirements are not completely understood in advance and turned into appropriate designs. The phenomenon is more common than you may think. Even in an environment where developers possess valuable experience and applicable knowledge of the business to understand the big picture, this may not translate into complete comprehension of where the user is going with the request.

Any initial project request is likely to be brief. This is actually ideal, since lengthy, restrictive documents on the front end of a project invariably serve to eliminate flexibility and innovation on the back end. The request may make perfect sense to the users, many of whom are likely to have been discussing it for weeks or months ahead of time. Nevertheless, the IT department is likely to view it as vague. Therefore, the first priority of the development team is to acquire a complete understanding of what is being requested and why.

Performing sufficient comprehensive analysis is quite often a terribly ignored action item, and insufficient analysis is a common reason why so many software projects are doomed from the moment the request is made. Users and developers rarely speak the same lingo. Developers' tenure with the company or experience in an industry may provide a level of empathy, but their primary task is software development and all of the trappings that go with it. That is their world, and those are the elements they are mostly exposed to. It requires additional effort and a systematic approach to reach beyond this limited sphere of influence and connect with the users at a level that removes all of the barriers to identifying the problem.

A good first step is to isolate the people or areas impacted by the system. Do not assume that the two or three managers who gathered in the conference room have done proper due diligence. They have a need or desire, but that aspiration will have either a direct or an indirect influence on other areas. These impact points could be both internal and external. Any change made to a system could potentially cause a ripple effect that touches your company's customer base. System development should be client-driven. Before the first Visio diagram is created, you must spend sufficient time determining who is affected and how.

How do you identify who these stakeholders are? You will need to start talking to people. Speak with project sponsors, managers, users, and anyone whose involvement may be needed. And do not hesitate to ask them to help you identify other impacted resources as well. As you compile a list of these people and areas, determine the level of impact and whether the effect is minimal or critical. Eventually, you will have put together a solid list of people who must be involved with the development process.

Why did the user make the request? Is there a perceived business need for new functionality, or have your customers--internal or external--uncovered flaws that impact the bottom line? How will the business be impacted by the change or implementation requested? Uncovering the underlying reasons for the project request is imperative to building a solution. Root cause analysis is critical if you are going to develop a system that actually provides benefits. This process could involve long meetings, numerous people, and tedious code reviews, but it is time well spent. Ask as many questions as you need to in as many ways as you must to reach understanding.

Some approaches suggest that you identify the root cause before determining who the stakeholders are. The two steps actually go hand in hand. Part of your root cause analysis will uncover forgotten resources impacted by the project. Likewise, the discovery process of isolating the stakeholders will provide a glimpse into the intricacies of the system that will enhance your understanding of direct and indirect impact points and how they relate.

No system is boundless, and no development is limitless. Your ability to define and refine your system will be hindered by certain constraints. These could include financial considerations, available programmer tools, and schedule. The constraints frequently will be known up front, but other times you may have to dig to find them. You may not like them, but they are a fact of a programmer's work life. There is an upside, however. One element that continues to inspire many programmers is "the challenge." The system development effort may be handcuffed by business realities, but that does not mean the effort is doomed. These are the kinds of problems that programmers thrive on, so you should perceive constraints as an opportunity to develop or learn new techniques--not as an excuse to build inferior software.

Constraints, in and of themselves, also become the first basic requirements that must be documented. Any timing issue, hardware constraint, or other environmental constraints become part of the world in which the new system will exist. In this case, constraints are positive factors because they help define the system.

Requirements Gathering Techniques

You have identified the stakeholders and isolated the root cause and constraints surrounding the system project request. Where do you go from here? Now, it is time to begin gathering the requirements from which you will design the system solution. For larger development efforts, some shops require a standalone functional requirements document to serve as a clear, documented understanding between users and IT. This is an excellent idea for most projects, as it protects both sides should the system fall short of what is needed. The document should be presented to at least the project requestor and business sponsors on one side and the IT project manager and lead development staff on the other to collect physical signatures. The artifact should then be made available for all to view on a shared network drive for future reference.

How do you build the document?

One method of gathering requirements--and the easiest to facilitate--is to simply interview the users. Find out what their needs and expectations are. Be alert for the hidden agenda in their answers as this will lead to more probing questions, the answers to which will likely be included in the documented requirements. The IT resources used for this technique should avoid going into the situation completely cold. Remember that when you're interviewing a user in this fashion, the goal is to reach a solution. Be prepared. Use a predefined list of questions if you feel that it will help keep the interview on course.

Every user is different. Many will happily provide input, and most will be thrilled that IT has taken the time to actually consider their needs in the development process. There will always be some users, though, who either feel they have enough knowledge to dictate how the system will be built or prefer to keep their knowledge close to the vest and expect you to know the business already. Prevent yourself from biasing the users or their responses. Even the most difficult users will have valuable input if you place them in a situation that makes them comfortable enough to talk freely without feeling as if their time is being wasted. This makes the interviews more productive and makes it easier for you to get your head around what the needs and goals are for the system.

A second and extremely useful technique for gathering requirements is brainstorming. This can be intimidating if not done correctly. The object of a brainstorming session is to generate ideas, not judge them. Many of the ideas produced in this fashion will be far-fetched, but sprinkled in between will be valid system concepts such as features, scope, and system audit trails. A standard brainstorming session is conducted by a facilitator and consists of anyone who could provide a valuable contribution to the eventual system design.

Any brainstorming effort must include the understanding that no idea will be criticized or thrown out. All contributions are valid for this exercise, and nothing is too extreme. You look for quantity without filters or prejudice. Refinement will come after all options are on the table. Only then will you take the ideas and sort through them. The best way to record the ideas is on index cards or Post-it notes. This method is easy, and it provides anonymity for those who may have something to offer but tend to be shy in a "group think" situation such as this.

A third method is use-case scenarios. Developing use-case scenarios is a requirements gathering technique that works well when you need to illustrate system functionality. A full discussion of use cases is beyond the scope of this article, but they are worth mentioning here as an introduction. (To learn more about use cases, see "Java Journal: UML (Unified Modeling Language)" and "UML: Modeling in the OO System"). In this model, different use cases are developed for the "actors" of a system, diagramming how they would interface with the system and how the system reacts to their actions. An actor is not necessarily a person. An actor in this sense could also be an independent system that interacts with the proposed solution being designed.

A fourth method of eliciting requirements is to build prototypes. While it may seem illogical to begin building a model system without first obtaining all the requirements, prototyping does provide a way to illustrate the feasibility of a system and to provide a hands-on demonstration of impact points that may otherwise elude the developers and users. The responsibility for building the prototype does not necessarily fall with the developer. Users can develop a prototype as a way of providing developers a visual representation of their needs.

Prototypes are good for getting the audience to play devil's advocate. It is good to have them asking questions. What is wrong with the prototype? What are the flaws? Does it meet all of the needs? Will it function within the system architecture? Why or why not? Like brainstorming, prototypes should be considered an open-ended activity. The idea behind a prototype is not to sell it as a panacea but rather to put a tangible image of the possibilities in the minds of the project team as a catalyst.

Putting It All Together

All of the work done thus far should lead to one thing: a specification of functional requirements. Notes, diagrams, and feature lists should be collected and transformed into a readable document. That document's only purpose is to define the behavior of the system, not how the developers will design or code the solution to produce that behavior. After the functional specifications are approved, then you can begin adapting those requirements into appropriate designs.

For larger project efforts, you may opt to produce a high-level design that describes the entire system and--without much detail--the various components that make up that larger picture. For large and small efforts alike, each module will have a detailed design rooted in the requirement information collected. Testing efforts should also use the requirements as the basis for building test scripts. Each action item of the test should be aimed at proving that requirements have been met. This is why it is so crucial to involve the users during the testing phase--not only to help with the testing scenarios but also to perform user acceptance testing behind your own systems test.

Some people confuse the aim of a project charter with the discovery process described here. The purpose of a charter is to justify assigning resources to the project effort. Requirements gathering helps you enumerate necessary features and functionality. That is all you are aiming for from this stage. Keep those activities separate, and you should have an easier time clarifying what you need. In the end, always present your documentation to the user to ensure universal understanding. If you have properly used the users' knowledge and experience up front, you will avoid the headaches in the end.

And your users may think you knew what you were doing all along.

Steve McGuire is an author and midrange applications developer in North Carolina. Steve can be reached at This email address is being protected from spambots. You need JavaScript enabled to view it.

BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$0.00 Raised:
$

Book Reviews

Resource Center

  • SB Profound WC 5536 Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation. Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects. The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY the one package that solves all your document design and printing challenges on all your platforms. Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. How can you be sure you won’t miss important system events? Automate your message center with the Robot Message Management Solution. Key features include:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing. Manage your reports with the Robot Report Management Solution. Key features include:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.

  • LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed. Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn: