跳到主要内容

BOZ 个人成长循环

· 阅读需 2 分钟

建筑师通过系统思维对世界进行建模,以优化一切。作为一名工程师和商人,我不断致力于工作与生活的协调,并保持高个人成长率。所学到的经验教训被概括为 BOZ 成长循环。

个人成长循环

BOZ 是一个大循环的缩写,它包含三个小循环:

  • 建造与销售循环。构建产品并销售它们。解决问题并获得报酬。
  • 展望与投资循环。保持极大的好奇心,从事实中寻求真相。优化客户、渠道、人员、技术和资本的网络。
  • 禅 MSEP 循环。保持当下,心怀觉知地做一切。通过运动、睡眠、饮食和与人良好相处来滋养身心。

两种压力来源

压力对人们来说是好事,而痛苦则不是。

  1. 停滞:你在循环的某一步骤中停滞不前。
  2. 摩擦:过多的摩擦阻碍了小胜利的实现。

使用 RACI 和 DACI 明确责任

· 阅读需 2 分钟

当组织规模过大时,谁应该做什么以及谁应该决定做什么变得不明确。RACI 和 DACI 旨在澄清这些责任。

  • RACI:确定谁做什么类型的工作
  • DACI:确定谁决定做什么

这里的假设是,太多项目并行进行,容易失去重点。我们应该更多依赖团队成员之间的相互推动,而不是依赖一个人作为单一故障点。

RACI

RACI 是该模型的首字母缩略词:

  • Responsible(负责):谁负责某些类型的任务?
  • Accountable(问责):哪个人是工作的所有者,并对成功和失败负责。
  • Consulted(咨询):在完成之前,哪些利益相关者应该保持在信息循环中。
  • Informed(知情):谁应该被告知进展情况,尽管他们没有正式被咨询或指导参与项目。

DACI

DACI 是该模型的首字母缩略词:

  • Driver(驱动者):谁在推动决策过程达成结论?
  • Approver(批准者):谁在批准决策。
  • Contributor(贡献者):谁应该对决策做出贡献。
  • Informed(知情):谁应该被告知最终决策?

为什么它们有帮助?

  • 它们使责任和问责变得明确
  • 这些模型引入得越早,它们对项目的帮助就会越长久
  • 它们平衡资源分配,以避免单一故障点或过度疲劳

Dropbox 如何扩展其设计研究

· 阅读需 2 分钟

Dropbox 的设计研究团队从 4 名成员增长到今天的 30 多名。他们如何在团队人数有限的情况下健康地扩展工作?如果研究进行不当,更多的研究通常意味着更多的危害。

扩展过程中面临的主要挑战是:

  1. 未经过培训的研究人员会提出糟糕的问题,误解数据,并做出错误的决策。
  2. 用户研究无论如何都会进行,无论是否有研究运营团队。
  3. 非专业人员应该进行什么样的用户研究,而专业人员又应该进行什么样的研究?

Dropbox 的解决方案

  1. 为无调节研究提供合适的工具。例如:UserTesting、UserZoom、Lookback。
  2. 实际世界星期三。像研究快速约会,5 名研究人员与 5 名用户每人会面 15 分钟。
  3. 提供内部咨询。

如何提供内部咨询?

  1. 文档:物流、模板、隐私和安全、技巧和最佳实践(大量的操作指南)。
  2. 一对一咨询。

结果

  • 对于专业研究运营团队
    • 他们有更多的时间和精力专注于更大的战略项目
  • 对于团队和产品
    • 他们进行更多的研究
    • 他们构建更好的产品
    • 他们受到研究运营团队的阻碍更少
    • 他们更尊重研究运营团队
  • 对于用户
    • 他们获得更多的同理心

风险

  • 仍然,糟糕的研究会导致糟糕的决策。
  • 确保质量很困难。

Dropbox 如何扩大其用户调研的规模

· 阅读需 2 分钟

Dropbox 的用研团队从 4 人发展到今天的 30 多人。在用研团队人数有限的情况下,如何健康地扩大工作规模?如果研究工作做得不当,更多的用户调研通常意味着更多的伤害。

而规模化过程中面临的主要挑战是

  1. 未经培训的研究人员会提出错误的问题,曲解数据,并做出错误的决策。
  2. 不管有没有用研团队,用户调研还是会发生。
  3. 什么样的用户研究应该由非专业人员来做,什么样的用户研究应该由专业人员来做?

Dropbox 的解决方案

  1. 提供合适的工具给未管制的研究.如 UserTesting、UserZoom、Lookback 等。
  2. "真实世界周三"。像速配约会一样,5 个研究员与 5 个用户见面,每人 15 分钟。
  3. 提供内部咨询。

如何提供内部咨询?

  1. 文档:物流、模板、隐私和安全、技巧和最佳实践(大量的 how-tos)。
  2. 一对一咨询

结果

  • 专业的用研团队
    • 他们有更多的时间和精力专注于更大的战略项目
  • 对于团队和产品
    • 他们能够进行更多的研究
    • 他们制造更好的产品
    • 他们被用研团队更少地 block
    • 他们更尊重用研团队
  • 对用户而言
    • 他们得到更多的同情

风险

  • 仍旧是糟糕的研究会导致错误的决定。
  • 很难保证质量。

构建个人基础设施

· 阅读需 7 分钟

为了享受构建软件、媒体和社区的生活作为一个 ==爱好(这里的所有事情与我的工作无关)/ 纯粹的乐趣== - 为什么要构建个人基础设施?有哪些策略和执行方法来发展爱好项目?我目前的进展如何?

一切都从玩耍开始

小学

玩中国版的田宫迷你四驱车

在DOS上玩电脑游戏。

使用Macromedia Authorware进行编程入门

初中

  • 用Microsoft FrontPage建立一个网站来跟踪2003年伊拉克战争
  • 在数字字典上用QBasic制作一个文本游戏

然后你可以在堆满教科书的教室里玩 :)

高中

  • 用乐高Mindstorm RCX为FIRST乐高联赛挑战赛构建
乐高机器人挑战

大学与研究生院

  • 使用SQL注入为我的室友的学校餐卡增加20元人民币的积分。然而,两天后,他们被收银员叫了……哈哈。

  • 嗅探一个有声读物应用,然后基于其API,构建自己的Android应用以获取免费音频。

为什么编程有趣?

… 制作复杂的拼图般的互锁移动部件并观察它们在微妙的循环中运作,体验从一开始就内置的原则所带来的后果的迷人之处。

— 《神话般的人月》

好吧,这很有趣。爱好与个人基础设施有什么关系?

  • 建造者无论如何都是为自己建造的。为什么不与他人分享呢?
  • 建造者无论如何都会建造东西。为什么不把它们做大呢?

同时,我遇到了一些令人震惊的文章。

我得出结论:

  • 亚马逊的飞轮是为高固定成本和优化规模回报的商业而构建的。
  • 我的生活有高固定成本(有限的时间和精力),在这种情况下,规模经济是值得追求的。
  • 我可以通过强大的个人基础设施获得随着时间推移而逐渐增加的优势,达到超出我想象的成就。

此外,我从之前的PMF前创业经验中获得了一些启示

  1. 寻求以留存为先的数据驱动增长。Sean Ellis:“关注客户获取而非‘知名度’需要纪律……在某种规模下,知名度/品牌建设是有意义的。然而,在头一两年,这完全是浪费钱。”
  2. 基本条件就是基本条件。你不需要风险投资来构建初始产品。点子只是点子。建立你的团队,构建你的产品,并与人合作。

发展个人基础设施策略

执行

这是我爱好项目的架构。

技术栈

技术:React、React Native Expo、GraphQL、KOA、TypeScript、AVA、Webpack、Airflow、MongoDB、Python Pandas和Flask、Svelte、Metabase、Golang等。

服务器和API:Heroku、DigitalOcean、Azure、AWS、Github Pages、BunnyCDN。

成为早期采用经过验证的新技术的主流

系统架构

专注于构建,而不是浪费时间在SRE上

示例1

示例2

“这个架构不是未来-proof的!/ 不可扩展!”

好吧...

  • 服务大多是无状态的,水平可扩展
  • 服务协作是一个问题,但你无论如何都必须在与不同的人合作和实现个人IaaS(可单独出售)时将它们隔离。
  • 始终可以演变为Kubernetes。

个人根指标

过上平衡的生活,保持一切正常,通过数据进行衡量

“以留存为先增长”的关键指标是用户群分析。

参考基准:

行业第1天第7天第30天
2C402010
电子商务35155
游戏3015<5
教育科技25105
  • 值以百分比为单位

结果

产品

  • Beancount.io:轻松实现双重记账,过上最佳财务生活
  • touchbase.ai:个人CRM:聪明地参与更有意义的关系
  • coderoma.com:每天一个编码挑战

框架

  • onefx.js.org:快速高质量构建Web和移动应用

帮助我的朋友的项目从零开始

  • CocuSocial: 发现不同的饮食和饮品体验
  • 帮助我在IoTeX的日常工作中构建质押门户、区块链浏览器、桌面钱包等。
  • 更不用说其他一些失败的项目了...

媒体:

社区:

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

我可以使用你的项目或加入你的社区吗?

👍 当然可以,欢迎!它们大多是开源的或开放注册。感谢您成为我们尊贵的客户或社区成员!

👏 非常感谢您的反馈!

❤️ 喜欢吗?请查看此文章 https://tianpan.co 并在 https://twitter.com/intent/follow?original_referer=https%3A%2F%2Ftianpan.co%2F&region=follow_link&screen_name=tianpan10x 上关注我 :)

德鲁克的七个创新之源与四个创新战略

· 阅读需 8 分钟

为什么有些人想要通过成为企业家挣钱?因为他们想打败市场——以低于市场的成本,获得超出市场的回报——即获得高于市场的利润率。而超出市场的价格源自产品或者服务的稀缺性/独特性,想要有独特性就必须创新,所以,想要成为企业家必须至少是创新者。

大多数的公司之所以可以成功,都是因为他们知道如何持续地在对的事物上受到启发,持续地产生新想法。如何辨别最合适的创新之源,以战胜对手,从产业中脱颖而出?

七个创新之源

  • 内部

    • 意外之事:比如面对家用电器的购买量的突升,梅西限量销售,而 Bloomingdale's 利用这个机会扩充了电器部门,从而提升了利润。

    • 市场和行业的发展:比如汽车市场全球化的时候,沃尔沃也跟着全球化,从而比没有快速全球化的雪铁龙做得好。

    • 流程中薄弱的环节:医药销售商William Connor在意识到了眼科手术的一个麻烦环节 : 眼韧带出血。所以他建议用酶溶解韧带代替切割韧带,这大大减少了手术风险,并被眼科医学领域广泛接受。这次针对短处的革新使他的公司获得了极大的利润。

    • 现实与感知之沟(难道 TK 也是德鲁克的使徒?):比如轮渡货运早年误以为缩短时间的关键在于提高航行速度,但实际上这样做会导致成本剧增,问题的关键其实在于降低船闲置在港口的时间。

  • 外部:比如政治、学术、科学

    • 社会观念的变化:对于环保和高科技的趋之若鹜让电车市场火热。
    • 人口结构变化:比如中国数字原住民的增多和对线上社区的需求催生了 Bilibili。
    • 新知识的杂交:比如计算机是数百年来数学、电子、编程技术的杂交产物。

大小公司都需要创新

一个新起步的公司需要具体目标和计划,具体见打造公司的五个阶段

在创业初期,企业家应该要在尝试不同领域后,找到合适的市场。因为很有可能你会在一个你从未想过的领域最终创业成功。第二步则是确立好正确的财政重心。保证公司在遇到问题时有足够的解决资金是极其重要的。最后一步是为公司建立一个可信赖的管理团队。这个团队应该要在公司团队壮大之前就完善起来。

不仅是小商人需要改革创新,大产业也同样需要注入新鲜的血液。初始阶段,他们应该标准化企业内铸新淘旧的规则。其次,革新后的项目由全新的负责人管控。最后一点是,企业应该要设置褒奖机制,这样可以帮助提高员工的生产表现,并有效回顾创新的效果。

四个创新战略

孤注一掷(Fustest with the mostest)

一个有智慧的企业家应该目标成为该行业的先行者,倾其所有敢为人先。Hoffmann-La Roche 拥有一个小的化工公司,但他机智地发现了维生素行业的商机。所以为了生产和销售维生素,他投资了一大笔钱雇了许多专家。虽然听起来十分有风险,但这次“赌博”最终有了好结果,他在60年间都是维他命行业的领军者。

攻其软肋 (Hit them where they ain’t)

发现对手注意不到的漏洞是十分不容易的,但有两种方法可以实现。第一个是用更新颖和吸引人的手法模仿对手的想法。举个例子,IBM 公司模仿对手 ENIAC 电脑公司的想法,并在此之上加以更创新的点子,最终从中获利。不仅如此,有些公司还可以通过痛击对方的短处而赢得胜利。这对于目中无人的大公司尤其奏效。

生态位 (Ecological Niches)

这原本是一个生物学概念:生态位是一个物种所处的环境以及其本身生活习性的总称。每个物种都有自己独特的生态位,借以跟其他物种作出区别。

一个公司如果专攻于不可替代的领域,则更容易成功。一个很好的例子就是 William Connors 开发的酶类。这类酶在后来成为了消除白内障手术中至关重要的一步。但是值得注意的是,这个公司也有很可能在对手研发出可替代的药物后,失去在该产业中的绝对优势。

变价值和特征 (Changing values and characteristics)

为了增加对于你的产品的需求量,你不一定需要改变产品本身。相反,找到一个更符合消费者利益的方法可能是更重要的。企业家应该要了解是什么让消费者愿意买单。举个例子,吉列公司之所以剃须刀免费、刀片付费,正是因为当时该公司意识到,消费者根本不愿意花高于刮胡刀本身得钱买刀片。

解决公司间支付问题的初创公司 Routable

· 阅读需 1 分钟

公司间支付流程繁复,需要与各种不同的系统,尤其是记账软件整合。Routable 致力于帮 middle market (companies with 100m 100m ~ 500m in revenue) 解决这个问题。Routable 的特色在于,它既帮你管理工作流,也帮你管理钱的实际流动。最近账单管理的初创公司有点火,要不要买点 bill.com 的股票呢?

专业人士的生产力技巧

· 阅读需 3 分钟

麻省理工学院对来自全球近 20,000 名专业人士进行了调查 - 50% 来自北美,21% 来自欧洲,19% 来自亚洲,其余来自澳大利亚、南美和非洲。要点包括 ...

1. 按重要性排序任务,并以明确的目标行动。

  • 在写任何长度的内容之前,准备一个逻辑顺序的提纲,以帮助你保持正轨。
  • 在前一天晚上修订你的日历,以强调你的优先事项。在你的日程安排旁边写下你的目标。
  • 在任何会议之前向所有参与者发送详细的议程。
  • 开始大型项目时,尽早勾勒出初步结论。
  • 在阅读任何冗长的材料之前,确定你具体的目的。

2. 处理信息和任务过载。

  • 通过查看主题和发件人跳过大多数消息。
  • 将日常过程(如穿衣或吃早餐)变成例行公事,这样你就不必花时间思考它们。
  • 每小时检查一次设备屏幕,而不是每几分钟检查一次。
  • 将大型项目分成几个部分,并在完成每个部分时奖励自己。
  • 在可行的情况下,委派那些不干扰你主要优先事项的任务。
  • 在你的日常日程中留出时间来处理紧急情况和意外事件。

3. 你的同事需要简短的会议、及时的沟通和明确的方向。

  • 立即回复来自重要人士的消息。
  • 为了吸引观众的注意力,尽量从一些笔记中发言,而不是阅读准备好的文本。
  • 将任何会议限制在 90 分钟或更少,但最好更少。在每个会议结束时,划定下一步的措施和责任。
  • 为了提高团队的表现,建立程序以防止未来的错误,而不是进行指责游戏。
  • 为任何团队工作设定明确的目标和成功指标。

是什么让一些人比其他人更有效率?

· 阅读需 3 分钟

MIT 调研了来自全世界的近两万专业人士,他们 50% 来自北美,21% 来自欧洲,19% 来自亚洲,剩下的来自澳大利亚、南美和非洲。最后归纳出了这些让人的生产率脱颖而出的方法。

1. 根据任务的重要性来规划你的工作,然后带着明确的目标行动。

  • 在前一天晚上修改你每天的日程表,强调你的优先事项。在日历上的每个日程旁边,写下你的目标。
  • 在任何会议之前,将详细的议程发给所有与会者。
  • 当着手进行大型项目时,尽快勾画出初步结论。
  • 在阅读任何长篇材料之前,先确定你对它的具体目的。
  • 在写任何长度的东西之前,编写一个有逻辑顺序的大纲,以帮助你按部就班。

2. 制定有效的技巧来管理超负荷的信息和任务。

  • 把每天的流程,比如穿衣服或吃早餐,变成例行公事,这样你就不会花时间去想这些事情。
  • 在你的日常日程中留出时间来处理紧急事件和意外事件。
  • 每小时检查一次设备的屏幕,而不是每隔几分钟检查一次。
  • 通过查看主题和发件人,跳过大部分的信息。
  • 将大型项目分成若干个部分,并在完成每个部分后奖励自己。
  • 在可行的情况下,将那些不影响你首要任务的任务委托给他人。

3. 了解同事对简短会议、响应式沟通和明确方向的需求。

  • 将任何会议的时间限制在90分钟以内,但最好是更短。在每次会议结束时,划定下一步的步骤和这些步骤的责任。
  • 对那些对你来说很重要的人的信息,要立即做出回应。
  • 为了吸引听众的注意力,根据一些笔记发言,而不是读准备好的文本。
  • 为任何团队的工作建立明确的目标和成功指标。
  • 为了提高你的团队的表现,建立程序来防止未来的错误,而不是玩责备游戏。

设计在线评测系统或 Leetcode

· 阅读需 4 分钟

需求

在线评测系统主要是一个可以远程执行代码的地方,用于教育或招聘目的。在这个设计中,我们专注于设计一个用于面试准备的 OJ,类似于 Leetcode,具有以下需求:

  • 它应该具有核心的 OJ 功能,如获取问题、提交解决方案、必要时编译和执行。
  • 它应该具有高可用性,采用 异步 设计,因为运行代码可能需要时间。
  • 它应该具备水平扩展性,简单易扩展。
  • 它应该稳健且安全,以执行不受信任的源代码。

架构

下面的架构以异步执行的队列和安全执行的沙箱为特色。每个组件都是可单独部署和扩展的。

设��计在线评测系统

组件

表现层

用户代理通常是一个像 coderoma.com 这样的网页或移动应用。它显示问题描述,并为用户提供一个代码编辑器来编写和提交代码。

当用户提交代码时,客户端将获得一个令牌,因为这是一个异步调用。然后客户端轮询服务器以获取提交状态。

API

请参见 公共 API 选择 以了解我们可以选择的协议。让我们在这里设计接口本身,并以 GraphQL 为例:

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!
}

API 层将提交记录在数据库中,将其发布到队列中,并返回一个令牌供客户端将来参考。

代码执行引擎

代码执行引擎 (CEE) 轮询队列以获取代码,使用沙箱来编译和运行代码,并解析编译和执行的元数据。

沙箱可以是 LXC 容器、Docker、虚拟机等。我们可以选择 Docker,因为它易于部署。

Coderoma.com

我最近在学习 Elixir 并创建一个在线评测系统 coderoma.com 以进行日常练习。它现在支持 Elixir 和 JavaScript。我正在添加更多语言(如 Java)和问题。

我们可能会举办未来的活动来提高您的编码技能。请加入我们,访问 https://t.me/coderoma 以获取英语社区,或使用您的微信扫描以下二维码 onetptp 并回复 刷题 以加入中文社区。

onetptp