Skip to main content

Druck's Seven Sources of Innovation and Four Innovation Strategies

· 5 min read

Why do some people want to make money by becoming entrepreneurs? Because they want to beat the market—achieving returns that exceed the market at a cost lower than the market—meaning they want to obtain a profit margin higher than the market. The price exceeding the market comes from the scarcity/uniqueness of a product or service; to achieve uniqueness, one must innovate. Therefore, to become an entrepreneur, one must at least be an innovator.

Most companies succeed because they know how to continuously draw inspiration from the right things and consistently generate new ideas. How can one identify the most suitable sources of innovation to outperform competitors and stand out in the industry?

Seven Sources of Innovation

  • Internal

    • Unexpected occurrences: For example, when there was a sudden surge in the purchase of home appliances, Macy's limited sales while Bloomingdale's seized the opportunity to expand its appliance department, thereby increasing profits.

    • Changes in the market and industry: For instance, when the automotive market globalized, Volvo also followed suit, performing better than Citroën, which did not globalize quickly.

    • Weak links in processes: Pharmaceutical sales representative William Connor noticed a troublesome aspect of eye surgery: hemorrhage of the eye ligament. He suggested using enzymes to dissolve the ligament instead of cutting it, significantly reducing surgical risks, and this innovation was widely accepted in the field of ophthalmology. This innovation addressing a shortcoming brought his company substantial profits.

    • The gap between reality and perception (Is TK also a disciple of Drucker?): For example, early on, ferry freight mistakenly believed that the key to reducing time was to increase sailing speed, but in reality, this would lead to skyrocketing costs; the key issue was actually to reduce the time the ship was idle in port.

  • External: For example, politics, academia, science

    • Changes in social concepts: The growing enthusiasm for environmental protection and high technology has made the electric vehicle market thrive.
    • Changes in demographic structure: For instance, the increase in digital natives in China and the demand for online communities gave rise to Bilibili.
    • Hybridization of new knowledge: For example, computers are a hybrid product of mathematics, electronics, and programming technology developed over hundreds of years.

Both Small and Large Companies Need Innovation

A newly established company needs specific goals and plans, as detailed in The Five Stages of Company Building.

In the early stages of entrepreneurship, entrepreneurs should try different fields to find the right market. It is very likely that you will ultimately succeed in a field you never considered. The second step is to establish the correct financial focus. Ensuring that the company has sufficient funds to address issues when they arise is extremely important. The final step is to build a trustworthy management team for the company. This team should be established before the company’s team grows.

Not only small businesses need reform and innovation, but large industries also need fresh blood. In the initial stages, they should standardize the rules for innovating and phasing out the old within the company. Secondly, the newly innovated projects should be managed by new leaders. Lastly, companies should establish reward mechanisms to help improve employee performance and effectively review the impact of innovations.

Four Innovation Strategies

All In (Fustest with the mostest)

A wise entrepreneur should aim to become a pioneer in their industry, putting everything on the line to lead the way. Hoffmann-La Roche had a small chemical company, but he cleverly identified the business opportunity in the vitamin industry. Therefore, to produce and sell vitamins, he invested a large sum of money and hired many experts. Although it sounded very risky, this "gamble" ultimately paid off, and he remained a leader in the vitamin industry for 60 years.

Hit Them Where They Ain’t

Identifying vulnerabilities that competitors overlook is not easy, but there are two ways to achieve this. The first is to imitate competitors' ideas using newer and more appealing methods. For example, IBM imitated the ideas of competitor ENIAC and added more innovative concepts, ultimately profiting from it. Additionally, some companies can win by targeting their opponents' weaknesses, which is especially effective against complacent large companies.

Ecological Niches

This originally is a biological concept: Ecological niche refers to the environment a species inhabits and its lifestyle habits. Each species has its unique ecological niche, distinguishing it from other species.

A company that specializes in an irreplaceable field is more likely to succeed. A good example is the enzymes developed by William Connors. These enzymes later became a crucial step in cataract surgery. However, it is worth noting that this company could also lose its absolute advantage in the industry if competitors develop substitute drugs.

Changing Values and Characteristics

To increase demand for your product, you do not necessarily need to change the product itself. Instead, finding a method that better aligns with consumer interests may be more important. Entrepreneurs should understand what makes consumers willing to pay. For example, Gillette's strategy of offering razors for free while charging for blades was based on the company's realization that consumers were unwilling to pay more for blades than the razor itself.

Routable: A Startup Solving Intercompany Payment Issues

· One min read

The intercompany payment process is complex and requires integration with various systems, especially accounting software. Routable is dedicated to solving this problem for the middle market (companies with 100millionto100 million to 500 million in revenue). What sets Routable apart is that it helps you manage both workflows and the actual flow of money. Recently, startups focused on bill management have been gaining traction. Should we consider buying some stock in bill.com?

Productivity Tips from Professionals

· 2 min read

MIT surveyed nearly 20,000 professionals from around the world - 50% from North America, 21% from Europe, 19% from Asia, and the rest from Australia, South America, and Africa. Takeaways are ...

1. Sort tasks by importance and act with a clear goal.

  • Before writing anything of any length, prepare an outline in a logical order to help you stay on track.
  • Revise your daily calendar the night before to emphasize your priorities. Next to each agenda on your schedule, write down your goals.
  • Send a detailed agenda to all participants before any meeting.
  • When embarking on a large project, sketch out preliminary conclusions as soon as possible.
  • Before reading any lengthy material, determine your specific purpose for it.

2. Dealing with information & task overload.

  • Skip most messages by looking at the subject and sender.
  • Make daily processes, like getting dressed or eating breakfast, a routine so you don't spend time thinking about them.
  • Check your device's screen every hour, rather than every few minutes.
  • Break large projects into sections and reward yourself when you complete each section.
  • Delegate tasks that don't interfere with your top priorities, when feasible.
  • Set aside time in your daily schedule to deal with emergencies and unexpected events.

3. Your colleagues need short meetings, responsive communication, and clear direction.

  • Respond immediately to messages from those who are important to you.
  • To capture the audience's attention, speak from some notes rather than reading a prepared text.
  • Limit any meeting to 90 minutes or less, but preferably less. At the end of each session, delineate the next steps and responsibilities for those steps.
  • To improve your team's performance, establish procedures to prevent future mistakes instead of playing the blame game.
  • Establish clear goals and success metrics for any team effort.

What Makes Some People More Productive Than Others?

· 2 min read

MIT surveyed nearly 20,000 professionals from around the world, with 50% from North America, 21% from Europe, 19% from Asia, and the remainder from Australia, South America, and Africa. They identified methods that make people's productivity stand out.

1. Plan your work based on the importance of tasks, and act with clear goals.

  • Revise your daily schedule the night before, highlighting your priorities. Write down your goals next to each item on the calendar.
  • Send a detailed agenda to all participants before any meeting.
  • When starting a large project, outline preliminary conclusions as soon as possible.
  • Before reading any lengthy material, clarify your specific purpose for it.
  • Before writing anything of length, create a logically ordered outline to help you proceed step by step.

2. Develop effective techniques to manage information overload and tasks.

  • Turn daily routines, like getting dressed or having breakfast, into habits so you don't spend time thinking about them.
  • Allocate time in your daily schedule to handle urgent and unexpected events.
  • Check your device's screen once an hour instead of every few minutes.
  • Skip most messages by looking at the subject and sender.
  • Break large projects into smaller parts and reward yourself after completing each part.
  • Delegate tasks that do not affect your primary objectives whenever possible.

3. Understand colleagues' needs for brief meetings, responsive communication, and clear direction.

  • Limit any meeting to 90 minutes or less, preferably shorter. At the end of each meeting, outline the next steps and assign responsibilities for those steps.
  • Respond immediately to messages from people who are important to you.
  • To engage the audience, speak based on notes rather than reading a prepared text.
  • Establish clear goals and success metrics for any team's work.
  • To enhance your team's performance, create processes to prevent future mistakes rather than playing the blame game.

Designing Online Judge or Leetcode

· 3 min read

Requirements

An online judge is primarily a place where you can execute code remotely for educational or recruitment purposes. In this design, we focus on designing an OJ for interview preparation like Leetcode, with the following requirements:

  • It should have core OJ functionalities like fetching a problem, submitting the solution, compiling if needed, and executing it.
  • It should be highly available with an async design, since running code may take time.
  • It should be horizontal scalable or, saying, easy to scale-out.
  • It should be robust and secure to execute untrusted source code.

Architecture

The architecture below is featured on queueing for async execution and sandboxing for secure execution. And each component is separately deployable and scalable.

designing online judge system

Components

Presentation Layer

The user agent is usually a web or mobile app like coderoma.com. It displays the problem description and provides the user with a code editor to write and submit code.

When the user submits the code, the client will get a token since it is an async call. Then the client polls the server for the submission status.

API

Please see Public API Choices for the protocols we can choose from. And let’s design the interface itself here and GraphQL for example:

type Query {
problems(id: String): [Problem]
languageSetup(id: String!, languageId: LanguageId!): LanguageSetup
submission(token: String!) Submission
}

type Mutation {
createSubmission(
problemId: String!
code: String!
languageId: LanguageId!
): CreatedSubmission!
}

enum LanguageId {
JAVA
JS
ELIXIR
# ...
}


type Problem {
id: String!
title: String!
description: String!
supportedLanguages: [Float!]!
}

type LanguageSetup {
languageId: LanguageId!
template: String!
solutions: [String!]!
}

type Status {
id: Float!
description: String!
}

type Submission {
compileOutput: String
memory: Float
message: String
status: Status
stderr: String
stdout: String
time: String
token: String
}

type CreatedSubmission {
token: String!
}

The API layer records the submission in the database, publishes it into the queue, and returns a token for the client's future reference.

Code Execution Engine

Code execution engine (CEE) polls the queue for the code, uses a sandbox to compile and run the code and parses the metadata from the compilation and execution.

The sandbox could be LXC containers, Docker, virtual machines, etc. We can choose Docker for its ease of deployment.

Coderoma.com

I am recently learning Elixir and creating an online judge coderoma.com for my daily practice. It now supports Elixir and JavaScript. And I am adding more languages (like Java) and problems to it.

We may host future events to improve your coding skills. Join us at https://t.me/coderoma for the English community or use your WeChat to scan the following QR onetptp and reply 刷题 for the Chinese community.

onetptp

Why PWA?

· 2 min read

PWA means Progressive Web Apps. Back in 2014, the W3C published a draft of Service Worker, and then in 2015, Chrome supported it in the production environment. If we take the emergence of Service Worker, one of PWA's core technologies, as the start point of PWA, PWA's birth year is 2015. Before focusing on what a PWA is, let's first understand why we need it.

  1. User experience. Back to 2015, frontend developers spend a lot of time optimizing the web by speeding up the rendering of the initial page, making the animation smoother, etc. However, the native app still wins regarding the user experience.

  2. User retention. Native apps can be pinned onto the mobile phone's home screen and bring the users back into the app by notifications, while the web apps cannot.

  3. Leveraging device APIs. Android and iOS provide abundant device APIs that native apps can easily use with the user's permission. However, back then, the browser does not fully support them.

Google's tutorial of Why Build Progressive Web Apps summarizes the problem as "Broad Reach, Low Engagement".

UV and user duration comparison between web sites and native apps

To tackle the disadvantages of web apps in the mobile age, PWA comes into being.

What is PWA?

· 3 min read

When Google came up with the PWA, it didn't have a precise definition. It is not a specific technology, but a combination of techniques to improve the user experience. Those technologies are Web App Manifest, Service Worker, Web Push, etc.

The main features of PWA are as follows.

  • Reliability - instant loading, even in unstable or disconnected network environments.
  • User experience - rapid response, with smooth transition animations and feedback on user actions
  • Stickiness - like the Native App, can be added to the home screen and receive offline notifications.

PWA itself emphasizes Progressive (Progressive) in two perspectives.

  1. PWA is still evolving;
  2. PWA is downward-compatible and non-intrusive. It costs developers little to use the new features - developers can add it to the existing site progressively.

Google's "Progressive Web App Checklist" defines those minimum requirements for PWA.

  • served over HTTPS.
  • Pages should be responsive on desktop, tablet, and mobile devices
  • All URLs have content to show in case of disconnection, not the default browser page
  • requires Web App Manifest to be added to the desktop
  • Faster page loading and shorter delay, even on 3G networks
  • It displays correctly in all major browsers
  • Smooth animation with immediate feedback
  • Each page has its own URL

Features of PWA

A PWA combines the benefits of both the Web App and Native App and gives us the following features.

  • Progressive - for all browsers, as it is developed with progressive enhancements in mind
  • Connectivity agnostic - Ability to leverage Service Worker for offline or low network connectivity.
  • Native experiences - on the App Shell model, they should have Native App interactions.
  • Continued updates -- always up-to-date, no version or update issues.
  • Security - Served over HTTPS
  • Indexable - manifest files and Service Workers can be recognized and indexed by the search engine.
  • Stickiness - By pushing offline notifications, etc., you can get users back to your app.
  • Installable - users can easily add web apps to the home or desktop without going to an app store.
  • Linkable - share contents through links without downloading and installing them.

More specifically, what is the advantage of PWA over the native app? Openness and index-ability. Users can hardly install a native app instantly and search across native apps seamlessly.

The table below shows the comparison between t raditional Web App, Native App, and PWA for each feature.

InstallableLinkableUser experienceUser stickiness
Traditional Web
Native App😐✅️
PWA

Rewriting Facebook.com

· 3 min read

Facebook has evolved from its initial PHP server-side rendered website over the past 16 years. The external environment for web development has changed dramatically, and the cost of developing new features on the old architecture is increasing. To achieve an "app-like experience" and outstanding performance, they rewrote the entire main website using React and Relay, based on two principles — "as little as possible, as early as possible" and "enhancing developer experience to serve user experience."

Applying these two principles to four main elements (CSS, JavaScript, data, navigation) yields the following insights:

  1. Improve CSS
    1. Atomic CSS: Using atomic class CSS generated at build time reduced the homepage's CSS by 80% — because the number of entries in this CSS approaches log N — the total amount of styles grows with unique styles rather than the number of styles and features written in the code. We at Uber use Styletron for this purpose.
    2. CSS-in-JavaScript: Using methods like stylex.create({}) to generate styles for components, colocating them with the components to enhance removability and make styles easier to maintain.
    3. Consistently use rem for better scaling experience, automatically converting px to rem at build time.
    4. Implement dark mode using CSS variables.
    5. Use inline SVG in HTML as icons to solve the flash issue of delayed icon rendering.
  2. Split JavaScript to optimize performance
    1. Incrementally load code, breaking down 500 KB of total code into 50 KB Tier 1, 150 KB Tier 2, and 300 KB Tier 3, corresponding to skeleton content, initial screen content, and non-UI content, loading them as needed.
    2. Load experimental code only when necessary.
    3. Load corresponding code based on data, such as loading image components for image data and video components for video data.
    4. Budget the size of JavaScript and strictly monitor changes in code size.
  3. Load data as early as possible
    1. Preloading: Using Relay to immediately know the data needed for the initial screen, streaming this data while downloading the code.
    2. Reduce round trips using streaming.
    3. Delay loading data that is not currently needed.
  4. Define route mapping to accelerate navigation
    1. Obtain route definitions as early as possible.
    2. Pre-fetch resources early, starting when hovering or focusing. After navigation changes, if loading is not complete, retain the current page using React Suspense transitions until loading is finished before switching. This keeps the experience consistent with standard browser behavior.
    3. Download code and data in parallel. Typically, code is downloaded first followed by data, which is serial; Facebook allows data and code to download simultaneously in one round trip.

How not to die?

· 5 min read

Eating in the right way can significantly influence your health. Heard various advice from different sources, you may have difficulties to tell which one is the most helpful. The book "How Not to Die" provided eight practical suggestions backed up by scientific researches to help you establish a healthy diet.

Adopting a plant-based diet

The plant-based diet has been proven to have a much positive result on health than other foods we have in the US society. A China-Cornell-Oxford research project studied the menu of Chinese people in the 1980s. They found the Guizhou Province has the lowest mortality rate of coronary disease among men under 65, where people consumed the least animal-based food.

Additionally, plant-based diets can facilitate the patient's recovery. Lifestyle-medical pioneers Nathan Pritikin and Dean Ornish put patients with advanced heart disease on plant-based diets, and then they witnessed significant improvements in alleviating their symptoms. For example, the harmful plaque in patients' arteries dissolved faster than usual.

Having more fruits, especially berries

Four servings of fruit, including one type of berries, per day, is essential in a healthy diet. A single extra serving of fruit each day has proven to result in a 24-percent decline in the possibility of having Chronic Obstructive Pulmonary Disease. Notably, berries are particularly crucial due to their positive influence on liver function, cancer-resistance, and immune system. In 2014, a study taken among 14 patients revealed that their polyp load declined remarkably after nine months of having black raspberries.

Vegetables are indispensable

Vegetables play a vital role in preventing diseases. Known as "queen of greens", kale can reduce people's cholesterol levels. In a three-month study taken in 2008, high-cholesterol-level patients were asked to take three to four shots of kale juice every day. The proportion of beneficial cholesterol increased significantly, which was equal to the effect of running for 300 miles. Also, cruciferous vegetables help boost liver and lung functions.

Thus it is advised that two of the five daily servings should be leafy veggies (e.g., kale, arugula, and chard). Another two could be carrots, beets, or mushrooms. And finally, one serving of cruciferous vegetables like broccoli, cabbage, or cauliflower.

Recommending beans and whole grains for every meal

It is recommended by the American Institute for Cancer Research that beans or legumes should be included in every meal since they contain an animal-free protein as well as fibers. Navy and pinto beans can also be a good alternative to decrease bad cholesterol for people who don't like soy much. They can also function in slowing down sugar absorption and relaxing stomach. Similar to beans, people should also take whole grains three times daily. In 2015, research found that people who involve whole grains in diets live longer.

Taking more nuts and seeds for better nutrition

The Global Burden of Disease Study conducted between 1990 and 2010 found that eating too few seeds and nuts were the third-leading dietary cause for death and disability all over the world. Even a single serving of brazil nuts is equivalent to statins medicine in lowering cholesterol levels. Nuts and seeds facilitate the detoxification of excess iron. They can also build up bone density. Among all the seeds, chia, hemp, pumpkin, sesame, and sunflower seeds are recommended. It is an excellent alternative to sauces and dressings of your daily meals.

Placing herbs and spices in food

Not only can herbs and spices add flavor to a dish, but they are also essential in preventing diseases, especially cancer. Among all the food groups, they have the highest levels of antioxidants. In a study taken in 2010, Alzheimer participants who took saffron received better cognitive function outcomes than those who had a placebo. Additionally, spices like cloves and cinnamon can reduce depression because of an enzyme inhibited in them.

It is worth mentioning that turmeric is proven to be the best in preventing cancers among all the herbs and spices. Due to the fact that turmeric disappears rapidly, having it with black pepper can slow down the process and help absorption. Curry powder is a decent choice since it usually contains both pepper and turmeric. However, turmeric isn't for everybody. People with gallstones and kidney stones should restrict their intake.

Making water your first choice of beverages

Theoretically, a human should drink five 12-ounce beverages every day, and pure water is always the best choice. It is claimed by many articles that drinking eight glasses of water per day is a must, yet there is barely scientific evidence on that. Our daily intake of water comes from not only beverages but also fruits and vegetables.

In addition to water, coffee and tea can also be a good alternative since they are all good for health to some extent. For instance, research conducted by Tufts University revealed that tea functioned significantly in dropping blood pressure.

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.