In an earlier write-up on this website, I discussed the different components of an IT project. To help you better understand how they all come together, this week I will be discussing a fictional project that has most of these components.
- Web Development
- Database Management
- Software Development & Implementation (Web or Mobile)
- Data Mining
- Cloud Computing
- Network Configuration
- Hardware Installation
- Network and Computer Security
- Artificial Intelligence and Machine Learning
Business case: So let’s assume Events Limited is a fictional event planning company – one of the largest events planning company in Africa. The events planning industry in Africa is a billion-dollar company as Africans are known for their very elaborate events. Events ranging from Weddings, baby dedication, office events, funeral events amongst others.
Problem: Events planning is a very time-consuming and labor-intensive process. There is also the uncertainty in dealing with unpredictable vendors. Between trying to get a good price for over 50 vendor categories; vetting them and ensuring they will deliver and assuming the risk of being disappointed on that day, event planners could easily get very burned out.
Events Limited has come to an IT services firm you happen to be an IT project manager for and they want you to come up with a technology solution that addresses these needs. You may or may not be required to come up with a return on investment breakdown. That will typically be the role of the project sponsor which is more often than not on the client-side.
Solution: You and your tech team are proposing an AI-powered application(mobile and desktop app) for events planning that saves time, effort, and money. The solution will be a virtual assistant for Nuptials representatives who will be assisting customers in planning their events.
Save cost: Nuptials representatives want to be able to assess the best price for a given vendor category based on set criteria such as location, reviews, etc.
Save Time: They want to be more efficient at reaching vendors to reduce the overall hours spent on planning an event.
Save Effort: They want to be able to carry out event planning activities on one platform. These activities include interacting with clients and vendors on the same platform.
What is the value proposition for this novel system?
- Search optimization for retrieving historical information on vendor information (prices, ratings, location) quickly and on the go. Reduction in time spent searching through every vendor and ratings. Streamline searching based on customers parameters.
- The final system will be able to make recommendations based on customers overall budget
- AI-powered chatbot with natural language processing that engages first-time clients and routes them to an appropriate event planner based on information they have provided.
- Data mining and predictive analysis that can predict the best event package for a client based on historical information.
Overall Goal: Increased efficiency. More streamlined wedding planning processes. More satisfied customers because vendors are tailored to their budget and needs.
Proof of Technology (POT)
Before the start of the complex first of a kind project with several integration points, it is recommended that a Proof of technology is done.
What is the proof of technology?
A POT is usually done for a first of a kind technology projects to prove on a smaller scale that the solution is feasible for the business case. The POT protects the client from investing a huge sum of money on a concept that isn’t proven and might be faulty.
When the client is pleased with the outcome of the POT, they are more confident in committing their resources (human, material, and money) to implementing the solution on a larger scale.
The outcome of a successful POT is a signed contract for a full-on solution implementation for the client. With the help of knowledge gained from the POT the contract has clearly mentioned what is in scope; out of scope; assumptions; high-level schedule; high-level task plan.
A POT isn’t needed for IT projects where the technology is known and has been implemented repeatedly and where the client environment isn’t too complex.
Full Project Implementation
Now you have the signed contract and an executing team has been assigned. A Client Project kickoff meeting for me is one of the most important aspects of project initiation. I always strive to gain the trust of the client early on in the project which is why I ensure that my team and I are very well prepared for the meeting. When a project kickoff is done correctly, good relationships are established between the client and my team, and trust is built which is much needed for smooth and successful project delivery.
It is very important to set the right expectations and get everyone’s buy-in at the start of a project. Key project stakeholders do not want to be blindsided and want every aspect of the project laid out on the table at least at a high level in a format they can understand.
I have an article here that discusses how to facilitate a very effective kickoff call with the client.
Requirements Elicitation/Design thinking session:
The purpose of this phase is to validate the user scenario in detail taking into consideration the experience the target user will have with the final system. The business analyst, designer, and sometimes the solution architect sits with the business owners to document what they want the end system to look like or do. This can be accomplished by interviewing stakeholders, reviewing operation records, observing work practices, workshops, questionnaires, and surveys. In some cases, mockups or prototypes are drawn to help users clarify the requirements. A design thinking session can also be conducted for a more in-depth understanding of the potential end user’s current pain-points and the best solution to meet their needs. The result of the design thinking session is a map of the ‘as is’ scenario and preferred ‘to be’ scenario as well as some UI consideration for the final system.
The outcome of this requirements gathering phase is the elaboration on the recommended solution which includes a User scenario, use case documentation that shows how the user will interact with the system. The final requirements document should contain functional requirements (what the system should do) The BA or designer should also come up with a Test case and success criteria document at this point to validate end-to-end application testing. Also in this phase, the executing team led by the PM or the BA can come up with a test plan strategy, business case development, and adoption strategy.
Functional requirements include business functions that the system must perform. eg The tool must allow input of message from both speech and text, The application should allow for users to an SMS text message when internet service is not available, The tool must enable a user to submit positive feedback on a response.
Solution Architecture Design
In this phase, the solution architects liaise with BA and some help from the client system administrator to craft a cohesive solution. The input for this phase is the requirements document; operations records; business rules, policies, and processes; integration points, application/user security and controls, IT standards, user authentication, and any constraints that the current system might have. The output is a solution architecture and implementation plan that depicts any custom enhancements, integration to third party products, business process changes, software components that constitute the system, which function each component implements, data flows, and integration design.
In addition to the functional requirements created by the BA, the final requirements document should include non-functional requirements such as (how well should the systems perform like usability, reliability, performance, and supportability). Non-functional requirements specify requirements for the system to run effectively.
This physical design is led by the user experience designer. The physical design has to do with the appearance of the system and the experience of the end-user. This can be achieved and fleshed by conducting workshops, storyboards, mockups, and prototypes. During the workshop, the business team and the BA/designers can go back and forth between requirements gathering and validating the design. Physical designs are specifically important for consumer products. Think about, for instance, the iPhone and how easy it is to navigate; the icons, buttons, etc. Anyone can pick up an iPhone and within minutes be able to figure out how to make a call, send a text, or browse the web. It is the job of the user experience designer to ensure that applications are user friendly and intuitive.
The build phase is where all the designs from the Design phases are brought to life. For this project, there are a couple of activities that will go into the build phase
- Orchestration development
- Backend(database) development for conversation logging.
- Cloud services deployment and configuration
- AI service: Iterative Teach, test, and calibration for the machine learning model
- Integration of chatbot to other areas of the business (APIs)
- Web development ( optimized for mobile and desktop)
- Conversation development, unstructured content management)
- A secure gateway between nuptials on-premise data and the cloud.
During the build phases, there is a series of code development best practices that should be enforced to ensure the quality of codes is up to par. For example, proper labeling of the codes ensures that the codes can be easily managed and interpreted when it is handed over to the client. I have come to understand that different developer teams have different ways of approaching the build process.
There is also DevOps which refers to a series of activities taken by the development team to ensure smooth transitioning of codes through development, testing to delivery. The DevOps process is automated for the most part where developers submit their codes to a repository a series of automated events combine the codes and carry out different tests including regression tests.
Note that as an IT project manager, you might not be involved in setting up these code governance structure. There will most likely be a more technical person on your team who will be leading these efforts. I have thins included in the write-up so you have the breadth of technical knowledge needed to lead your team.
The IT project manager should be tracking everyone’s progress, checking if anything tasks are off schedule and seeing where things are going off schedule, and reporting progress to the key stakeholders.
He is also acting as an enabler for the team listening closely and addressing any blockers.
I have included in this article a link on how an IT project manager can double as a ScrumMaster and administer scrum to get the best out of the technical team
Several tests happen during the lifecycle of a project for Verification (checks if we build the system right) and validation (checks if you built the right system).
Unit testing: This is usually carried out by the developer during the build phase to verify that a piece of code is working right.
Functional testing typically done along with the integration testing ensures the overall system meets the requirements
Integration testing is to ensure the components of the systems are talking to each other right when assembled) with the expected input and output from one system to the other integration and system test are typically performed by an independent team and are organized in the following two steps:
- Creating a test plan definition document: This document which is usually created earlier in the project lifecycle and built upon throughout project execution comprises documents of test cases to be done against each requirement. Each test case describes how to perform the test, the initial state, input, steps to be performed, expected output, and final state.
- Test execution and reporting: The actual test execution performed by the testing/QA team and subsequent reporting and documentation of any bugs identified
- Bug fixes: Here developers address the bugs with fixes and sometimes time carry out a regression test to ensure that other defects were no produced in the etc system as a result of their fix. Defects resolution can be tracked and managed using kanban format tools like Github, Jira, and Trello.
Come up with a test schedule and defects management plan
Other types of testing take place before the systems are declared available and fit for use
Non-functional testing such as:
- Performance test– ensures that the system performs its task at the right speed. The speed of completing a task is usually a reflection of the integration codes.
- Load testing- ensure that the system can accommodate a stipulated number of user working simultaneously on the system without crashing it
- Data integrity
User acceptance testing (UAT)
UAT encompasses all tests carried out by the actual end-users of the system. They are most likely not non-technical. They typically conduct their day to day jobs on the new system to check if the system is producing the expected result.
As the project manager, you want to make sure these UAT testers are identified earlier in the project so that they are prepped for the process.
Pre Deployment/ Golive: Deliver training so employees know how to use the system. Decide on the go-live approach.
Plan for Deployment and transition to operations
Before deploying a software application, the IT project manager has to ensure that the people are ready to use the system. This is achieved by conducting adequate training for the end-user to bring them up to speed on the functionalities and alignment with business processes. The IT project manager should also ensure that there is data available for the new system to run. This can be done through data migration from a data source or through the integration of the new system to an existing data source. Finally, the functional and non-functional testing should be concluded or at least reached an agreeable point as specified by key stakeholders.
There is also the decision to be made on how to introduce the new system to the public.
1. The Big bang approach simply means that on a certain agreed to the go-live date, the old system is unplugged and the new system is plugged in. This can be quite risky if the new system is buggy but very beneficial to the organization if the system runs as planned.
2. The Pilot approach: This means that on the agreed go-live date, only a subset of the system will be deployed and to a limited number of users. This allows for careful monitoring of the system’s behavior before it is introduced to the larger organization. This is a less risky option than the big bang approach.
3. Parallel approach: On the go-live date both old and new systems are live for an agreed number of days. They are both monitored to ensure they are producing similar outputs. When all issues and with the new system have been fixed, their old system is switched off. This is also less risky but labor-intensive and time-consuming having employees making dual entries into both systems. I have personally implemented this approach for several of my data migration projects.
4. Phased approach: The phased approach is similar to the pilot approach but this time, there would be several points or stages where the additional sites and users are included in the new system.
The roll-out takes place in tandem with training for the new users.
Maintenance/ Support post-go-live
Once the system is live, users need to have a way of escalating issues with the system or provide feedback such as improvement requests, feature requests, etc. The technical support team is set up to handle all such issues via a help desk number or a ticket logging portal. Outside of tickets logged by users, it is also important to set up a motoring system to track the system’s performance over time