既然都打算劝世了,那就劝到底吧
前面有人怀疑我的资历,我大概就说我先前任职的是前面列出来几间公司之一
层级对照起来大概算在Amazon L6-L7吧
曾经在1A2B全球SVP团队面前present过我的专案(某企业解决方案)
也和FAANG/BATTMD的几个CXO介绍交流过
....这经历行了吧(捂脸
到目前为止带过的团队人数确实也不太多,<20人
面试经历人数也还好,150+
先前首次在公司担任team lead时,曾经内推大批台湾人进来(30+)
不过结果非常糟糕。总归其因只有一点: 互联网相关的专案经验和技术深度不足
我自己分析了一下这些人的经历,当然不外乎是
1. 非互联网产业IT人员 (包含传产、金融业、电信业、甚至IC产业)
2. 互联网产业。包含Line, Yahoo, 三竹等台湾知名的公司... 以及一群新创
由于1.的职涯路径性质比较不一样,就不在后续的讨论范围内了
也确实台湾非常多的IT人员是在这类公司就职的,技术风气真的不佳也是实话
没有把1.在第一篇文章中排除是我的问题,我和大家道歉
所以接下来的讨论可以把重心放在“台湾的互联网公司能给的经历和磨练”上了
在台湾的互联网公司(或比较专注在IT研发上的公司)基本可分为几层级:
1. top tier的: FAANG/BATTMD (如果有RD office的话)
2. 外企前段班: Yahoo, Line等已IPO公司
3. 外企中段与国内前段: 例如Grindr, Shopee, Shopback等B轮以上公司。还有国内
经营比较好的互联网产业公司,例如Appier, 17, 三竹
(老实说这个区间有点大,不过就这样吧)
4. 国内经过A轮以上公司(国外没B轮不会在台湾设office的吧?)
5. 其他
有点抱歉,又是我的问题了,我在第一篇文章所谓的“大公司”
其实是指1.2.3.的部分...
1.2.3.没有任何问题,用户量,以及随之而来系统与技术累积都是比较好的
在这边可以看到至少100k起跳的DAU系统,以及需要承受这个量级用户的业务弹性
我非常推荐来这类型的公司。来到这些公司如果还没有办法学到东西或没有累积
那不单是个人问题,而是一种罪过,平白丢失了让另一个人学习的机会
所以我前面希望指出问题的其实是这些4.5.的公司
后面的讨论是以单个工程师的职涯成长而言的,
也就是未来你去求职的时候老板怎么评价你的视角,老实说比较自私
当然有人会说他希望让世界更美好,每一间公司都曾经小过....
但那不需要是你的问题,我在这边只是劝世,希望未来老板怎么看你会好一点
国内能够拿到A轮以上的基本都是有核心技术的公司,而非透过特殊业务来增长的
这类公司的经营者想法不外乎是出手核心技术赚一笔,
或是持续经营,希望出海赚海外市场的生意
前者很明显了,除了负责核心技术和业务的人员之外,
其他的IT人员基本上都是打杂工,美其名的全栈工程师,其实就是demo工程师
负责基础IT的人员可能网络/机房/DBA/ops于一人
另一个最大的特征,这种公司不可能有QA角色的存在
对于这类公司而言,核心人员当然非常优秀,
但负责其他角色的员工真的对这类公司是可有可无的,
所有的技能大概stackoverflow都能搞定,不需要高深理解,也没有业务规模
当然成长受限
后者的话我建议看看,因为为了避免他是前者踩坑,
真的对公司业务或技术很有兴趣的话可以等他有规模了再加入
接下来就是罪大恶极的5.了...(我真的不知道怎么形容
我经历过台湾2011~2016那段大家疯狂搞创业公司的时期
台湾因为人口基数小,即便在某个业务领域的市场上有一定份额
其带来的技术/架构和稳定性需求也可能是非常薄弱的,我们来证明一下:
随便算个数学,Line Pay作为国内电支龙头,MAU 220万,DAU没公布, 我们抓92万
(以支付宝比例来算,支付宝MAU 6.6亿, DAU 2.8亿,比例0.42)
假设我们的公司目标与市场明确,用户体验良好,
半年开发上线,经过一年半经营和迭代就能有了Line Pay的1/5用户数
DAU: 92万*20% = 18.4万人
再假设这些用户黏性极高,每天进行2笔交易,那就是单日36.8万笔交易
所以每日日均tps就是 368000/86400 = 4.26笔
有人会说tps不是uniform的,那调整一下,日峰值五倍: 21.3tps
这边再来另一个数据,一台8核16G的机器上,
执行不具有大量CPU或IO运算的Spring(Java)应用, 配合基本的MySQL单例数据库
至少可以提供一般业务操作300 rps和至少40+ tps
所以,这是台湾本土市场创业公司的致命弱点也是比较悲哀的地方
如果你是一个服务端工程师,真的不需要你有多强的架构能力和技术深度
DDD、微服务这些架构设计、性能优化、稳定性都不需要的
即便你有极大的抱负期望引进这些技术和工具,也有极大的可能因为资金成本和
导入过程中的开发与运维成本而失败
讲白了就是这些公司没有成长空间,就算有,也只是很低的天花板,
进去晃个一年可以,千万不要超过两年,你的职涯时间很宝贵的。
这边聊的还是日活DAU 18.2万、比较有前景,实际上背景也比较厚的公司。
其他那种找二姨三叔公借钱,和学弟拿10万说入技术股、一间只有5个人的公司,
抱歉我不会改变我的说法,就是玩玩的。你自己玩可以,不要浪费别人时间
来个结语:
抱歉之前让大家误会了,非IT产业不在我之前讨论内
我所谓的大公司是前面的1.2.3,我非常鼓励大家想办法加入,感受文化和提升自己
4.的话要仔细观察,不要贸然加入
5.的话,以职业成长以及企业用人单位视角来说,实在很难有加分效果
没有特殊原因,强烈不建议加入。
※ 引述《gundam00 (傻那驾驶中)》之铭言:
: ※ 引述《NewSpec (新规格)》之铭言:
: : 前几天面试了一个接近10年经验的工程师,
: : 原本是希望让他来带个团队的
: 邀请接近10年的工程师来当Team leader 基本上你是看过对方的履历
: 才会觉得该面试者可能有能力来担任这职位 结果从履历看不出来都在做一样的事
: 不知道是他包装得太好 还是你的理解能力有问题
嗯,包装得非常好,最近几年几间公司都是co-founder和team leader
要不然就是lead a project, lead a team...blah blah
: : 面试之后发现,他近10年的经验几乎全都是创业公司
: : 各种行业、各个层级的创业公司职位
: : 因为这些公司都是那种台湾国内小创投玩玩的那种,
: : 所以基本上日活月活也都根本起不来
: 什么叫国内小创投玩玩 你这跟大中华思想去看台湾一样
: 觉得本身站在一个大格局上去看轻别人 真不知道哪边来的优越感
: 多少人创业是想要改善问题 但偏偏新创就是会每天遇到一堆问题
: 在没有经验 & 资源的情况下 一不小心就失败很正常
: 用玩玩这口吻来形容新创的高失败率 真的很不恰当
我承认不太洽当,不过站在提供junior工程师建议的立场上
这些地方真的不是学习成长的好选择
: : 因为用户和业务量不大,所以各种技术和架构也当然都不需要了
: : 只要app和服务能跑得起来就好,跟做科专demo没什么区别
: 同意各种技术和架构没得和稳定服务的大型公司比
: 但技术跟架构本来就是与时俱进 新创先做POC或MVP 求有再求好
: 最后才会因为痛点的缘故 改善技术和架构 如果该面试者在前公司有机会走到这边
: 这些都不会是十年只做一件事
: : 这其实说明了了一个困境:
: : 作为一般公司工程师发展可能不好,看的不全面,成长不多
: : 所以我想学更多东西,所以我去创业,负责更全方位的职责,希望能力更强
: : 但是这些创业公司的规模小,所以其实每次做的事情都一样,一样浅、一样不深入
: 请先定义叫做每次做的事情都一样? 每次App从无到有开发 第一次用MassiveVC
: 第二次改成MVVM 第三次用MVVM+Rx 第四次用VIPER+Rx
: 第五次用Flutter直上双平台 虽然每次都是开发App 但这明显是不一样的事情
不知道你自己有没有发现,这正是我想讲的做了n次一样的事情
一样拿上面的例子来说吧,任何语言的任何框架都能挡300rps和40tps
2011年红的Groovy/Grails, 2012的Scala/Play, 之前的Python/Django
或者Java/Spring+Struts, Java/Spring MVC, Java/Spring WebFlux
任何一组要做一套成熟的系统都可以玩个一两年
会明显认为这不一样的事情是因为没遇过3k rps/400 tps甚至30k rps/4k tps的需求!
作为一间日活不只18.2万人的公司,我要的绝对超出这个水平
你拿这些技能之中的什么来证明你有这个能力?
: : 这摆明了就是那个可怕的职场寓言:
: : 工作怕的不是一件事情做十年,而是做了十年一样的事情
: 十年做一样的事情其实也不恐怖 看个log就知道是在update table cell时
: source和cell count不一致 造成的index out of range就能省你很多时间了
: : 老在搞创业公司也是一样的OB
: : 在台湾,因为用户基数这个基本的限制,所以一般的创业公司真的很难生存下去
: : 如果工程师自己看不清的话,很容易就是这间公司干一样的事 (like... CTO?)
: : 到下一间公司照样干一样的事,然后再下一间....
: : 就这么折腾了几年,讲实话了,你去了几间公司,就是做了几次一样的事情
: : 真的 一 点 长 进 也不会有的
: 再复习一次 先定义什么叫干一样的事 十年都写Hello World那真的很狂
: 大部分的工程师通常都专精在差不多的领域深造 做一样的事范围可大可小
: 有些人只会后端 但他开的API就是比较有弹性 存取数据库就是比较有效率
: 有些人只会手机端 但他画面处理多执行绪就是很流畅 画的动画就是比较美
: 别污名化干一样的事 有些是面试官自己问不出来而已
看样子应该是client工程师吧,我给一下我的几个问题: (Android)
1. Activity正常和异常情况下的生命周期?
2. App如何保证后台服务不被kill?
3. 如何优雅的展示bitmap大图? (可接续问LruCache与weak reference及soft reference)
4. 说明一下Android的消息机制 (接着问与event bus的差异,优缺)
5. 如何优化一个ListView?
6. 哪些情况会导致OOM?能不能给个例子,或用代码简单表示?
7. 什么情况下会发生memory leak?
8. 如何监测memory leak?有哪些工具与手段?
9. 工具(例如: LeakCanary)监测memory leak的原理是什么?
10. Android对HashMap做了优化后推出的新的容器类是什么?
虽然不是很深,但应该还能分别只刻业务功能和有点深度的工程师啦
: : 诚心建议有心创业的工程师们,在有一定的技术能力之前
: : 好好先乖乖待在有口碑、有技术实力的大公司里看看
: : 自己不管在技术或架构能力上的成长、眼界的扩展才是最重要的
: : 创不创业真的没什么关系,就只是一个风潮而已
: 再来问一下 有口碑 有技术实力的大公司 你是本身在每一间都任职过吗?
: 没的话怎么有办法断言去大公司就能够在技术或架构上拓展眼界跟成长实力?
: 创不创业真的没什么关系 就只是一个强加的理由而已
: 最后是工作上最怕的不是只做一样事情的人 是永远觉得自己观点是对的
: 然后在同事提供不同意见后 拿出极端例子来反驳的人 能沟通很重要...
做人当然需要能沟通,听意见,
但在技术上,是需要深厚的知识和专案积累来协助我们做出最佳判断的
而这个判断,绝对是有最佳解的,需要由具有充分能力的人找出来的。
技术决策一但似是而非或人云亦云就危险了,不然公司要CTO或技术总监干嘛?