Re: [请益] 离开Web开发的建议

楼主: brianhsu (坟墓)   2018-04-05 10:09:17
※ 引述《m13m13m (奇怪 还没收到??)》之铭言:
:
: 工作上遇到一层不变的薪水, 和难以跨越的门槛(做某一个框架
: 几年, 想换到另一个想去的公司但是框架不同, 好的话,年资是从新算,
: 常常是遇到根本没机会, 即战力第一. 久而久之,路变得有点窄.
: → m13m13m: DevOps/SQL 是好建议,正在点docker/aws, SQL command 04/04 21:20
: → m13m13m: Argos:想出国看看, 我不想当嘴炮的人 04/04 21:20
: → m13m13m: oneheat: 腾讯吗. 语言框架不对, 第一关就无法pass了 04/04 21:21
: → m13m13m: 假设我PHP很多年,要去弄node.js/ java也是从头算年资. 04/04 21:22
: → m13m13m: 从头开始学. 另外换一个语言不可能只要几周, 比如c++ 04/04 21:23
: → m13m13m: 学很多你要保证你每一个都能一直跟上去最新的工具 04/04 21:23
这一串看下来,感觉你好像很纠结在语言或框架的熟悉度就是即战力。
但出来久了,很多时候你会发现其实大家真的在用的东西都是很简单的部
份的,也就是传说中的只用到 20% 的功能,有 80% 是用不到的。
当然有把语言和框架用到出神入化的人,但多数的时候反而都是很基本的
部份,有的时候甚至会觉得这是好事,框架有他方便的地方,但通常藕合
度比较高。我现在反而比较喜欢不过度依赖框架的程式码。
所以你会发现大家会觉得你想加薪,结果想出来的方式是跳框架很奇怪。
即战力是可以从不同的面向来看的,举例来说,当今天你发现你家用 PHP
做的做流量统计服务(类似 GA 的服务)的网站,效能撑不住了。开个网
页要四五分钟还开不出来,这个时候来了两个人:
A:“嘿,我做过工厂自动化数据分析报表的网站喔。咱们的资料量是每个
机台最慢每秒有一则统计输出,工厂有一百台机台,二十四小时开工,所
以每天有约八百万笔资料产出。我们的网站报表数据基本上是即时的,不
会差距三分钟,网页读取速度不会超过一秒。喔,我们的系统是用 Java
实作的。”
B:“我有五年 PHP 的经验喔,我 Laravel 很熟喔。我做过很多 CRUD 的
网站喔。”
请问如果你是主管,你会觉得哪个对你们公司才是即战力呢?我想这就类似
上一篇回文里 qrttl 大大提到的套路。因为做过,所以知道这个问题大致
上怎么解,而很多问题的本质,是与该专案所使用的程式语言或框架没那
么相关的。
像我基本上都是在 Java 相关的专案与工作打滚,但也去面试过资深 PHP
工程师的职缺,然后问与考的东西大部份都与 PHP 无关,而是在于各式各
样的“套路”。例如 MVC 的基本概念,XSS 怎么防,SQL Injection 怎么
防,怎样的问题你会怎么解,API 你会怎么设计。我 PHP 是研所论文在用
的,之后出来工作七八年,完全没在用,甚至没用过任何 PHP 的框架。
讲实话,如果没有速查表和参考资料,你叫我从头写 PHP 我大概会写不出
来。但最终我有拿到 Offer,而且也还不错,只是经过一些考虑后还是决
定继续待在 Java 这个领域。
至于你说的第一关被刷掉,我想履历和面试时的应对可能有比较大的关系,
特别是面试,不只是你问我答,也需要自我披露啊!面试官问的时候,你
可以在你的回答里延伸出你练过什么套路,解过什么问题,而且展现出你
理解的是这个问题的基础原理,而不是只是瞎猜。
举例来说,你们的解法是加开 Instance,那为什么要加开,是 CPU Bound
还是 Memory Bound 还是 IO Bound?你们是用什么方式决定是否要加开
Instance,怎么做 Profiling 怎么做 Benchmark?这些也都是套路的一
部份,而且也不会跳语言或框架就会有太大本质上的改变。
那有没有跳语言和跳框架即战力就下降的状况?也是有的,例如你现在叫
我去写 NodeJS ,我肯定写得不好也没有即战力,因为和我最熟悉的典范
是不同的。
PHP 和 Java 的世界里,多数都是 Multi-Thread / Blocking 的操作,
循环什么随便用。
但 NodeJS 是个完全不一样的世界,他的典范是 Single Thread / 非同
步呼叫模式,基础的思考方向就不一样,解题的方式也会不同,如果我用
Blocking 的思考方式去写 NodeJS,结果肯定很惨烈。
这种的我觉得跳语言和跳框架就比较有意义,因为学到的是另一种解问题
的思维。
而有一些问题,在某个典范下可能很难解,但在另一个典范会比较容易,
例如这几年很火红的用 Functional Programming 的典范来解决 Concurrent
问题等等。
最后,这一阵子决定要花点时间做个 Side Project 当做这几年工作成果
的总覆习,于是列出了一些这个专案想要达成的目标,大致上如下:
- TDD,测试覆蓋率 90% 以上。
- 干净的架构,核心逻辑与数据库、框架等等严格分割。例如资料储存
可以在不依赖框架的情况下,随时抽换 NoSQL 或 RDBMS。
- 架构上有足够的弹性,可不靠 Middle Ware 就能做到 DB Sharding。
- 架构上有足够的弹性,可不靠 Middle Ware 就能做到数据库读写分离。
- 证明 API Server 可以处理 C10K 的问题。
- 可以做到网站与 APP 的资料双向同步。
- 能够做到快速部署,快速建立开发环境,模拟新人进来时候的状况。
结果列一列之后,发现多数都是和语言 / 框架无关的问题,而是在系统架
构上要怎么设计,而这些设计原则,不太会因为换了语言或框架就改变的。
以上是在 Backend 打滚了几年后的一些想法,给你参考看看。
作者: vi000246 (Vi)   2018-04-05 10:16:00
实用推
作者: pttworld (批踢踢世界)   2018-04-05 10:17:00
原文是跳出web, 这一串都不是跳出的而以换领域不是即战力很正常,这一串都没人切中要害
楼主: brianhsu (坟墓)   2018-04-05 10:25:00
原 PO 的根本目的在加薪,跳不跳老实说没什么差……待在熟悉的领域谈加薪还比较容易些。
作者: wildli0422 (wild)   2018-04-05 11:08:00
推推
作者: qrtt1 (有些事,有时候。。。)   2018-04-05 11:14:00
真正该跳出来的是那个限制自己发展的思维啊。往哪个方向跳都好,但旧的方向验证了几年没有收到好的效果主题的原 PO 也该试试别人的方法了。相当同意 @brianhsu 说的,在同领域的难易度较高。只要不把单纯把 web 只想成是单纯投入个人的生产力,还包含了架构与如何维持服务。他是一整组不断演进的,一直换框架,换领域,只是在玩不同游戏的新手村而已。在同一个领域还有个明显的好处是,你 credit 够高的话,会有机会,且有人愿意冒险让你先站在目前的基础上,做跨领域的实验。例如,其他文讨论到的 py -> go,或其它的替代解法
作者: OSDBNetwork (路人甲)   2018-04-05 11:41:00
有实力的人,写出来的文章就是精彩.
作者: rabido   2018-04-05 11:52:00
大大可以分享一下决定继续待在Java领域的原因吗?
作者: stupid0319 (征女友)   2018-04-05 11:52:00
推,有实作基础比较重要,程式的语法跟框架反而好学
作者: holmes2136 (holmes)   2018-04-05 11:57:00
力推,有很多东西是不同语言可通用
作者: peanut97 (丁丁)   2018-04-05 12:19:00
你一定是文中里的A
作者: qweasd777 (qweasd777)   2018-04-05 12:30:00
大推
作者: Vendy (Vendy)   2018-04-05 12:39:00
因为有jvm很多玩具,不仅仅java吧XD
作者: DirtyVegas (拉斯维加斯)   2018-04-05 12:41:00
laravel那段真是中肯 偏偏老板思维只会在意你会不会使用
楼主: brianhsu (坟墓)   2018-04-05 12:41:00
楼上答对了,JVM 太多玩具玩不完。XD
作者: DirtyVegas (拉斯维加斯)   2018-04-05 12:42:00
很少会在意你弹性处理问题的思维
作者: jonyig (是喔喔)   2018-04-05 12:47:00
楼主: brianhsu (坟墓)   2018-04-05 12:53:00
当然比较喜欢现在公司薪资结构和办公室环境也是很现实的一环啦。直接年薪 / 12,不发年终的公司比较少,但我喜欢。XD
作者: johnny94 (32767)   2018-04-05 13:52:00
这个版需要这种文章多一点
作者: abccbaandy (敏)   2018-04-05 14:02:00
好奇真的有人每份工作语言都不同的?像这篇最后也没跳PHP阿...
作者: m13m13m (奇怪 还没收到??)   2018-04-05 14:17:00
谢谢大大的指点,看来您工作外花很多心思在系统设计的学习因为我看到的许多case大多是会不会写,系统层面的规划大多欠缺考量, 所以会出现欠许多"技术债".我会想说换框架薪资待遇比较好是因为某些企业有偏好的语言框架, 那些企业的待遇十分好. 谢谢您的指点
作者: abccbaandy (敏)   2018-04-05 14:35:00
除了2跟4其他也差太多XD 这样履历拿出去不会被质疑吗
作者: pttworld (批踢踢世界)   2018-04-05 15:52:00
问题会在第一份切入第二份,我当初组语转Java薪3万1
作者: CCben (new man)   2018-04-05 17:32:00
作者: MOONY135 (谈无欲)   2018-04-05 19:40:00
第一份sas 第二份c++XDDD 觉得追语言没啥用
作者: avans (阿纬)   2018-04-05 19:52:00
推心得!
作者: fayhong (恰似飞鸿踏雪泥)   2018-04-05 21:16:00
推!内功深厚的高手
作者: jingyang   2018-04-05 22:56:00
楼上有人提到,我换工作几乎每次都不同语言,C++->python->Java->node->golang->php,语言只是工具,工作久了看的是你的 domain knowhow,语言特性的重要性相对来说低很多
作者: a8989332 (天创)   2018-04-05 23:49:00
初期是工具使用者 后期要练到架构设计者!
作者: NodeWay (不由分说)   2018-04-06 00:54:00
好文推 我是觉得能掌握多种语言也是实力的一部分举例来说就像写网站不能不懂js 不同需求有其适合语言
作者: lturtsamuel (港都都教授)   2018-04-06 03:02:00
不用换工作 新创公司不同专案可能框架就不同了因为都是跟人合作 别人用啥就用啥
作者: leveger0903 (脆笛酥)   2018-04-06 13:23:00
说到laravel 真的是面试的痛处 明明框架是由php打造出来的 为什么面试官就这么坚持一定要会laravel 吃这个亏两次
作者: dream1124 (全新开始)   2018-04-08 12:10:00

Links booklink

Contact Us: admin [ a t ] ucptt.com