Skip to main content

BOZ Personal Growth Loops

· One min read

Architects model the world in system thinking to optimize everything. As an engineer and businessman, I am continually working on the orchestration of work and life and maintain a high personal growth rate. Lessons learned are generalized to the BOZ growth loops.

Personal Growth Loop

BOZ is the acronym for a big loop that engages three small loops:

  • Build and Sell Loop. Build products and sell them. Solve problems and get paid.
  • Outlook and Invest Loop. Be radically curious to seek truth from facts. And optimize the web of customers, channels, people, tech, and capital.
  • Zen MSEP Loop. Being present and do everything with mindfulness. Fuel the mind and body by moving, sleeping, eating, and playing well with people.

Two sources of distress

Stress is a good thing for people while the distress is not.

  1. Stagnation: You are stuck in one step of the loops.
  2. Frictions: Too many frictions prevent small wins.

Clarifying Responsibilities with RACI and DACI

· 2 min read

When the organization grows too big, it becomes unclear that who should do what and who should decide what to do. RACI and DACI are here to clarify those responsibilities.

  • RACI: figuring out who do what kinds of work
  • DACI: figuring out who decides what to do

The assumption here is that too many projects happen in parallel, and it is easy to lose focus. We should rely more on the team member mutually driving each other than one person as the single point of failure.

RACI

RACI is an acronym for the model:

  • Responsible: who are the ones responsible for certain kinds of tasks?
  • Accountable: which single one is the owner of the work and is accountable for the success and failure.
  • Consulted: who are the stakeholders that should be kept in the loop before completion.
  • Informed: Who should be informed of the progress though they are not formally consulted or directed contributing to the project.

DACI

RACI is an acronym for the model:

  • Driver: who is driving the decision-making process to a conclusion?
  • Approver: people who are approving the decision.
  • Contributor: who should contribute to the decision.
  • Informed: who should be informed of the final decision?

Why are they helpful?

  • they make responsibilities and accountabilities clear
  • the earlier those models introduced, the longer they will help the project
  • they balance resource allocations to avoid the single point of failures or burnouts

How Dropbox scale its design research

· 2 min read

Dropbox's design research team grew from 4 members to 30+ today. How do they scale the efforts healthily, even when the headcount for the team is limited? More researches usually mean more harm if they are done improperly.

And the major challenges for the scaling process are

  1. Untrained researchers will ask bad questions, misinterpret data, and make bad decisions.
  2. User researches happen anyway, with or without the research operation team.
  3. What kind of user research should be done by non-professionals, and what should be done by professionals?

Dropbox's Solution

  1. Provide the right tool for unmoderated research. e.g. UserTesting, UserZoom, Lookback.
  2. Real World Wednesday. Like research speed dating, 5 researchers meet 5 users for 15 mins for each.
  3. Provide internal consultancy.

How to provide internal consultancy?

  1. Documentation: logistics, templates, privacy and security, tips and best practices (a lot of how-tos).
  2. On-on-one consulting

Result

  • For professional research operation team
    • they get more time and energy to focus on bigger strategic projects
  • For teams and products
    • they conduct more researches
    • they build better products
    • they are less blocked by the research operation team
    • they respect the research operation team more
  • For users
    • they get more empathy

Risks

  • Still, bad researches result in bad decisions.
  • It's hard to ensure the quality.

How Dropbox Scales Its User Research

· 2 min read

Dropbox's user research team has grown from 4 members to over 30 today. How can they scale their efforts healthily when the team size is limited? If research is done improperly, more user research often leads to more harm.

The main challenges faced during scaling are:

  1. Untrained researchers may ask the wrong questions, misinterpret data, and make incorrect decisions.
  2. User research will still occur, regardless of whether there is a research team.
  3. What type of user research should be conducted by non-professionals, and what type should be conducted by professionals?

Dropbox's Solutions

  1. Provide appropriate tools for unregulated research, such as UserTesting, UserZoom, Lookback, etc.
  2. "Real World Wednesdays." Like speed dating, 5 researchers meet with 5 users for 15 minutes each.
  3. Offer internal consulting.

How to Provide Internal Consulting?

  1. Documentation: logistics, templates, privacy and security, tips and best practices (a wealth of how-tos).
  2. One-on-one consulting.

Results

  • Professional user research team
    • They have more time and energy to focus on larger strategic projects.
  • For the team and product
    • They can conduct more research.
    • They create better products.
    • They are less blocked by the research team.
    • They have greater respect for the research team.
  • For users
    • They receive more empathy.

Risks

  • Poor research can still lead to incorrect decisions.
  • It is difficult to ensure quality.

Building Personal Infrastructure

· 5 min read

To enjoy a life of building software, media, and community as a ==hobby (all things here are NOT related to my job) / for pure pleasure== - why build personal infrastructure? And what are the strategies and executions to grow hobby projects? What is my current progress?

Everything starts from playing

Primary school

Playing Chinese copy of Tamiya mini 4WD

And play computer games on DOS.

Introduction to programming with Macromedia Authorware

Middle School

  • Built a website with Microsoft FrontPage to track Iraq War 2003
  • Built a text-based game with QBasic on Digital Dictionary

And then you can play in the classroom behind piles of textbooks :)

High School

  • Built with Lego Mindstorm RCX for FIRST Lego League Challenge
Lego RobotsChallenge

College & Grad School

  • used SQL injection to add 20 CNY credits to our school's meal card for my roommates. However, two days later, they were called by the cashier... LOL.

  • sniffed an audiobook app and then, based on its API, built my own Android App to get free audios.

Why is programming fun?

… the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning.

— The Mythical Man-month

  • Builders build for themselves anyway. Why not share them with others?
  • Builders build things anyway. Why not make them big?

Meanwhile, I came across some mind-blowing articles.

I conclude:

  • Amazon's flywheel is built for business with high fixed costs and optimizing returns to scale.
  • My life is with high fixed costs (limited time and energy), and scale economy is worth pursuing in this case.
  • I can achieve more than I think with a powerful personal infrastructure that gains progressive advantages over time.

Plus, some take-away from my previous pre-PMF startup experience

  1. Seek retention-first, data-driven growth. Sean Ellis: "Focusing on customer acquisition over 'awareness' takes discipline… At a certain scale, awareness/brand building makes sense. However, for the first year or two it's a total waste of money."
  2. Table stakes are table stakes. You don't need VC to build initial product. Ideas are just ideas. Build your team, build your product, and collaborate with people.

Developing Personal Infra Strategy

Execution

Here is the architecture of my hobby projects.

Tech Stack

Technologies: React, React Native Expo, GraphQL, KOA, TypeScript, AVA, Webpack, Airflow, MongoDB, Python Pandas and Flask, svelte, Metabase, Golang, etc.

Servers and APIs: Heroku, DigitalOcean, Azure, AWS, Github Pages, BunnyCDN.

Being an early majority to adopt proven new tech

System Architecture

Focus on building, not wasting time on SRE

Example 1

Example 2

"This architecture is not future-proof! / does not scale!"

Well...

  • Services are mostly stateless and horizontal scalable
  • Service collocation is a problem but you have to segregate them anyway when collaborating with various people and achieving Personal IaaS (individually-sellable).
  • Can always evolve to kubernetes.

Personal Root Metrics

Living a balanced life and keep everything on track, measured by data

The key metrics for a "retention-first growth" is cohort analysis.

Benchmarks for reference:

IndustryDay 1Day 7Day 30
2C402010
E-commerce35155
Gaming3015<5
EdTech25105
  • Values in unit of %

Results

Products

  • Beancount.io: Double-entry bookkeeping made easy for living your best financial life
  • touchbase.ai: Personal CRM: Smartly engage more in meaningful relationships
  • coderoma.com: One coding challenge per day

Framework

  • onefx.js.org: Building web & mobile apps with speed & quality

Helped my friends' projects to start from scratch

  • CocuSocial: Discover a different food and drink experience
  • helped my day job at IoTeX to build staking portal, blockchain explorer, desktop wallet, etc.
  • not to mention some other failed projects...

Media:

Community:

  • github.com/puncsky/system-design-and-architecture

Can I use your projects or join your community?

👍 Definitely and welcome! They are mostly open sourced or open for registration. Thank you for becoming our valued customer or community member!

👏 Feedback is highly appreciated!

❤️ Like it? Check this article at https://tianpan.co and follow me on https://twitter.com/intent/follow?original_referer=https%3A%2F%2Ftianpan.co%2F&region=follow_link&screen_name=tianpan10x :)

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