Dog- fooding

This terminology is used in development process.  This is slang developed in firms like Microsoft and other hi-tech firms. 
In product dev firms or software dev firms:
1. Once the software is developed this is deployed and distributed to internal employees.
2. Internal teams /customers will test/use before this goes live to end customer.  
Even Apple started asking their employees to ditch the type-writers to test the pc’s they have developed. Google and others firms use this.
User experience and bugs tracked and the required stuff can be incorporated, before we hit on the end customer.

Staging process in agile world

Some how I get hooked onto few things for last few years n the code quality and product engineering, how we deliver the quality code.
Looks like working in several start-ups (as a software engineer in USA), Project Manager in several firms (Embedded and Telecom) firms and reading is helping me to get into product development. Most this is based on reading/experience what I have seen over my career
For the sake of example, we would take three component/modules, which will be in final product.
Example A, B , C are components
Deployment/Test servers: Server-1 (Component), Server-2 (Integration), Server-3 (Test Server), Server-4 (Live Server)
Component Test servers (Server-1):
·        At the coding stage, usually development is done on local machine or cloud system.
·        Also if we also do “pair programming”, that will create greater quality code.
·        Once coding is done the component or module level is done, after that testing to be done
·        Tested code to deploy in server-2 and suitable testing, code to be reviewed to be done.
Integration servers (Server-2):
·        At this server code we  integrate all , and proper testing is done
Integration servers (Server-3/4):
·        We move the same set of code to different servers and test it
Liver server:
·        Final deployment, whole world sees this  
Staging the code in various server will help quality of the product. 

Build systems issues

Typical issues in build systems
1. The time to build is more than few hours (may be clean-build)
2. Too many branches and lot of dependent code
3. When developer check-in (one month quota) at time or before final release.
4. When no-one can figure-out why the Version 23 is better than Version 25.
5. You can not build the system (at all)

Development System

We used to work on high profile project, and we have created very relaxed environment, not to mention, everything went on control of developers. We use to have few rock-star developers.
Typical Development system
At start, we have deputed one person in charge for configuration of the systems  and build tree for just enough to build , make the required deliverable.
Build system in cruise control or something
We have teams walking into office in  different time zones, and need to have full-proof co-ordination, the config, build guy used to lock the system, and we used not allow check-in’s after pre-defined time before release.
Typical development system

Finally we have build the end product as below 
Final system


Delivery and Release Management

In Agile world there are many parallel releases and many parallel activities, which performed day-in, day-out.

1. Each Delivery can have one Delivery manager (handling certain) user stories or requirements.

2. Release manager, who tracks the various states, and who is in direct contact with “stake-holders” or all other teams.

3.By the way above team will be reporting a program management team.

4. 1, 2, 3 : are outside actual team, who is working on the integration, developmen

Program , Project, Product,Portfolio Management

Project Management:
With predifined end date for clousre, and more of vertical with managing people and deliveries. Projects are unique and have tripple constraints(scope, budget and time)

Program Management:
1.Programmes and projects are very different kind. Programs are collections of related projects. Program managers manage “project managers”

2. Program Manager has to manage “stakeholders” across the board. Program manager goes upwards and sideways too. Where as project manager goes in vertically downwards. Program manager have wide responsibility unlike “project managers”

3.A Program Manager simply manages teams from all different parts of the business to ensure a successful product.

4.PMI’s latest definition of a programme/program is:

A program is a group of related projects managed in a coordinated way to obtain benefits and control not available from managing them individually. Programs may include elements of related work outside the scope of the discrete projects in a program.

5.programme is a special kind of portfolio, since the projects are related by their focus on the common goal.

6. program managers manage the dependencies between projects, but not the projects themselves.
Portofolio Management:
If the project under program mangemnet are not related, they are collections various such projects to make a portfolio. This may be organization specific

. Or may be particular Business Unit collection.

Product Manager
In prodcut firms, the slightly differnt definition for program manager is Product Manager. Product manager defines final destion and interim gols. Program Mager defines detailed path to get there.
Project Manager will navigate and control one particular stage of the journey.

More articles


Configuration management blues:)

Want to keep this article too short and sweet 🙂
If you are running/going through follwoing issues in project, then it shows you are not mastered/executed proper project/release plan
1. Bug x, is fixed version 22.0 still happens in 24, 27
2. When you complie code on John’s machine only code will work
3. We have no idea, what went in version 1 and version 33
4. These bug was never fixed in any version?
5. Rama is is using version one of project plan, thomas is using version 22 of the plan
6. Client is expecting nuclear rector, developer’s are building a coffes shop
7. This code always work in Japan but not at client’s place
8. Code breaks if you add the module-2

Refer follwoing to undertand more details of “configuration management”