10x 程序员工作法
郑晔
开源项目 Moco 作者
53432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
思考框架 (1讲)
10x 程序员工作法
15
15
1.0x
00:00/00:00
登录|注册

36 | 为什么总有人觉得5万块钱可以做一个淘宝?

用简单技术解决问题,直到问题变复杂
技术应用需根据系统当前阶段
过度使用技术引入不必要的复杂度
不同量级的系统根本不是一个系统
系统随业务量级变化而变化
不同业务量级的系统
从简单到复杂的技术变迁
程序员认为复杂困难
甲方认为只需5万块钱
总结时刻
你用对技术了吗?
同样的业务,不同的系统
淘宝的发展历程
甲方与程序员的不同理解
为什么总有人觉得5万块钱可以做一个淘宝?

该思维导图由 AI 生成,仅供参考

你好,我是郑晔。
今天,我们从软件行业的一个段子说起。
甲方想要做个电商网站,作为乙方的程序员问:“你要做个什么样的呢?”甲方说:“像淘宝那样就好。”程序员问:“那你打算出多少钱?”甲方想了想,“5 万块钱差不多了吧!”
这当然是个调侃客户不懂需求的段子,但你有没有想过,为什么在甲方看来并不复杂的系统,你却觉得困难重重呢?
因为你们想的根本不是一个东西。
在客户看来,我要的不就是一个能买东西的网站吗?只要能上线商品,用户能看到能购买不就好了,5 万块钱差不多了。
而你脑中想的却是,“淘宝啊,那得是多大的技术挑战啊,每年一到‘双 11’,那就得考虑各种并发抢购。淘宝得有多少程序员,5 万块你就想做一个,门都没有。”
如果放在前面“沟通反馈”的模块,我可能会讲双方要怎么协调,把想法统一了。但到了“自动化”的模块,我想换个角度讨论这个问题:系统是怎么变复杂的。

淘宝的发展历程

既然说到了淘宝,我们就以一些公开资料来看看淘宝的技术变迁过程。2013 年,子柳出版了一本《淘宝技术这十年》,这本书里讲述了淘宝是怎么一步步变化的。
按照书中的说法,第一个淘宝是“买来的”,买的是一个叫做 PHPAuction 的系统,即便选择了最高配,也才花了 2000 美元左右。这是一个采用 LAMP 架构的系统,也就是 Linux + Apache + MySQL + PHP,这在当年可是典型的开源架构。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章以“为什么总有人觉得5万块钱可以做一个淘宝?”为题,探讨了客户需求与程序员技术挑战之间的差异。通过淘宝的发展历程,阐述了系统的演化过程和技术挑战,强调了不同业务量级对系统技术需求的影响。文章指出,不同量级的系统面对的问题和技术挑战不同,因此系统需要不断翻新以适应业务发展。作者呼吁程序员应该在选择技术时考虑恰当的技术解决方案,而不是盲目应用技术,给系统引入不必要的复杂度。文章强调了用简单技术解决问题,直到问题变复杂的重要性。通过深入浅出的方式,生动地阐述了系统演化和技术挑战的关系,为读者提供了对系统发展和技术需求的深刻理解。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《10x 程序员工作法》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(33)

  • 最新
  • 精选
  • 西西弗与卡夫卡
    刚入职的时候做过一个社交系统,想着将来数据量会很大,就做了分库分表。扩展性是大了,但因为是按id分的表,导致不少需求不容易实现,比如按标题搜索等。要么拒绝需求,要么再搭一套转用于搜索的系统。结果在用户量不大的时候,就把系统弄得比较复杂,迭代慢。而实际上在数据量不到预设的十万分之一的时候,该产品就因为种种原因下线了

    作者回复: 现身说法,惨痛教训

    2019-04-03
    2
    41
  • hua168
    前公司开发负责人,不知道是不是为了显示开发能力牛,做了一个资讯系统,一个人用了Go、PHP、java 3种语言+rabbitMQ+ES+mongoDB等,安装所需要软件花了2小时,我心里那个郁闷…而且经常挂…… 因为Go是复制其他项目模版,写shell监控,发现相关进程挂了用start居然报错,起不来!非要手工打start😂😂我心里想,你写出来爽了,想过我们运维的感受吗?!😂😂

    作者回复: 以后可以质问为什么要把系统做这么复杂 :)

    2019-04-03
    2
    18
  • helloworld
    程序员提高自身技术水平最好的方法是“找到一个有好问题的地方”,在问题中锻炼技术应该是最行之有效的方法

    作者回复: 解决问题,得到真实世界的反馈。

    2019-05-06
    10
  • 行与修
    头份工作里有个印象比较深的,过度使用多线程技术追求并发,还弄了个所谓框架,却经常把主线程搞挂,后来一查发现,所谓框架净在主线程里玩并发了😂

    作者回复: 说多了全是泪

    2019-04-06
    9
  • Jxin
    关于淘宝,我看的是<企业it架构转型之道>。以上其实阐述了架构设计的三原则。适用优于业内领先,演变好过贪大求全,简单优于复杂。负责的项目花了三个月重构了,由原负责人操刀做的。主要是将业务梳理提高可读性。但大佬说了要灵活应用设计模式。然后就牵强使用设计模式,原有业务代码全部复制,原负责人做完后主流程常规场景能过。但各种业务块都有缺漏。所以今年来一负责,bug层出不穷,找个问题要兼看新老两个服务的日志。看部分遗传的业务代码,原本历史遗传就杂乱得很,现在迁移加套设计可读性反而更差了。

    作者回复: 都是不堪回首的往事。

    2019-04-03
    9
  • 风羽星泉
    能否详细说明一下什么叫到有好的问题的地方去,很想知道这个问题的答案。

    作者回复: 好的问题,是根据自己由自己当前水平决定的,后面会讲到。

    2019-04-03
    5
  • 陈斯佳
    老师,那又有个问题,就是我们如何在解决眼前问题和规划未来方向之间平衡呢?如果只关注当下问题,而不为未来留余地,会不会给自己的未来挖坑呢?这中间的度需要如何把握呢?

    作者回复: 领域模型一定要建好,这是不会变的东西,但实现有可能有无数种做法,只选择当前最合适的一种。要分清楚什么是设计,哪个是实现。

    2019-09-10
    4
  • enjoylearning
    做一个淘宝那样的,客户指的是业务类似,但用户量多少,需要多少并发数,搜索性能等如何都是需要跟客户沟通后才能决定技术选型的。现实中我们的有些系统已经满足了业务需求,就没有必要为了追求技术复杂度而去拆分了,只有面向问题技术选型才会有成效。

    作者回复: 能够把握度就是程序员技术成熟的标志。

    2019-04-03
    4
  • 人在江湖龙在江湖
    "用简单技术解决问题,直到问题变复杂。"这是从老板的角度考虑问题,如果一个程序员一直做简单技术,那与工厂工人有什么不同。一个系统能够成长成淘宝的概率比中彩票还难,所以程序员要想发展,最好到大公司

    作者回复: 不同的技术在不同的地方练。

    2020-11-12
    3
  • arronK
    现在我也是处于一家不大不小的公司,我也是一个对新技术比较向往的人,然后就会想着在自己的系统中加入这样一些新的技术进来磨练自己。但实际上我工作中的大部分内容都是一些内部系统,很多技术的引进并不会带来特别大的改观,只是我为了技术而技术罢了。 后来想想也这样除了徒增技术难度和维护成本,也就自己做出了调整。”用简单的技术解决问题,直到问题变复杂“。现在我就觉着,如果没有说有切实的痛点,就别啥技术都拉上搞一通。。。

    作者回复: 学习是不受限制的,可以先多储备一些技术。

    2020-11-09
    3
收起评论
显示
设置
留言
33
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部