I have worked in many companies , There are traditional consulting companies , There are also investment banks , And then there are the fast-growing technology companies . I've also talked to a lot of software engineers , Some of them work in startups , There are also people in Banking 、 Cars and high technology , And more traditional companies . Many of these companies are in Silicon Valley , But there are also companies headquartered outside Silicon Valley .
I find , Silicon Valley companies can always “ obtain ” Some traditional companies can neither understand nor realize the value in practice —— Especially in Europe . There are some practical experiences that can promote the innovation of the company , Help engineers get better professional growth , Or let engineers play a greater value . Silicon Valley companies can （ Yes ） Pay a higher salary , At the same time, we can get more value from the same person .
In this paper , I passed “ Silicon Valley companies ” To refer to those modern companies that can get more value from every engineer , And these companies are headquartered in Silicon Valley （ Although many of the new stars didn't start in Silicon Valley ）. The output of every engineer in this kind of company can match Facebook or Google contest with each other . They all use similar methods , And can attract talent from other Silicon Valley companies .
The reason why these companies are better , Mainly reflected in the following aspects ：
The autonomy of software engineers
In traditional companies , Developers just wait for their superiors to assign work to them , Most of them are JIRA The mission ticket on board . These tickets are reviewed by the product manager or project manager , The key details of the work are recorded on the task ticket . And developers only need to complete the work according to the task ticket . Unless there are some details in the ticket that need to be clarified , Otherwise, there's no need to ask questions .
However , In Silicon Valley companies , Things will be different . There are many projects in the company , There are also many program managers and engineering managers . But most of the time , Engineers need to figure out how to get the job done by themselves , Including some major decisions , And it'll be encouraged by the company ！ In some cases , The person in charge of the project is an engineer , It's easy to break down the work . And in some cases , The project manager or senior engineer will undertake the work . No matter how , Companies want to encourage engineers to look at the big picture , Break the stereotype , Solve all the problems they find .
The initiative of engineers is the success of Silicon Valley companies . In these companies , You can often see that some services and functions are built on the advice of engineers , Or at the initiative of team members , Multiple teams work together to devote dedicated time to solving technical debt . Waiting for the manager to tell the engineer what to do , Or break their work down into small pieces , Or managing the team in detail , It's not normal . Everyone is self-management .
In traditional companies , Developers just need to do the work assigned to them . And in Silicon Valley companies , Developers need to take the initiative to solve business problems . It's a huge difference , It will affect every day's work of engineers .
In traditional companies , Developers only need to complete the tasks assigned by their superiors , This kind of personnel management will eventually form a hierarchical system . I used to talk to the staff of a bank , Their company's project management has 6 Level . And developers are at the bottom two levels . All decisions have to come from above the third level . People who really work basically don't have any say . You can guess without me saying more , The company has been plagued by a problem ： How to make software engineers work well ？
Compared with this kind of company , Some companies are very clear that engineers have the ability to solve problems , They can solve practical problems better than anyone else . Leaders know how to maximize their interests , Just tell the engineer all the business background , Give them space to execute .
chart ： Communicate business goals down , And give engineers autonomy , Let them make the decision , It's the driving force of the organization's rapid progress
Thinking , Capable engineers
Traditional companies tend to think that , The engineer should 8 Three hours of working time is spent on Programming . anytime , As long as the engineer doesn't sit in front of the computer and write code , It's a waste of time . And they are willing to prove it at a high cost . I've heard people say that ：
The salary of software engineer is higher than many positions . We need a corresponding return . We can't leave them idle .
Silicon Valley companies believe that software engineers are the best people in the organization to solve problems . It's not just about technology that we're looking for engineers , And the ability to communicate and solve problems . Their view is ：
Software engineers are the highest paid people in our company . This is because their ability to write code and solve problems can bring the greatest value . We want them to have more contact with the business , It's done in this way “ routine ” After work , They can also find more significant business opportunities .
In practice , The value created by an motivated engineer is the value created by an obedient “ Factory workers ” Several times . The worst result is , With clear and correct specifications , Both engineers have come up with the same output . However , Engineers who have the courage to solve problems are starting to Webmaster blog Before work , They tend to stop and think , Looking for more influential opportunities . When I asked some engineers in Silicon Valley , Can we do X after , After a while, the answer they gave me was ：
· “ I did a little research , We can really do X, But narrowing the scope of this function will not have any impact on the business , We don't need to make any code changes to launch this feature , Only a few configuration files need to be modified .”
· “ Can we launch this project , Actually, I'm a little worried , I think we should put it on for a while . I looked into our competitors , One of them has a similar feature , But after being investigated by regulators , It's off again . Did you ask the company's legal team , Whether we can launch such a function ？”
· “ I looked at the backlog of features , project Y It's very similar . If we can put the project X And projects Y Come together , So you can launch two products at the same time , And there's no extra cost .”
· “ We can build this project on top of the old infrastructure , But after a month , Our new infrastructure is complete , We need to transplant it again . Can this project be postponed for a month ？ Wait until the new infrastructure is ready , You can avoid double work . If there are no special business needs , We need to launch this feature in a month , I sincerely suggest waiting a little longer .”
Compared to following instructions , The value of an environment that encourages engineers to solve problems is higher , And be able to make better decisions .
internal data 、 Transparency of code and documentation
Silicon Valley companies attach great importance to transparency . Although there are some exceptions , Like apples or Palantir, They give too little information to engineers . I find that most Silicon Valley companies are willing to share their information . They're in the General Data Protection Ordinance （GDPR）、 Personal identity information （PII） And share as much information as possible within the scope of other regulations .
staff （ Not just Engineers ） They have access to business indicators and data resources at any time , They can write their own queries , And generate custom reports . stay Skyscanner, Employees receive a summary email about their daily income details every day . And in the Uber, Employees also receive weekly reports on similar indicators .
With the development and listing of various companies , This information will be integrated . however , Engineers can still access the company's business data , Help them make decisions . And in traditional companies , This is basically not going to happen . What the engineer got was the specifications , Only the top know the reasons behind the decision —— At least , This is the purpose of the company .
Open business and business indicators
Silicon Valley companies want every team member to understand what businesses their work will affect , And what the impact will be . It's very rare that a team's goal is just to launch a function , For example, introducing functions 1 Can reduce the 2% Customer churn rate of , Or launch a project X It's expected to increase revenue by 10 million every year .
Silicon Valley companies encourage engineers to reach out to other business people , Build relationships with people other than engineers . In practice , Many senior engineers join product managers in customer seminars . however , I've also seen new engineers quickly get directly involved with business stakeholders .
contrary , In traditional companies , It's basically impossible for developers to get in touch with other business people . however , They don't show it , They will say ：“ We don't want to disturb the engineers ”. I've also heard that , One engineering manager wanted team members to participate in the product list , But the product manager refused . Their excuse is often ：“ We want them to work well , Don't want them to be disturbed .”
If an engineer in a traditional company interacts with people outside the team , People will say ：“ Not enough concentration ”,“ A waste of time ”, perhaps “ except ”. This kind of “ Is not normal ” Their behavior often has a negative impact on their performance evaluation .
That sounds ridiculous , Some companies have first-class problem solvers , But forced them into a small box , And said, “ You just need to write the code ”, But that's the reality . meanwhile , Trying to measure engineer productivity by lines of code , Or complain about why engineers don't care about products , It's the same kind of company .
Triangular communication between engineers
If you're an engineer , And you want to ask another team a question , You can look at the differences between traditional companies and Silicon Valley companies .
Traditional companies encourage hierarchical communication . It can not only “ Protect ” The engineer , And because managers in these positions prefer to act as information hubs , They don't want to give up control of this part . If you want to ask another team a question , You need to ：
Silicon Valley companies encourage direct communication between engineers , Without going through the middle . This way of communication is faster . Even if the engineers on other teams can't help , You can go back to “ Tradition ” Pattern , Ask the manager to help facilitate the discussion ：
Strive to improve the working experience of developers
2020 Year is a bad year . It's not about writing code , It's easy to write code ！ It's because of other related work ： Set dependencies 、 Deploy to production or test environments 、CI/CD、 Monitoring and alerting . If you're in a team of people , So maybe there's no problem . However , Sooner or later, you'll get into these troubles .
With the development of the company , The developer experience gets worse and worse . At the beginning , It's all small problems ： Build time is getting slow , Dependence increases , Or you need to modify the code across multiple services . Slowly, , Teams need to figure out what services they are responsible for ; Some migrations are small , But because it involves multiple teams , And failure ; And ultimately need to redefine the entire engineering architecture .
Frameworks and libraries change very quickly , And a lot of tools are hard to keep up with . For companies , If you don't want the developer experience to get worse , Engineers must be encouraged to focus on problem solving , Set up various basic settings 、 The platform and SRE The team .
The goal of some software engineers is to make other software engineers work faster , It sounds counterintuitive , But a lot of the time it's not . Help these companies grow fast , Can get a huge return , And developers are happier .
Leverage between autonomy and high pay
Silicon Valley companies are willing to pay high salaries to engineers , To get more leverage , Because the value of these engineers exceeds their salaries . This leverage effect can come from scale , It can also come from business development . Reduce time wasted on unnecessary communication , Using tools and so on can bring value to this kind of leverage . Give engineers enough autonomy , Can contribute to business development , You can also maintain high leverage .
Now Google、Facebook And the high salaries paid by other companies are the leverage of scale . Engineers at these companies build functions that have millions of users . This leverage and added value is in itself a reward .
chart ： The higher the autonomy , The higher the leverage ratio , The higher the value created , The higher the salary （ At the same time, companies can make huge profits ）
Silicon Valley companies use software engineers to develop their businesses .FogCreek It's in this way that our software engineers have achieved millions of dollars in AD classification .Facebook In this way, our engineers and designers built the like button . This little button brings billions of business opportunities ：Facebbok Positioning ads through buttons , And in Facebook Tracking users outside .
If these people work in a traditional environment , Then their ideas will never have a chance to come true . Start ups in Silicon Valley encourage engineers to come up with business opportunities , And then . Both the people who come up with the idea and the business can benefit from it .
Companies that leverage engineers don't have to pay the highest salaries in the market , Even above the highest level .Basecamp This is a good example , Not a tech giant , But they also make good use of Engineers , So they can also pay high salaries in the software market , At the same time, it's profitable .
The biggest difference of the whole
There are many differences between different types of Companies in dealing with the relationship with engineers . The biggest difference is , Silicon Valley companies believe that engineers can create value , Have the ability to solve problems ; Traditional companies treat them as factory workers .
This divergence of ideas leads to , Companies with more avant-garde ideas can not only pay higher salaries , And give engineers more autonomy . And the value of factory workers is pre-defined , You can make a budget . On the other hand , If used properly , Be creative 、 Engineers who can solve problems can bring 10 Times the value . therefore , Pay them higher salaries , Give them more freedom , Naturally, it's reasonable , Because it's your way of motivating them to contribute more business value .
People who have worked in Silicon Valley or something , It's hard to go back to the traditional workplace , There? , Everyone's responsibilities are clearly defined , Every time you leave your cell , People frown .
As a software engineer , Working in a problem-solving environment is more enjoyable , Not as a factory worker . Where are you now ？