In Micrososft, I have been the training on software development processes for many years. I prompt the use of 3P4S (3 processes + 4 servers) software method – Daily Build process, Source Control process and Bug Tracking process + source server, build server, release server, and bug database….. I also worked a lot on stuff like team model, functional spec, code review…
When I talk with new developers and program managers the other day, I found the development process is not good and there is almost no document. I joked that “Your functional spec for a large project is not as complete as spec for my personal website.”
I was not kidding. I have a functional spec document before I started to work on the new homepage. It was the planning work and thought before I actually worked on it. I altogether 4 hours (several minutes to one hour each time at my spare time) on the spec and it took less than 1 hour to implement the idea.
Here is the document:
After you review the document, you know all the secret behind my homepage. I hope the MoveType code will be helpful.
What kind of product are you working on? How many people in your team? What programing language and tools you use?
Btw, I think the purpose of the F.S. is to get a consensus on the scope of the work among different parties involved in the project before starting to code. In your homepage case, I don’t see there is other party besides youself involved, so I’m not sure if it really help to spend 4 hours writing such a spec.
The specification is really useful for every project even if the project is invloved only one developer. Well done, Jian Shuo.
I am organising an internal transfer to Shanghai starting Jan 2005… I basically do solutions architecture work…
As part of the work transition, I recently travelled to China to assist with an ongoing project – I found exactly the same thing :-((
Project team of 5~6 people.
Tech Lead with everything in his head – he does most of the technical work.
Project manager who has no real knowledge of the scope of the project, or status – very difficult to manage – many risks.
Other project workers have little knowledge of how the solution works, or what they need to do… much dis-satisfaction.
I attempted to document the solution and requirements via reverse engineering…
Most of the workers/PJM were appreciative of this – tech lead responses included:
“we dont work that way here in China…”
and included the story
“there was a famous engineer in China that spent X months in his apartment and built a fantastic editor – no documentation – this is how it should be done”
“I hate writing documents”
So in general, I get the sense that traditionally things have been done in an ad-hoc fashion…
Many of the workers are unhappy with this working style, and given time and visibility of how designing and documenting can make things easier for all, they will gradually get there…
Good luck with the education process…
Well, I think part of it is the nature of current projects in China, which are relatively small. When the size and scope of software reaches a certain critical mass, it becomes impossible for one person to understand it all. That’s where documentation comes in, to facilitate communication and understanding of the solution between multiple team members.
Heck, I can write a text editor myself, without any documentation. But try building a stock trading system by yourself. Impossible without documentation.
On a tangent, I feel that schools don’t teach enough of these project management skills for CS or IS majors. I didn’t learn this stuff until I started working for a consulting company. I feel that unless graduates in china get formal training in these areas at work, they will never learn these critical skills.
I use the functional spec as a tool to seperate the “thinking” process and the “doing” proccess. When people write code (no matter it is C#, C++, Perl, PHP or Java), people can hardly think as clearly as they put alone some time to think….
The other function for a spec is to keep something for record
I will be doing a course named Sofware Development Process Management that is abbreviated as SDPM for my BCIS (Bachelor of Computer and Information Science) degree next year. The assignments invloved are very practical and techinical. I hope I can reaaly get some knowledge on software development management.
Heli, I have been teaching Microsoft Software Development Management in all major software parks in China for two years. The experience is quite interesting. With the team, we also created many courseware on this topic.
Where can I find the training materials for Microsoft Software Development Management? After searching MSDN, I find nothing.