Skip to main content

18 posts tagged with "management"

View all tags

Four Steps to Rational Decision-Making

· 3 min read

Ordinary people have few opportunities to make decisions in life and work, and it is also difficult to practice and improve their decision-making skills. Most people's decisions rely on intuition, while rational decisions depend on processes. The book "Decisive" proposes a four-step process for rational decision-making — to increase the probability of making the best decision, we need to 1. broaden options, 2. test assumptions with facts, 3. step outside ourselves to see ourselves, and 4. prepare for wrong decisions.

1. Broaden Options

People mistakenly think that making a choice is as simple as answering multiple-choice questions on an exam, selecting one from three or five options. However, the world is vast, and options are not limited to just a few. For example, an advertising design company may develop multiple design proposals simultaneously and combine useful elements into the final design outcome after each round of feedback. This not only increases work efficiency but also saves time costs in decision-making. Additionally, one can refer to the base rates of others' choices in similar situations. Sam Walton, the founder of Walmart, closely monitored competitors throughout his career to adjust decisions in a timely manner. As decision-makers, we should find the best solutions by creating more options and referencing others' choices.

2. Test Assumptions with Facts

If practice is the only criterion for testing truth, then conducting experiments before making final decisions can relatively accurately estimate whether an idea will work. Many companies have evolved from hiring employees solely through interviews to requiring them to go through short trial periods, precisely to avoid the limitations of interviews and increase decision accuracy. A friend of mine tried staying overnight in a house before buying it and discovered that he could hear the train's horn, thus avoiding a significant mistake at a low cost.

3. Step Outside Ourselves to See Ourselves

When decision-makers become too immersed in their own viewpoints, they often overlook external perspectives. Therefore, to assess the potential outcomes of a decision, one should investigate the objective circumstances underlying the decision. Consider evaluating options from a broader temporal and spatial perspective, such as Andy Grove pretending to be the new CEO entering through the front door and cutting the memory chip business; Kai-Fu Lee hypothesizing that tomorrow's headlines will report on his two choices — one being emotional but unjust, the other just but unfeeling, and then choosing to be just as a leader; Jeff Bezos imagining himself at 80 looking back, using the "regret minimization framework."

4. Prepare for Wrong Decisions

When considering the outcomes of decisions, you should contemplate both the best and worst-case scenarios to understand your position. If the situation approaches the worst outcome, you can respond in a timely manner. Additionally, you can establish signals that make you aware of your actions, thereby weakening the inertia of behavior and correcting decisions promptly. Notably, to increase the speed of decision-making, Bezos believes that decisions are inherently unequal and should never be treated equally — reversible decisions should use lightweight decision-making processes.

How to Build a Good Relationship with a Mentor?

· 6 min read

Research shows that individuals with mentors perform better, advance more quickly in their careers, and experience greater satisfaction in both work and life. Mentors also benefit from the relationship, gaining insights while teaching others. Despite the many advantages—76% of professionals believe mentors are important for growth—over 54% of people lack such relationships.

The issue often lies in people not knowing how to find a mentor or build a relationship. The following nine steps can help you.

1. Clarify Your Goals and Specific Needs

Take out a pen and paper and write down your career goals. Ensure these goals are SMART. Then, list the biggest obstacles to achieving these goals. These specific needs will help you determine what kind of mentor you should seek. Perhaps you need to develop new skills, expand your network in a specific field, or build confidence for tough negotiations. Once you understand the person you want to become and the gaps and opportunities to get there, you can identify how a mentor can truly assist you.

2. Write Down the "Job Requirements" for Your Ideal Mentor

Knowing your goals and how to achieve them, think about how a mentor can help you. Describe the type of mentor who can help you seize the greatest opportunities or navigate challenges. Specifically, you may need a mentor to help you complete a project, introduce you to someone at a certain level in a specific industry, or guide you through difficult negotiations. Be sure to include "why" in your job requirements—just as companies want potential candidates to understand their broader direction, explain why mentoring you will yield greater rewards. When you reach out to potential mentors, share your job requirements so they understand why you're seeking mentorship and are more willing to help (as mentioned in points four and five).

3. Look for Mentors Through Your Second-Degree Connections

Mentors can come from anywhere. They might be part of your LinkedIn network, professional circles, or people you meet at conferences. Importantly, while people are undoubtedly busy, being invited to be a mentor is a tremendous compliment. People may decline, but it remains a positive interaction; be bold in trying and making requests, even if you think they might not have time for you. Let them decide whether to accept or decline.

4. Make Your Request (and Keep It Simple)

Asking someone to be your mentor for the first, second, or even third time can feel a bit awkward. You likely have never been invited to be someone else's mentor or taught anyone how to make this request. Embrace that discomfort. There's nothing wrong with asking, but take it slow. Invite others for an initial conversation to learn about their work and interests. Once you both know each other better, and if there's mutual agreement, you can make more requests for them to be your mentor. Conversely, sending a long email asking a stranger to be your mentor is less likely to be accepted.

5. Conduct the First Conversation

Your first conversation with a potential mentor has two goals. First, you want to determine if this person is the right mentor for you. Second, find out if they are open to mentoring you. How you conduct the conversation will depend on you, but generally, you’ll want to do the following:

  • Make the other person feel at ease. Choose a convenient location for them, prepare coffee (or tea), and keep the meeting low-pressure.

  • Spend time getting to know them. Ideally, let the mentor speak more, keeping your speaking time under 30%.

  • It’s okay to ask for small help right from the start. In fact, it may even help build the relationship.

  • Make a clear request: "I really enjoyed this conversation. If I make some progress on my goals within a month, could I follow up with you?"

  • Express gratitude, then follow up via email to thank them again.

6. Start Simple

For your next meeting, follow up on the previous one and keep it simple. Once they confirm a follow-up meeting, send an email outlining the agenda and hinting at building a long-term relationship. An example could be, "In our next chat, I’d like to quickly review what we discussed last time, and then I want to expand on that topic. I’ll prepare some specific questions that I think you can help me answer."

7. Establish a Structured Accountability Process and Draft a Mentor Agreement

After having one or two simple conversations, try to make a more formal request: would this person be willing to sit down with you once a month for the next six months until you achieve your goals or solve your issues? If they agree, consider drafting a simple one-page document outlining the tasks you aim to complete during these six months. While this may seem a bit excessive, it will clarify the goals for both you and your mentor. It will also help you define clear meeting content for each session. You might suggest, "I really appreciate your time and help, and I want to ensure I make the most of it. I was thinking I could prepare a simple document outlining my goals, my commitments to you, and the milestones I hope to achieve in the next three months. I think this will help keep me accountable and prepared for our conversations. Do you agree?"

8. Keep Following Up and Say Thank You

After each meeting, be sure to send a thank-you note. Additionally, when your mentoring relationship concludes, continue to express your gratitude. I once had a mentee email me two years after we worked together, and it made me very happy. In return, I helped her establish some new and interesting connections, and she did the same for me. So remember, asking for help is okay, but always ensure you express appropriate gratitude!

9. Use the Right Tools

To efficiently implement the above steps, I created a dedicated tool for myself Guanxi.io - End-to-End Encrypted Personal CRM, Free Registration, now open source, welcome to star.

How to Know If You Talk Too Much?

· 4 min read

When you are talking non-stop, it can be hard to notice that you are being overly enthusiastic. You may not even realize that the other person is only responding out of politeness or hinting that they want to leave.

Talking to others happens in three stages. In the first stage, your goals are clear, targeted, and concise. But then you may unconsciously find that the more you talk, the easier it feels. It’s so wonderful for you, relieving your tension, but it may not be as interesting for the other person. This is the second stage—when you feel good talking, you don’t even notice that the other person is not listening.

In the third stage, you have lost control of what you are saying and start to realize you might need to pull the other person back in. At this point, your monologue is disguised as a conversation, and you subconsciously sense that the other person is a bit annoyed. Can you guess what happens next?

Unfortunately, the typical response at this point is to talk even more to gain the other person's attention, rather than finding ways to get them to speak and listening to regain their interest.

Why does this happen? First, the reason is simple: everyone has a desire to be heard. But secondly, talking about oneself releases dopamine, the pleasure hormone. One reason talkative people keep talking is that they become addicted to this feeling of pleasure.

There is a method that has helped me, and it may help you too. It’s called the traffic light method. It is effective when talking to most people, especially Type A personalities, who often have less patience.

In the first 20 seconds of a conversation, you are at a green light: as long as your comments are relevant to the topic and serve the other person, your audience will appreciate you. Unless you are an exceptionally gifted speaker, talking for more than about half a minute will generally be considered boring and too talkative. So, in the next 20 seconds, the light turns yellow—now the other person starts to lose interest or thinks you are too verbose. By the 40-second mark, you hit a red light. Occasionally, you might feel tempted to run the red light and keep chatting, but most of the time, it’s best to stop, or you’ll be in trouble.

The traffic light method is just the first step to preventing you from talking too much. It’s also important to understand the underlying motivations for why you talk so much. Are you talking more just to feel good? Are you explaining your thoughts? Or is it because you often have to listen to others, and when you find an opportunity to speak, you just unload?

Regardless of the reason, talking too much usually leads to interruptions in the conversation and may result in both of you talking at each other instead of having a dialogue. This does not help advance the conversation or your relationship.

One reason some people talk too much is that they want to show the other person how smart they are, even though deep down, they may not feel that way. If this is the case, you should know that continuing to talk will only diminish the other person's impression of you.

Of course, some people just talk too much because they "may not have a sense of time passing." If this is the case, the solution is not to introspect but to cultivate a sense of how long 20 seconds and 40 seconds are. For example, use a watch to time yourself while on a call. You will gradually develop the habit of stopping when your traffic light is still green or at least yellow.

Finally, remember that if you do not involve the other person in the conversation, even a 20-second monologue can be off-putting. To avoid this, you can ask questions, try to build on what the other person says, and find ways to engage them in the dialogue. This way, you can achieve a real conversation instead of an ineffective one.

Patrick McKenzie: Why is Stripe's Engineering Quality So High?

· 2 min read

You need enough chips to play the game — hire a sufficient number of high-caliber talents who care about quality and are smart enough. You must repeatedly emphasize the company's culture of valuing quality, forming formal routines to check large pieces of work and fix what needs fixing.

Tactically, there is a best practice — reduce the difficulty of doing the right thing. The Stripe tech team makes various trade-offs to ensure that any engineer can improve any part of the system. Encourage a sense of ownership.

There are dedicated internal tools to check the level of internationalization, which may seem tedious but is worth the time. It goes back to the company's culture; when an individual contributor says, "I spent some time on i18n last week," they should assume that leadership values this enough to respond, "Of course, you took the time to do this, great job."

"Open a ticket for the relevant team, and someone will handle it" is a good practice, but if you can push this system to resolve tickets faster and better, you can motivate people to open tickets.

The company provides dedicated channels, such as mailing list aliases, to report product quality bugs. There are dedicated teams to triage these tasks or assign them to the appropriate groups for fixing, along with established routines to inform the entire company about the bug fix rate.

Before making significant API changes, both internal and external testing should be conducted. Regularly ask, "Who has a real Stripe account on hand? Can we update to the beta version and try it out?" People need to set aside dedicated time for this and document it thoroughly — imagine having a group of picky customers; while you may not be able to use your product as deeply and broadly as users do, this approach is much better than guessing.

Discovering that "a piece of payment code hasn't been touched in 5 years, and I don't know how it works, and there are no tests" is rare but valuable for the engineering team.

None of the above is high-tech, nor is it a sufficient condition to guarantee quality. Stripe never settles for the current level of quality and does not passively say, "Our standards are high," but rather maintains a proactive approach to continuously improve.

Four Essential Lessons from The Making of a Manager

· 3 min read

Julie Zhuo, Vice President of Product Design at Facebook, provides practical advice for those aspiring to be excellent managers based on her experiences from her first role as a manager in The Making of a Manager.

Focus on Improving Overall Team Output Rather Than Daily Activities

When Julie first became the design director at Facebook, like many new managers, she thought her job was to hold meetings, check on progress, and provide feedback. Over nearly a decade, she gradually realized that a manager should enable the team to achieve better output and focus on broader issues like collaboration efficiency. Excellent managers should not be limited to daily activities but should lead their teams in pursuing outstanding results and progress.

Andy Grove's first lesson for managers states that a manager's output = the output of their own team under their influence + the output of adjacent teams.

Provide Feedback Objectively and Incorporate Multiple Perspectives for Reference

Giving feedback to team members is an essential part of a manager's job. This can be challenging, as criticism can sometimes hurt feelings. To address this, Julie proposes two methods. The first is to provide timely feedback on recently completed tasks, ensuring that the focus is on the issue rather than the person, whether through email or face-to-face. The second is to introduce multiple perspectives, allowing team members to understand viewpoints from others beyond just the manager, which can often be objective and valuable.

Hold Meetings with Clear Goals and Expected Outcomes

Meetings often come across as lengthy, unnecessary, and bureaucratic, especially when their purpose is unclear. To ensure efficiency, it is essential to have a structured process and clearly defined expected outcomes. Expected outcomes can include information presentation and sharing or making a specific decision. The latter is more complex and requires the participation of all individuals directly affected by that decision. Managers should ensure that relevant information is presented completely and objectively, and that everyone's opinions are heard and respected.

Plan Ahead for Hiring Decisions

Recruitment is a significant responsibility for managers. It is not simply about quickly finding someone to fill a vacancy without considering the candidate's skills and experience; it requires planning ahead. At the beginning of each year, Julie analyzes and lists the positions that need to be filled. She summarizes the following questions for managers looking to create their own hiring plans to consider.

  • Considering the team's primary tasks and budget, how many new employees can you realistically hire?
  • What skills does the existing team need most? Which skills are already well represented?
  • How many years of relevant work experience do new hires need?
  • What personalities or traits can enhance the diversity of the existing team?

Five Management Principles of Leading Navy SEALs

· 3 min read

Imagine you are on the most dangerous battlefield in Iraq, as a commander making decisions that affect the lives of soldiers. How would you lead your team? In the book "Extreme Ownership," the authors, who served as task force commanders in the Navy SEALs, share their observations and experiences on the battlefield to provide insights for other teams striving for success.

Dare to Take Responsibility for Failures

One of the authors, Jocko Willink, took full responsibility after a major incident involving friendly fire that resulted in soldier casualties, yet he was able to keep his job. This was because his superior understood a key principle: great leaders never shirk responsibility. Instead, they actively seek criticism and meticulously document ways to improve. If leaders avoid responsibility, their subordinates will follow suit.

Understand the Importance of the Mission

On the battlefield, when Willink was informed by his commander that his elite unit would be working alongside the newly formed Iraqi army, he privately questioned the army's capability and loyalty, as well as the correctness of the orders. However, he gradually realized that this move would facilitate the smooth withdrawal of U.S. forces from Iraq. He then communicated the mission and its purpose to his troops, ultimately accomplishing the task successfully.

Leaders should fully understand the significance of each action and communicate it to all team members before executing the mission. When there are doubts about the orders received, it is wise to pause and think carefully rather than hastily spreading concerns. Alternatively, you can seek clarification from superiors.

Actively Collaborate with Allies

“Cover and move” is one of the most fundamental strategies of the Navy SEALs, meaning that sometimes you need to seek collaboration with allies. The book's other author, Leif Babin, once placed his team in an avoidable extreme situation by failing to use this strategy. Leaders need to look at the bigger picture and seek strategic support from other teams within the organization rather than constantly opposing them.

Clarify Priorities to Improve Efficiency

On the battlefield in Ramadi, Babin faced a situation where his team was deep inside enemy territory, with no backup, and one team member was injured and exposed, while bombs were placed at the exit. However, after clearly identifying and addressing the three main priorities—ensuring safety, approaching the injured, and counting personnel—he was ultimately able to lead the team out of danger successfully.

The battlefield is often complex, and leaders must remain calm and seek the best solutions. Therefore, the principle of “prioritize and execute” is crucial. Leaders should first identify the highest priority tasks and focus on resolving them before shifting attention to the next priority.

Identify and Mitigate Risks in Advance

Before conducting a rescue mission, Babin thoroughly considered various scenarios, such as ambushes with explosives and armed guards, allowing him to act smoothly and successfully mitigate risks.

Developing a comprehensive plan helps to identify and reduce risks in advance, increasing the chances of success. Additionally, leaders should promptly inform team members of relevant contingency plans. While focusing on manageable risks, they must also be aware that some risks cannot be avoided.

Three Skills to Boost Team Performance

· 3 min read

Teamwork is crucial. Even geniuses like Turing need help from others to crack the Enigma. So, what are the key factors that enable a team to succeed? People naturally believe it is the abilities and levels of individual members, but the reality might surprise you.

At the beginning of The Culture Code, the author describes an interesting competition among kindergarten children, business school students, and lawyers: participants had to build the tallest structure possible using raw spaghetti, tape, string, and marshmallows. The competition ended with the kindergarten children winning. Why did the seemingly least capable group manage to defeat the others? Upon reviewing the competition, we found that business school students typically analyzed the problem first, discussed the right strategy, and then quietly established a hierarchy; whereas the kindergarten children simply started building and experimenting with different approaches.

A strong team culture emphasizes communication among team members rather than individual skills. Such a culture maximizes overall performance. To foster a positive team culture that enhances collective performance, there are three key skills.

1. Create a Safe Work Environment

People are more likely to unleash their full potential in a familiar environment, so creating a safe space is crucial. The sense of safety within a team comes from familiarity and connection among its members. If you want to cultivate a safe work environment, it is essential to learn to listen and let others know they are heard. When people know that what they say is being listened to and valued, they feel secure. You can provide appropriate feedback while listening, which enhances interaction and makes people feel needed.

2. Be Vulnerable to Build Trust

Although it may seem counterintuitive, showing vulnerability can indeed enhance team performance. We often observe the behaviors of those around us and learn by imitation. Admitting your weaknesses and mistakes to team members shows that they can do the same. This helps to strengthen internal trust among the team.

At the same time, displaying your shortcomings expresses an expectation for collaboration. When you show that you rely on others for help, they can also comfortably acknowledge their need for assistance. Over time, everyone understands that they shouldn’t bear everything alone, naturally fostering a sense of unity within the team.

3. Establish Common Goals and Reinforce Them

A steadfast pursuit of common goals is key to good team performance. A team's common goal refers to the beliefs and values that motivate the actions of its members. This common goal clarifies the team's self-identity and communicates it to the outside world. Psychologist Gabriele Oettingen has demonstrated through several studies that communicating common goals helps unite members and makes achieving those goals easier.

To deepen members' impressions, repetition is essential. To express things more clearly, repeating them ten or even a hundred times is worthwhile. You can repeatedly convey the company's mission in meetings or turn the goals into catchy slogans.

Amazon's 2016 Letter to Shareholders: The 4 Foundations for Sustaining Growth in Large Companies

· 5 min read

Only Live "Day 1" = Without Growth, There is Death

The office building where Amazon CEO Jeff Bezos works is called "Day 1." Over the years, no matter which other building he moves to, he always brings this same name with him. Therefore, he has a lot of authority on this term.

Someone might ask, what is "Day 2"? Day 2 is stagnation, followed by irrelevance, then suffocating, painful decline, and finally, death.

This is why Bezos believes that every day should be Day 1; without growth, there is death. So how do we prevent "Day 2"? There are four foundations.

A True Obsession with Customers

There are countless business strategies, but why focus on "obsession with customers"? The benefits are numerous, with the biggest being: Customers are always dissatisfied, even when they say they are satisfied. Customers often don’t know what they truly want: they actually want something better. If you want to serve customers well, you must create products and services in their name. For example, the Prime service was not something customers asked Amazon for, but the results proved it was indeed what they wanted.

Maintaining "Day 1" requires patience; you need a lot of experimentation and to accept failure. Planting seeds and growing saplings takes time, but once you see what makes users happy, double down on it.

Resisting Proxies

As companies grow larger, we often tend to rely on proxies or intermediaries. This form of dependency can take many shapes and is very much "Day 2." Here are two examples:

  1. Relying on processes as proxies for results. Good processes serve you, allowing you to better serve customers. You must never serve the process. Why? When you serve the process, you only focus on doing the process correctly, regardless of the outcome. When failures occur, only inexperienced leaders say, "We followed the process," while seasoned leaders say, "We found an opportunity to improve the process." Constantly ask yourself, does the process own us, or do we own the process?

  2. Relying on market research and customer surveys as proxies for customers. When you invent and design products, relying on research can be dangerous; "satisfaction increased from 47% to 55%" is a vague statement that can be misleading.

    1. Good investors and designers deeply understand customers; they invest significant energy in developing intuition and study numerous fascinating anecdotes rather than average data from surveys. They exist to design.
    2. Bezos does not oppose public testing and surveys; they help you identify blind spots, but as a provider of products and services, you must prioritize your vision and unique value over customer feedback. Exceptional customer experiences begin with intuition, curiosity, playfulness, courage, and taste—qualities that user surveys cannot provide.

The trends of the world favor those who align with them and doom those who resist. These trends are not hard to identify, but strangely, large companies often struggle to embrace them. One such trend today is machine learning and artificial intelligence.

Over the past few decades, many tasks could be solved with precise rules and algorithms; next, with machine learning, we can tackle tasks that cannot be described by exact rules.

Much of what happens in machine learning occurs at the foundational level, out of sight, but you can at least call them very simply via APIs.

Fast Decision-Making

"Day 2" companies make high-quality decisions, but their decision-making speed is very slow. To maintain the energy and vitality of "Day 1," you must make "high-quality and high-speed" decisions. This is important not only because "speed" matters in the business world but also because having an atmosphere of "fast decision-making" is more enjoyable.

How can you achieve fast decision-making? Bezos does not have a complete answer, but here are some thoughts:

  1. Decisions are inherently unequal; never treat them all the same. Reversible decisions should use lightweight decision-making processes.

  2. Most decisions can be made when you have 70% of the information. Waiting until you have 90% may be too late. Also, in either case, you must quickly identify and address bad decisions. When you are highly responsive, making mistakes is cheap, while being slow is costly.

  3. Use a management style of "==I disagree, but I commit to executing well==." This saves a lot of time spent on disputes.

    1. When no one knows the outcome, ask, "I know we have a disagreement, but are you willing to take a gamble with me? I disagree, but I commit to executing well?" The answer you get is likely to be, "Sure."
    2. The party that disagrees does not commit out of indifference but from a genuine and sincere disagreement, allowing the other party to reconsider your "disagreement" while still acting quickly due to your commitment.
  4. Identify misalignments early and escalate them immediately. Sometimes, goals between teams conflict, and disputes at the same level cannot be resolved, wasting a lot of time and energy. In such cases, escalating will make decision-making faster and easier.

Nir Eyal: How to be indistractable?

· 2 min read

The ability to stay focused is the key to achieve your goals in a world full of temptations. Nir Eyal, the author of the bestseller book, Hooked, revealed his way of fighting against distractions in his new book, indistractable.

Why are we so easily distracted? There might be external causes sometimes. However, in most cases, it turns out distraction has internal sources. We are distracted because we want to escape from discomfort. To avoid distraction, we need to solve the problem from inside.

Identify internal triggers and beat them

Next time you feel inclined to distraction, try to record your feelings and what triggers that. That’s how you can identify internal triggers in the first place. Then you can try to avoid the triggers by making tasks more fun.

Plan quality time for yourself before work

To have a plan can prevent you from distraction because you will know what exactly you are striving for. However, scheduling for work is not the best place to start. On the contrary, plan for yourself and your relationships first, and then you will not escape to your hobbies in the middle of work.

Cut down on office distractions and learn to organize

Office distractions such as email notifications are typical external triggers. Let others know that you need to be entirely focused on the task at hand, so they are not supposed to interrupt you. Also, learn to sort your emails more effectively and make sure only a few emails demand your attention every day. Other than emails, there are other forms of distraction in the workplace. Learn to organize them in the least distracting way.

Make use of pacts to prevent distraction

You have to be aware of the fact that the battle between you and distraction is not a one-day fight. Maybe you can try an APP to block your access to distracting. Or find a study buddy to focus together. Imposing fines for missing targets also sounds practical, which has been testified by the author.

Contribute to a functional work culture

Dysfunctional work culture is the beginning of endless distraction, in which employees are overburdened and even required to answer emails after work. Employers should create a platform that enables employees to give feedbacks safely without be worried about getting fired. Step by step, the company can head towards a functional work culture.

Nir Eyal: How to Stay Focused?

· 2 min read

The ability to stay focused is key to achieving your true self. In a world full of distractions, this ability has become more important than ever. Nir Eyal, author of "Hooked," offers us effective methods to eliminate distractions and maintain focus.

Why are we always so easily distracted? It turns out that distractions often have internal causes. We get distracted because we constantly seek to escape psychological discomfort. To avoid distractions, we need to address the issues from the inside out.

Identify Internal Triggers of Distraction

Next time you feel your attention slipping, try to record your feelings and the reasons behind them. This way, you can understand the internal triggers right from the start. Afterward, you can avoid distractions by making tasks more enjoyable.

Prioritize Time for Yourself Before Scheduling Work

Creating a plan can prevent distractions because you will clearly know your goals. However, prioritizing work time is not the best starting point. On the contrary, you should first plan for yourself and your relationships. By doing so, playtime is already scheduled, and you won’t interrupt your work out of a desire to play. In other words, work when it’s time to work, and play when it’s time to play.

Reduce Office Distractions and Learn to Organize

There are often many external factors in the workplace that distract attention, such as email notifications. Try to let others know that you need to focus entirely on the task at hand so that they won’t disturb you. Additionally, learn how to effectively organize your emails to ensure that you only have a few to focus on each day. Besides emails, there are many other forms of distractions in the workplace; learn to manage them with minimal effort.

Use Pacts to Prevent Distraction

One undeniable fact is that our struggle with distractions is not a one-day battle. You can use apps that block distractions. Alternatively, work together with others to stay focused. Also, imposing fines as a penalty for not meeting goals can be very effective; this practice has greatly benefited the author.

Foster a Healthy Work Culture

An imbalanced work culture is the beginning of endless distractions. In an unbalanced work culture, employees are heavily burdened and may even be expected to respond to emails after hours. Employers should create a platform that allows employees to provide feedback safely without fear of being fired.

Google's Software Engineering: Project Management

· 3 min read

20% Time

Engineers are allowed to spend 20% of their work time on any project they want to contribute to, without needing approval from their managers or others. This is highly valuable because:

  1. As long as there are good ideas, no matter how bad they sound at first, there is ample time to develop them to a demo-ready state.
  2. It allows managers to see activities they might not otherwise notice; otherwise, engineers might engage in "skunkworks" and work secretly.
  3. It enables engineers to work on interesting projects, preventing burnout and motivating them to be happier. The output gap between motivated engineers and burnt-out engineers far exceeds 20%.
  4. It encourages innovation; if others around you are working on 20% projects, you will be inspired to do the same.

OKRs

Individuals and teams must publicly document their objectives and how they measure them.

  • Objectives
    • Set quarterly and annual goals.
    • Individual and team goals should align with the larger group’s goals.
  • Key Results: Measurable key results can quantify progress towards objectives, ranging from 0 to 1.
  • Set OKRs high; generally, achieving around 0.65 is a good standard. If your results are often below this, your goals may be set too high; if above, they may be too low.
  • Benefits
    • Everyone knows what others are working on, fostering mutual motivation.
    • Provides purpose to execution, making it easier to achieve goals.
  • OKRs are not directly related to performance evaluations.

Should the Project Continue or Be Terminated?

While the review process for major new releases is systematic, there is no definitive answer to whether a project should continue; some decisions are bottom-up, while others are top-down.

Reorganization

Splitting and merging teams is common, seemingly optimizing efficiency.

My Evaluation

The results of 20% time are positive, having incubated significant projects like Gmail and AdSense. In a competitive environment, encouraging talented engineers to spend time on new initiatives is highly beneficial. Promoting 20% time is also a unique strategy to attract talent when the company is small and needs to offer excellent benefits. I tend to view 20% time as a management style rather than a guaranteed path to success.

The distinction between OKRs and performance evaluations is crucial—this means separating vision from execution and goal management from performance management. For example, asking "Did you reach the destination?" compared to "Is the car you drove a good one?" are two different questions. Similarly, poor product sales and whether engineers produced a good product are two separate issues.

For regular engineers, maintaining good relationships with other teams in a large company, including those unrelated to your specific work, is important, as it increases your demand in the labor market. This way, in the event of a reorganization or other adverse events, you will have more options.

Google Software Engineering: Software Development

· 6 min read

It is widely recognized that Google is a company with exceptional engineering capabilities. What are its best engineering practices? What insights can we gain from them? What aspects have drawn criticism? We will discuss these details gradually, with this article primarily focusing on development.

Google Software Engineering - Software Development

Codebase

  • As of 2015, there are 2 billion lines of code in a small number of Monorepo single codebases, with the vast majority of the code visible to everyone. Google encourages engineers to make changes when they see issues, as long as all reviewers approve, the changes can be integrated.
  • Almost all development occurs at the head of the codebase, rather than on branches, to avoid issues during merging and to facilitate safe fixes.
  • Every change triggers tests, and any errors are reported to the author and reviewers within minutes.
  • Each subtree of the codebase has at least two owners; other developers can submit modifications, but approval from the owners is required for integration.

Build System

  • The distributed build system Bazel makes compilation, linking, and testing easy and fast.
  • Hundreds or thousands of machines are utilized.
  • High reliability, with deterministic input dependencies leading to predictable output results, avoiding strange, uncertain fluctuations.
  • Fast. Once a build result is cached, dependent builds will directly use the cache without needing to recompile. Only the changed parts are rebuilt.
  • Pre-submit checks. Some quick tests can be executed before submission.

Code Review

  • There are code review tools in place.
  • All changes must undergo review.
  • After discovering a bug, you can point out the issue in the previous review, and relevant personnel will be notified via email.
  • Experimental code does not require mandatory review, but code in production must be reviewed.
  • Each change is encouraged to be as small as possible. Fewer than 100 lines is "small," fewer than 300 lines is "medium," fewer than 1000 lines is "large," and more than 1000 lines is "extremely large."

Testing

  • Unit tests
  • Integration tests, regression tests
  • Pre-submit checks
  • Automatic generation of test coverage
  • Conduct stress tests before deployment, generating relevant key metrics, especially latency and error rates as load varies.

Bug Tracking Tools

Bugs, feature requests, customer issues, processes, etc., are all recorded and need to be regularly triaged to confirm priorities and then assigned to the appropriate engineers.

Programming Languages

  • There are five official languages: C++, Java, Python, Go, JavaScript, to facilitate code reuse and collaborative development. Each language has a style guide.
  • Engineers undergo training in code readability.
  • Domain-specific languages (DSLs) are also unavoidable in certain contexts.
  • Data interaction between these languages primarily occurs through protocol buffers.
  • A common workflow is essential, regardless of the language used.

Debugging and Analysis Tools

  • When a server crashes, the crash information is automatically recorded.
  • Memory leaks are accompanied by the current heap objects.
  • There are numerous web tools to help you monitor RPC requests, change settings, resource consumption, etc.

Release

  • Most release work is performed by regular engineers.
  • Timely releases are crucial, as a fast release cadence greatly motivates engineers to work harder and receive feedback more quickly.
  • A typical release process includes:
    1. Finding the latest stable build, creating a release branch, possibly cherry-picking some minor changes.
    2. Running tests, building, and packaging.
    3. Deploying to a staging server for internal testing, where you can shadow online traffic to check for issues.
    4. Releasing to a canary environment to handle a small amount of traffic for public testing.
    5. Gradually releasing to all users.

Review of Releases

User-visible or significant releases must undergo reviews related to legal, privacy, security, reliability, and business requirements, ensuring relevant personnel are notified. There are dedicated tools to assist with this process.

Postmortem Reports

After a significant outage incident, the responsible parties must write a postmortem report, which includes:

  1. Incident title
  2. Summary
  3. Impact: duration, affected traffic, and profit loss
  4. Timeline: documenting the occurrence, diagnosis, and resolution
  5. Root causes
  6. What went well and what did not: what lessons can help others find and resolve issues more quickly and accurately next time?
  7. Next actionable items: what can be done to prevent similar incidents in the future?

Focus on the issue, not the person; the key here is to understand the problem itself and how to avoid similar issues in the future.

Code Rewrite

Large software systems are often rewritten every few years. The downside is the high cost, but the benefits include:

  1. Maintaining agility. Markets change, software requirements evolve, and code must adapt accordingly.
  2. Reducing complexity.
  3. Transferring knowledge to newcomers, giving them a sense of ownership.
  4. Enhancing engineer mobility and promoting cross-domain innovation.
  5. Adopting the latest technology stacks and methodologies.

My Comments

Google's single codebase and powerful build system are not easily replicable by small companies, as they lack the resources and capabilities to make their build systems as fast and agile. Staying small, simple, and fast allows small companies to operate more smoothly and focus more on core business logic.

Build systems are often customized, and your knowledge may not transfer or scale. A powerful build system can even be detrimental to newcomers, as it raises the cost of gaining a holistic view.

The inability to transfer and scale knowledge is also an issue with well-developed in-house tools. Throughout my career, I have tried to avoid using non-open-source internal tools, such as Uber's Schemaless, which are tailored for specific scenarios and not made public for broader use; in contrast, LinkedIn's Kafka is a good product with openness and scalability of knowledge.

In the open market, there are excellent tools available for the entire development, testing, integration, and release process. For example, in the JS community:

ProcessTools
CodebaseGithub, Gitlab, Bitbucket, gitolite
Code ReviewGithub Pull Requests, Phabricator
Pre-submit checks, testing, and lintinghusky, ava, istanbul, eslint, prettier
Bug TrackingGithub Issues, Phabricator
Testing and Continuous IntegrationCircleCI, TravisCI, TeamCity
DeploymentOnline service deployment with Heroku, Netlify, mobile app deployment with Fastlane, library publication with NPM

Finally, I may have an insight: companies that do not focus on the automation of these engineering processes will lose significant competitive advantage. I even set up a JS full-stack development framework OneFx for good engineering practices. The difference between fast and slow, high quality and low quality is often exponential because — typically, speed allows you to do more and faster, while poor quality leads to less and worse outcomes.