Build a strong small team study notes

Build a strong small team

Status quo of software development
• The complexity of software continues to increase
• The complexity of business requirements
• The complexity of deployment and operation scale
• The complexity of maintenance and support
• The software development iteration cycle and frequency are getting faster and faster
• Development, testing cycle
• Delivery cycle
• Solution Cycle of problems
• Increasing demands on software operation and quality
• Scalability
• Stability, availability
• User experience

Software problems
• Continuous improvement of business analysis capabilities
• The quality of software products is getting worse as the complexity increases
• The cost of software testing and maintenance is increasing
• The cost of solving software problems is increasing
• Management issues
• The team is getting bigger and bigger and the division of labor is getting more and more fine
. • The problem of team cooperation
• The problem of team execution
• The problem of team flow
• The problem of team growth

Problems with software
• Continuous improvement of business analysis capabilities (adding BA and PM)
• The quality of software products is getting worse as the complexity increases (adding consultants, QA and SQA)
• Software testing and maintenance costs are increasing Big (adding QA, Ops and processes)
• Increasing cost of solving software problems (adding consultants, various diagrammatic processes)
• Managing problems
• Teams are getting bigger and smaller (human sea tactics, Headache treats the head, foot pain treats
the foot) • Team cooperation problems (interests are involved, shirk each other
's bucks) • Team execution problems (the process is too heavy, interests are involved, mutual disputes, overstaffing...)
• Team flow problems (process Too heavy, too much repetitive work, more and more talking but not practicing, heavy
overtime , big internal friction, too much politics...)
• Team growth problem (complex communication, the greater the internal friction, the more difficult it is to repeat the growth)


Behind every hard-working programmer, there is a group of people who point the way


Problems
• Too much process control
• Too many organizational units
• Too many interests involved
• Too much resource consumption • Too many
communication meetings
Such an IT company is no different from the "XXX Bureau" of the Chinese Empire


Thinking
• Programmers can't manage projects and schedules?
• Programmers cannot do testing to ensure software quality?
• Programmers cannot analyze requirements?
• Programmers can't do operation and maintenance?
• Programmers can't manage their own processes?
• Programmers cannot architect and design software systems?
• Programmers don't work well with others?

Think again
• If you don't trust the programmer, why would you hire him?
• If a programmer can only code, this is a disqualified programmer!
• Managing yourself is most effective!
• It is a mistake to find someone to take care of yourself and the employees you work for!
• Programmers are the main force of productivity!
• Most of the others are degrading the productivity of the team
• Only the programmer commits the line of code in the software

Required Skills
for Programmers • Programmers must understand software development
• Programming techniques, software design, development tools, software engineering (process)
• Programmers must understand requirements
• Must think from the user's point of view
• Programmers must understand testing
• Automated testing, test case design
• Programmers must do system maintenance
• Automated deployment, automated monitoring
• Programmers must manage their own work
• Programmers know which process method is best for them
• Know their priorities and schedule


Excellent programmers create 10,000 times the value of mediocre programmers!
• The value created by Unix/Linux authors = N times the value of writing an app in the App Store (N >
10000 times)
• Eat Your Own Dog Food! Only eating your own dog food will improve!
• It's not enough to eat dog food, you have to eat your own Dog Shit!
• You can test the software you write and operate and maintain it yourself, so you can experience the difficulties yourself
• Only when you experience the pain, will you have the motivation to improve
• The program is The labor used to automate all machinery!
• As soon as you find you are doing repetitive things, you start thinking about programs to help you
• Whenever you find you are doing labor-intensive things, start worrying about being replaced by machines
• Active work is far more productive than passive Productivity at work!
• Do what you want to do better than what you are forced to do!

GOOGLE's engineer culture
• Trust and respect for engineers
• Every employee has 20% of their working time to do what they want to do, and many products are made with this
20% time, such as the well-known Gmail.
• Larry Page: "this company will be run by engineers" (not marketing not sales) This sentence
is what Larry Page said to the board of directors before Google's IPO
• Freedom and equality, transparency of information
• Data speak (If we have data, let's look at data. If all we have are opinions, let's go
with mine - Jim Barksdale, former Netscape CEO)
• Flat hierarchy, dory and live questions on TGIF
• Open to all projects: documentation, code , planning, data, resources
• Set goals by yourself • Set goals
aggressively, and the completion is basically about 60%.
• Rate management
• Managers who are not liked by programmers are fired.

FACEBOOK'S ENGINEERING CULTURE
• Project resources come entirely from engineers' volition
• PM lobbies engineers, trying to attract engineers to work for their ideas
• Engineers decide which product manager to work on themselves, and the engineer's head can
almost be said to let his subordinates go Do It Yourself
• Engineers handle everything by themselves. From js to db, and can get some
support from UI/UX designers. Usually, engineers do all the work.
• One engineer can serve a million users

AMAZON's engineer culture
• SDE is dubbed Someone Do Everything
• Engineers start from requirement analysis to online operation and maintenance (and recruitment)
• A lot of automation tools (testing, deployment, monitoring)
• This is what programmers eat Outcome
• When demand comes, ask why? What's the point?
• Few QAs, Designers, no architects
• No special software development process, the team decides what process to use
• Many teams use part of Scrum practices
• Very strict hiring
• Like Google, more than half of the existing ones are recruited People
• Pizza Team Culture
• 2 Pizza Teams, a team that two pizzas can feed.
• Up the River
• Projects discussed by top engineers in the company can be assigned directly to SVP.

Engineer culture == innovative impulse

What would be the result of a non-engineering culture?
• Process culture == bureaucracy + office politics
• Labor-intensive companies such as: Foxconn
• Consultant culture == fake big empty culture
• Lots of concepts and prospects
• Product manager culture == copycat culture
• Google's Eric Smith Android and Google+ created by the PM culture are all imitations.
After Larry Page came to power, he killed the PM's SVP, isolated all PMs, and let them report to the
Engineering team
. Boss culture == dictatorial culture (either bull or bastard)
• The boss is bully, everything is bully, the boss is a bastard, a total bastard
• Marketing culture == corruption + fraud culture
• All kinds of marketing methods for quick profits

The two management methods of software companies are taken from StackExchange
for details: http://coolshell.cn/articles/4951.html

WIDGET FACTORY (Small Commodity Factory)
• The nature of ordinary people is lazy, the less work the better, if possible, they will
avoid work, most people do not care about the goals of the collective (company, institution, unit or
organization , etc.), so managers Incentives such as coercion, threats of
punishment, mentoring, monetary benefits, etc. need to motivate people to work.
• Companies are indifferent to actual software development, they want to turn
ideal software development operations into diagrams they can see.
• The process is heavy, with many organizational units and people.

FILM CREWS (Film Crews)
• This kind of company believes that people have a high level of intelligence and creativity, and they
can inspire themselves.
• Each individual's own professional ability is far superior to that organized and
coordinated . People work hard and enjoy their work.
• Job responsibilities have become very vertical - you need to have a
broad range of abilities from top to bottom.
• Managers understand every piece of what makes a great piece of software. His
role is to inspire people and guard the direction (Vision)
• Everyone on the team is key because the team believes that software results
come from all participants and their unique way of working as a team.

The premise of a small team--engineering culture
• The founder is an engineer (what kind of person and what kind of team)
• Knowledge (technology) intensive enterprise (with a strong impulse to innovate)
• Values ​​and goals are aligned (this is very Important, the so-called culture fit)
• Equal resources and transparent information (only with consistent understanding and complement each other, can a small team be possible)
• Wide bus width, collective wisdom, shared responsibility, encourage cross-border work
• Hire the best people, individual ability Strong, everyone is a leader (not only passionate about what they do)
• Not just leading each other, but cooperating
• No central control, autonomous through teamwork
• Self-organization, self-collaboration, self-management, self-evolution
• Simplified functions , abstract software (eg: big table, v8, HipHop, Hadoop, …)
• Relentless push for automation (cut out duplication of labor)
• Relentless reduction in maintenance effort (exclude non-innovative work)
• Allow 20% free time
• Maintain an environment of mutual respect, continuous reflection and mutual learning
• Only pain can make people reflect, and only when everyone is strong can they learn from each other

推荐阅读
• Quora:What makes a good engineering culture?
http://www.quora.com/Software-Engineering/What-makes-a-good-engineering-culture
• Google 的Wayne Rosing 访谈
http://www.youtube.com/watch?v=pLj3qSXNy7o (part 1 of 9)

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326692229&siteId=291194637