In software development we always start with
“Hello World”. We never start with “ABC”. My little one was watching "fruit
train" today and this made me think about it. Sometimes we jump into “Hello
World” without learning ABC. A dev team for startup is different. How you
build it defines most of the tech startups.
When I thought about process of software development it got outlined as mixture of process and principles. Following is what I discovered.
Agile Process:
The mission statement of our dev team is “Quick with Quality”. We
cannot choose one from either of them. This is also one of the reason “People matters” (See my earlier blog). Recruiting the right people will enable
you achieve both.
Development process makes quality of deliverables
from all the team members agonistic of quality of the people. Common mistakes are avoided by
following process. I think if you have right team with business acumen,
need for strict process reduce drastically. And building that team is what it
takes.
Mostly testing is ignored in early stage start-ups which leads to demo
syndrome* and poor quality. This also leads to team getting randomized with lot
of bug fixes. Following will help to improve quality and efficiency:
Buddies
in team:
1.
Testing each other’s code :Testing improves quality and product
understanding.
2.
Avoid single point of failure: At least two developers knows the code
and configurations. This will come handy for you in many ways in
development and business practice.
Automate: Whenever
you have time automate the testing as much as possible. Start by writing Build
Verification Test (BVT) and move towards Unit Testing(UT). Start
the practice before your code base becomes very large.
Sandbox
environment: It is very important to build a sandbox testing environment. Everything
works in developer’s box**.Virtual environments is means to reduce the cost.
Scrum: Daily
standup meeting are very critical to keep the team focused and achieve the mile
stones. As advocated by Scrum Gurus keep it brief and precise. Keep the sprints
as short as possible. Maintain backlog of the all the requirements and
feedbacks.
Source control, reviews and testing should be mandated even for small teams.
Business validation
process:
In startup the software development team should be integrated to
product, customer engagement and sales team. Business development and software development
can’t be separated. It is very important for leaders to define purpose and principles
of the start-up and make sure that team knows about it. If developer
is doing something other than core business, Stop!. It
doesn't mean stop innovating, it means focus.
When you reduce the barrier between dev and other teams the inevitable side effect are following:
- Team getting randomized by others teams
- Lot of noise-business requirements from other team.
It is very critical for dev leader to make sure that it doesn't go
to this extent.
When it comes to features to implement its a haywire. Pick your right
battle at right time. Pick the "Right"
features for the customer rather than allowing customer to pick the "Right" feature. This task
is very difficult than most of us think, especially if your audience is diverse.
The above doesn't mean you don't listen to customer. Following practice might
help.
- Problem Validation: Does
the problem exist for wide audience.
- Feedback Analysis:
Filter the noise from customer feedback. And prioritize the feedback.
- Product Validation: Do you want to solve the problem now or guide customer towards some existing solution. It might include suggesting your competitor or other solution providers.This is tough for most of us.
In spite of the speed of development, uniformity among different
components, intuitiveness of the eco- system, focus on the problem and
value add should not be derailed.
Don’t develop features which you like. "Disconnect” yourself,
listen to the market and solve the most important problem. After all you’re not
going to use it, your customers are.
Continuous development process:
When you are travelling very fast small mistakes get amplified with time.
Continues feedback and corrective actions doesn't have any substitute. Earlier
you listen to feedback and fix it less catastrophic it will be.
Following helps in continues development and deployment:
Continues deployment: Integrate as often as possible in the
sandbox environment. Let each developer take pride about not breaking the
integration environment. There should be daily continuous deployments to sandbox.
Continuity plan: A startup needs business continuity
plan. It can be simple but there should be a plan.
Enable the team: Once you have right team, enable
the team. We don’t have robots to do software development yet. Come back
to reality. Acknowledge that people make mistakes. They need higher purpose to
work in startup. Allow them to make decisions, allow them to make mistakes,
allow them to interact with business as required. Don't be overprotective about
what you developed from scratch. The team
should run without you …period.
Build Operable system: Build software which gives you continues
feedback from system and business perspective. I have discussed this in detail
earlier.
==============================================================
* Demo syndrome : Your application never works when you go for demo with client or leaders..
** Dev box : Developers computer.
** Dev box : Developers computer.