I believe that the key to build a successful project with great time-to-market is first to understand the business requirements. Many developers have their first tendency to think on the technology or the architecture design. I cant blame them. Thats one of the most fun parts. But If one wont understand the project/company demands he will run out of focus quickly. The project’s scope complexity outlines the critical stage of the business understanding.
When I am talking about “business” I refer to the project requirements and motiviation. It doesnt matter on which industry you working on: Forex, Gaming, Advertisements, Banking etc.. First you need to understand the motivation. How we do that?
1. Meet all stakeholders:
This is your entry point. Get all the information you can get. schedule couple of meetings with marketing, product or even customers. Questions, Questions Question.. Ask alot of questions and make sure you understand the demands. Sometimes clients struggling expressing their demands it’s your job to listen, direct and focus.
Sometimes the knowledge is spread out over a couple of departments. After concentrating all the knowledge it will be easier to understand the expectations of the project.
2. Write everything down:
Document, Document, Document. If it isnt written down, It doesnt Exist.
One of my clients used inside jokes and called me “Technical Writer”. I am not ashamed doing that. We are code-drifters, someday someone going to take ownership on your code/project or maybe you’ll need to bring a dead project alive. When that day comes the other person will have better understanding and the company will benefit the outcome of short overlappings.
When you have everything written down (Google Docs, Wiki, Notes, etc.) You will avoid confusion and misunderstanding in the future.
3. Cut into phases:
Once you understand the project scope and your client demands it will be easier to predict your project phases. You need to border your phases. When you understand your domain and the business targets it will be easier to scope your upcoming phases. Make sure each phase’s target is clear and defined. Schedule each phase and your(or your team) development process afterwards . Once you put clear borders to each phase you are ready to go into design and implementation.
4. Small winnings:
Time to market, Lean, Production ready – Those words repeated on every project. I believe the key for a successful projects is to deliver within small pieces.
Avoid this: “Give me X months and ill get it done”, “I understand what’s gotta be done ill contact you when we finish”. It’s not possible to understand in advanced what’s gotta be done.
Software development is a consistent build-up process. The requirements, resources and priorities changing frequently. You must persistently stay in contact with the project’s stakeholders and tolerate the changes. If you’ll be “blind” to the project progression you’ll find yourself(and your team) spending lots of re-writing or adding out-of-scope/not-relevant/not-prioritized features.
Deliver small pieces. It will keep you up with demands and minimize CR’S on early stages.
5. Program with business vision in mind:
The part of developing comes easier when you have the business vision in mind. You can design and predict the business components and reflect them straight on your code.
It will be easier for you to extend and maintain your code according to the requirements. Since you already understand what’s coming next it will allow you to build the right infrastructure and flexibility for a fast delivery time.
6. “It’s Alive”:
Go to production asap!
When Iam writing go to “production” I dont necessary mean that you should announce on your ready-to-market stage. I mean that you should have something “pumping”.
Remember its always easier to extend something working than waiting till everything works. I am big fan of lean-programming. Get what’s need to be done in order to execute your software asap into “production-mode”. Even if it’s not totally fulfills all the project demands It will give you great perspective of the roadmap. Beside of that your customer will be happy. It’s always great news to hear that something is actually alive and breathing.
Last but not least. If you dont understand stuff or if you struggle gathering business knowledge dont be shy. Put your Ego aside and do whatever it takes to seek after the knowledge you need. It might “cost” you to ask extra questions or speak with different factors in your organization. You better understand the demands on early stages than facing misunderstandings later on.
The process of understanding and building great software projects from business aspects down to technology and code proved me many successful projects.
Next time when you have the eager on early stages to start talking technology or patterns I recommend to put it aside for the right time and start with your business understanding.