国内怎么就做不出 JetBrains 那样的产品?
欢迎关注方志朋的博客,回复”666“获面试宝典
最近在知乎上看到有人提问:
无意间,发现了一个很有意思的回答,下面跟大家分享下。
来源:https://www.zhihu.com/question/537774494/answer/2534015588
我是一名 JetBrains 的忠实粉丝。我学习编程语言的经历大概有 10 年左右,使用 JetBrains 大概有 7 年左右。
在这么多年的学习编程和使用 JetBrains 全家桶的过程中,我认为 JetBrains 的成功不仅仅是技术原因,还有的是产品上面的创新,而这些创新都离不开大型软件工程的实战经验,因为只有经历过大型软件工程的开发与不断迭代过程,才知道一款优秀的 IDE 里面需要什么功能,哪些功能能够帮助程序员高效地开软件。
网传 JetBrains 的 IDEA 系列最早的 “杀手锏” 功能是 refactor (rename)重构功能。例如在 IDEA 中你可以使用 Shift+F6 快速将一个变量改名,并且这个改名操作将应用到所有 引用了该变量的代码。这就需要 IDEA 对整个项目中的所有代码做 parser,追踪他们之间的引用关系。这类功能的背后离不开强大的代码静态分析技术。
所以做专业软件,首先是需要有技术方面的支持。其次是产品方面的设计考量 IDEA 的重构功能极为强大,包括各种强大的 extract,路径移动等。
IDEA 的强大远不如此。它的功能包括但不限于
图形化 debug
图形化 git 操作,一键 rebase
代码结构梳理,也就是左下角那个 structure 功能区(自从用过 CLion 之后我在也没用过 source insight 了)
代码收藏,同样对 trace code 友好
和各大主流框架和编程语言的紧密结合(例如 WebStorm 对 npm 有极为强大的支持,能够分析 scripts 和 .nvm 自动选择合适的 node.js 版本启动 script,能够自动分析 node_modules 判断当前依赖是否匹配 package.json 等)
最新推出的 code with me 功能,在疫情远程工作的大背景下,这个功能能够方便同事之间在无法物理接触的情况下进行手把手 debug
generator(例如 JavaBean 中的 getter setter 方法可以一键生成),也可以配置 live template 和 file template,例如我写 React.js 的时候经常会有很多重复性的样板代码,例如 const {children} = this.props,这个我就配置为 cctp,我只要按下 cctp 再按 tab 就能快速输入更多功能就不说了
想到以上这些功能的创意,需要 JetBrains 的产品经理需要有极长时间的一线 coding 经验,并且这些软件工程项目的质量要求很高(如果是屎山项目,也就没有用到重构功能的必要性),尤其是经历过从 0 搭建起一个项目,并且后面又遇到需要重构的情况。
而我国做不出来这类软件,原因也主要有如下:
有极长 coding 经验的人没有国外那么多,大部分是在 2010 年之后的互联网红利开始才学习 coding 的,甚至很多是生化环材转码。人少,那么诞生出这些天才产品经理的几率也更少
大部分人还是有一种 “勤劳的守旧” 观念,也就是认为使用工具提升生产力是一种偷懒和投机取巧的表现,推崇使用 vim 等高门槛和学习曲线陡峭的软件是一种 “技术能力强”,“能吃苦学习” 的习惯。
优秀的产品经理需要跨界经验,例如 JetBrains 的产品经理肯定不仅仅是画个原型图和写个 PRD 那么简单,这些都需要深入一线软件行业,掌握大量工程师人脉,和非常多的软件工程师交流,了解他们真正需要什么。站在他们的角度思考一款优秀的 IDE 应该要给我带来什么样的功能。国内 一些 PM 论坛的交流内容还是以互联网 APP 产品为主,这类产品的 PM 还是停留在学校学学 UI 设计,出来跟着 “人人都是产品经理” 的网课学学做 PPT 画原型图写 PRD 的水平。PM 的上限水平过低,缺乏垂直行业的经验与人脉导致了做不出顶级的工业软件缺乏工程师文化。
所谓工程师文化,指的就是产品进步是由工程师推动,工程师使用科学技术提升产品的用户体验,可靠性,安全性等。由于各种环境原因。真正拥有 “工程师心态” 在人群中还是偏少数,抱有 “功利心” 去读书刷 GPA,去工作刷 KPI ,很难诞生优秀的专业软件。缺乏工程师文化的根本还是和经济基础与分配平衡有关,经济基础过差的情况下,大家会更容易选择保守,保守则不容易引发对创新的思考。而分配平衡过差,则会导致 “工程师” 们更倾向于使用 “技巧” 去内卷抢得少数资源,而非使用 “科学技术” 去创造更多资源与价值。
奶粉钱,产假,房价,教育公平,没有好的环境就留不住顶尖的工程师与专业的产品经理,知乎都说烂了的事情就没必要提了。。。
做工业软件,最好就需要是这个领域的工程师直接转行来做工业软件的产品经理,因为只有自己行业的人才最了解自己人。而我们的现状是连抱有工程师思想以及拥有工程师文化的公司都非常稀少,更别指望真正的工程师们在拥有丰富经验之后转行 PM ,然后设计优秀的工业软件帮助我们加速生产效率,解放生产力。
最后再谈谈 JetBrains 在获客与留存方面做的努力很多工业软件都有 help 帮助文档。
但是大家可以扪心自问一下,你们真的有看过专业软件的 IDE 吗?你们有点开过专业软件的 help 菜单吗?
以 JetBrains 家的 goland 为例,当你初次安装时时,首次启动软件会显示引导画面,里面会使用言简意赅的文档和样例代码帮助你快速掌握这款 IDE 的各类 feature
如图所示,这是 goland 的 learn 功能,而图上此时此刻显示的则是如何使用快捷键快速删除代码行或者换行,以及将过长可变参数的代码自动转换为可读性较强的多行格式
无论是样例代码,还是帮助文档的文案,他们都设计得言简意赅,而且即使是英文,也是选择了计算机领域常见的英文单词,不会对非英语母语人士造成太多障碍。
只有当用户能够很快学习上手你的软件,那么你才能长久留存客户。而这一点,在我见过的绝大多数驰名全球的顶级专业软件(包括设计领域的 Adobe 全家桶,电子工程领域的 MATLAB,Cadance ICC、Altium Designer、TI 德州仪器的 LabView 和 Multisim,Intel Quartus,Xilinx Vivado)都做得非常差,基本没有像 JetBrains 那样提供言简意赅的解释和恰到好处的样例代码让你快速上手。
一款专业软件令人难以上手,学习门槛极高,也是很难留存客户的。而 JetBrains 在快速入门与帮助文档的细节设计上绝对可以说是优秀至极。
评论区也有人讨论 vim 是否适应键盘操作?或者 vim 是否有在 ssh 上面直接编辑代码这种场景。
首先是键盘适应方面,如果你有深入使用过 JetBrains,其实会发现 IDEA 的纯键盘操作效率并不比 vim 低,你想要的所有功能都有默认快捷键,没有的话也能自己配置,并且这个配置是云端同步的,我在公司电脑,自己的 surface 平板电脑和家里的游戏机上全平台同步。而且自动完成可以根据自己的 coding 领域习惯写自定义 live template。
最后是 ctrl+shift+a 以及 alt+enter 几乎可以在任何地方完成绝大部分写代码的常用操作。我并没有觉得 vim 在这方面有比 JetBrains 的效率高多少。
另外就是 ssh 直接编辑代码这种场景。
我认为这种场景是非常危险且不规范的做法。真正符合工程化的项目都是本地使用 IDE 编辑,IDE 的静态分析功能帮你检查出可能出错的地方,确认没问题后,用版本控制工具提交,提交过程 IDEA 会跑代码格式化,lint 规则检查,import 优化,清理 unused 代码,自动帮你做 GPG git 签名。
如果是公司或者开源组织机构的项目,还会自动帮你更新 copyright,然后做 TODO 检测,code analysis,git hook,最后 push 代码后,CI/CD 平台开始跑单元测试,集成测试等,全部通过后则自动由 CI 平台通过 SSH 发布到生产环境。
如果你的代码经常需要直接 SSH 连上去直接用 vim 修改,没有经过任何工程化工具的前置处理以及 code review,那么我只能说你的项目非常不规范,开发这种不规范的项目当然体验不到 IDE 能够带来的好处。
热门内容:
PostgreSQL超越MySQL
面试官:有了 for 循环 为什么还要 forEach ?
领导:谁再用 Redis 过期监听实现关闭订单,立马滚蛋!
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ
国内怎么就做不出 JetBrains 那样的产品?相关推荐
- 为什么国内做不出 JetBrains 那样的产品?
知乎上有一个提问: 分享一个很有意思的回答. 作者:昌维 | 来源:https://www.zhihu.com/question/537774494/answer/2534015588 1 我是一名 ...
- 没学过python、但是还是有公司要-学习python 基础都会了 为什么还是做不出项目呢?...
原标题:学习python 基础都会了 为什么还是做不出项目呢? Python是一门足够简单但又非常强大的程序语言,应用领域甲冠天下,在WEB开发.WEB爬虫.科学计算.人工智能.云计算.数据分析.数据 ...
- 为什么中国做不出《旅行青蛙》这样的游戏?
文章来源:南七道 ID:nanqidao 内容经授权发布 "我突然感觉到自己的世界原来很小,小到在这座四通八达.五脏俱全的城市里,留给我的只有简陋的公寓.工业化风的办公楼,还有连接它们的长长 ...
- 毛坦厂中学是“高考工厂”?白岩松:我做不出嘲讽它的事情!
2019年高考已经过去了,不管结果如何,家长和同学们都松了一口气.对于高考,有人是怀着感恩之心的,有人却是痛恨着的.尤其是提起高考,人们总能想到几所学校,比如衡水中学,毛坦厂中学等等.尤其是毛坦厂中学 ...
- 抖音不做真人出镜,打造百万粉运营攻略!
抖音不做真人出镜,一样可以打造出几十万甚至是百万粉丝的抖音号! 讲抖音原创内容,笔者们需要注意的一些细节,这些细节笔者认为非常的重要,比如说什么叫流量词?什么叫层层推?什么叫时间性? 笔者一直要强调的 ...
- 国内哪些公司做车载激光雷达?
作者 | TechTorch 编辑 | 汽车人 原文链接:https://www.zhihu.com/question/50027943/answer/2872192352 点击下方卡片,关注&qu ...
- 怎么用jQuery做弹出窗口
用jQuery做弹出窗口的方法:首先设置button标签的id为mybutton:然后通过id获得button对象,给它绑定click点击事件:最后当按钮被点击时,使用[confirm()]方法弹出对 ...
- 乔布斯遗失25年的震撼采访:靠流程和制度做不出好产品!
点击"技术领导力"关注∆ 每天早上8:30推送 作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) "技术领导力" ...
- 仓管做材料出库单的时候,保存时提示“辅助计量单位***不正确!库存单位***不存在!”
问题:仓管做材料出库单的时候,保存时提示"辅助计量单位***不正确!库存单位***不存在!",如图 问题分析:可能是补丁没有打好,打了U872 SP1后没有问题.在U872 SP1 ...
最新文章
- 宏基因组合种树第292期—侧柏、樟子松,为祖国绿化做贡献
- python turtle库画图案-Python基础图形绘制库——turtle
- UNITY2018.3 在editor下运行时new memoryprofiler显示 shader占用内存很大的问题在安卓上并没有看到...
- Java中的引用类型(强引用、弱引用)和垃圾回收
- Redis查看集群状态
- UI基础设计规范,确定不了解一下?
- 实战HCNA1:华为设备快速记忆生成树的角色及选举规则,实施基本的VLAN间路由和基础的VRRP协议...
- Pandas系列(十二)实现groupby分组统计
- #pragma pack与sizeof union
- 知了课堂Day1——微信小程序基础01-template、事件
- 百度地图WEB服务-全景静态图使用心得
- 杂谈:人工智能发展的哲学研究
- ASP.NETf发送邮件
- cad2016批量修改相关字体,统一文字样式
- HTML CSS 学习笔记
- 测绘遥感地信 国内外期刊大全
- Android----banner使用详解
- C#基础教程-c#实例教程,适合初学者
- 关于密码学中不可区分性的一些问题
- 【codeup】1128 Problem B 出租车费
热门文章
- word之图表和公式的自动编号(zz)
- php网站安全狗绕过,绕过网站安全狗拦截,上传Webshell技巧总结 | 附免杀PHP一句话...
- 20万+字,熬夜整理了一份程序员不可或缺的软技能高分原创电子书送给你
- 前台Html上传文件,后台使用.net接收文件
- 高斯消元法求逆矩阵 matlab,高斯消元法求逆矩阵
- 发展认知神经科学 | 基于可解释的人工智能模型分析婴儿的fNIRS数据
- 微盛企微管家:企业微信年度大会后,你不得不知道的私域打法新趋势
- RHCA回忆录---DO447介绍
- rk3368 开机内核启动不了
- 电子邮件群发软件,电子邮箱注册哪个好?