Technology Selection
Once you have a high level picture about your new project, it is important to select the appropriate technology and tools that suits your requirement. “A wrong technology selection could cost you more and can cause damages and sometimes even lead to project failure”. We advise you to take necessary help from your technology team when you choose your frameworks, components, and database. You can always have some brainstorming session to discuss about the recent advancements and offerings they have.
Few factors to consider at this stage:
- Whether to opt for (free components / licensed third party components / develop them in-house).
- Licensing Model – How do you plan to package your project / product
- Are you ready to accept standard open source components?
- Avoid using components build by free lancers that are available over the web. If you need to do so, do it only if you have the full source code available.
- Get your customers approval on using these components (as needed).
Perform necessary technical spikes
Spikes are an invention of Extreme Programming (XP), are a special type of story that is used to drive out risk and uncertainty in a user story or other project aspects.
Perform spikes to assess new areas where you need more knowledge. This may include new components, frameworks, development tools etc. Make sure your spikes are time bound,
estimable, demonstrable and acceptable.
Customer Sign-off: Once you decide on your technology framework & components choice, kindly document and share them for your customer sign-off. It is important because
many of the big organizations have their own standards and approved list of components. This will help prevent using any unapproved components in their list.
Architecture Design
You should have a detailed Architecture Design Document (ADD) before you start thinking about the detailed requirements.
We advise you architecture document covers detailing the below topics.
- Functional Architecture
- System (Application) Architecture
- Database Architecture
- Deployment architecture
- Topology diagram (if needed)
- Technology Stack
- Performance requirements and user base
- Any advanced requirements like (Multi tenancy on Cloud, SaaS etc.)
Go Agile
Plan your Iteration Zero
This is the first iteration where your team should plan and configure the necessary software, development tools, prepare automated build scripts and configure build pipelines.
At the end of i-0 the team should have a proper build script for different environments, DB migrations configured, builds are completely automated and QA environment and Prod/UAT environments are up and ready. Here below are the tasks to work on and get ready by the end of iteration 0.
1. Dev and testing tools are ready for the team
Install the necessary development and testing tools in each and every desktop for the team to get their work done.
2. Setup project code base (Both Dev and Testing)
After you decide on your technology stack and tools you can start creating your project structure in your preferred IDE.
You should create your base project structure as per the planned architecture. Work along with your technology team members to get this right. Also your solution should
include the necessary test projects with sample tests defined.
3. Ensure source code repository is ready (GIT repo)
Configure and push your project source code in your favorite source code repository. Here our organization standard is Git and so we prefer to go for that. By the time you move your project to a VCS, you should have your basic project structure in place and it should build and produce artifacts, run tests as needed.
4. DB migrations configured and ready
Pick a suitable DB migration tool that fits your need and configure the same as part of your project so that database maintenance becomes easier.
DB migration tools allow you to,
- Recreate a database from scratch just with a single command
- Make it clear at all times what state a database is present
- Migrate in a deterministic way from your current version of the database to a newer one
5. Build pipelines configured in Team City (CI server)
The next step is to configure your CI build pipeline. CI requires developers to integrate code into a shared code repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
The development team should decide on the different build pipelines and how they should be configured. Learn and Practice the below within your team:
- Maintain a single source repository
- Automate the build process
- Make your build self-testing
- Every commit should build on an CI machine
- Keep the build fast
- Test in a clone of the production environment
- Everyone can see what’s happening – Use build monitors
6. Setup automated build and deploy scripts
It is very important that you automate your deployment process. There are many advantages of automating these kinds of repeatable jobs and it will save you lot of time in the long run. Here below are few benefits when you automate deployments.
- Deployments become much less error-prone and much more repeatable
- Anyone in the team can deploy software. Dependency on a single person for release is avoided.
- Saves lot of time for developers and they can spend the time developing useful software
- Deploying to somewhere new is not a headache
- Release process becomes seamless and you can release more frequently
7. Setup QA environment
Setup your QA environment for the QA’s. Automate the deployment to QA environment using scripts and the QA’s should be able to deploy the latest version from CI environment just by a single click of a button.
8. Setup Prod/UAT environment
In many of the projects, production environment will not be accessible for the development team. In such cases we setup a UAT environment and we treat them as production (but call them UAT). The release to the customer is then done from the UAT environment.
Setup your Prod/UAT environment for release. Automate the deployment to Prod/UAT environment using scripts and the release manager should be able to deploy the latest version from CI environment just by a single click of a button.
9. Ensure Issue tracker and mailing lists are ready
By default your organizations bug tracking tools will be the choice. Just setup accounts for the customer if they need transparent access and configure email address for mailing lists.
Project Milestones / Phases
As your team is working on Iteration 0, the Project Manager and Business Analysts should decide and finalize the major milestones or phases of your project. It is good to plan your milestones in such a way that the customer can start using the software with some useful functionality implemented at the end of each phase. By this time you should have come up with an overall project plan as well. So make sure your customer is aware of what you will deliver as part of each milestone and its better to take his written sign-off via email.
Create Master list of stories
Your master stories is a compilation of statements such as “As a(n) <role>, I want <do some action>, so that <benefit or result>”.
The benefit or result should come from the business value model. Download the story template here.
Conduct a Retrospective for I-0
A retrospective meeting is a meeting that’s held at the end of each iteration during which the team will discuss on what happened in the iteration and identifies
actions for improvement going forward.
The team shall discuss on:
- What worked well and what did not work?
- What actions can we take to improve our process going forward?
You are “ON”
You are well prepared now and ready to move forward with a bang. Here on, plan properly and proceed for future iterations and development. Have a great time 🙂
Leave a Reply