请问是我道行不够还是上司跟不上潮流?
入职不久的前端开发,最近参与一个模块的调整作业,模块本身多人接手过所以 es5 es6 都有。 用 es6 的 filter 方法处理了几个 api 接收的数据, 完后 codereview,上司说不行非让我用 for 循环写,理由如下
1.他看不懂,原因是他虽然也懂前端但是主要负责后端,原话:java 里没有 filter 2.他看不懂就没法排错,万一写错他不知道哪错了 3.新特性不够稳定,兼容性有问题,显然他不懂 bable 4.万一我休息遇到 bug,for 他会改 5.for 也罢 filter 也罢最后都能用,为什么不用大家都懂的
虽然我给他普及了相关知识,可还是被无情拒绝。 当时我是很生气的,这明明就是 js 基础了,2021 年还有这种人? 不过事后一想,上司的做法不能说全错,毕竟他是要对项目负责的,稳是第一位。
公司还行,但是没有干长的打算 如此别说是参与内卷了,不仅啥都学不到,技术退步肯定是必然的。 请问各位遇到这种事情会怎么办?
201
dfkjgklfdjg 2021-06-04 15:32:25 +08:00
你用 ES2015,ES2016,甚至 ES2021 写都可,最后用 babel 转一下再给 leader 看不就好了。
|
204
byte10 2021-06-04 15:57:09 +08:00 1
@IvanLi127 换成自己框架的架构师,这样的简直就是 chusheng,走之前应该向上级举报他,说他私下用自己的框架,要挟公司的未来发展
|
205
TimPeake 2021-06-04 15:57:30 +08:00
这也太有意思了
|
206
dethan 2021-06-04 15:58:41 +08:00 via Android
当然是他的问题,技术人也是有尊严的!
|
207
sw926 2021-06-04 16:09:00 +08:00 1
说句扎心的,你所在的位置对技术要求不高,而且你的职位不高,满足上司的要求比技术好更重要。另外,除非你技术高到不可替代,否则只能是选择比努力重要,人际关系比技术重要。
|
208
kuaner 2021-06-04 16:09:30 +08:00
从管理上我觉得可能真没毛病,他甚至还会 review 你的代码,自然是要把水平都拉到一条线上
|
209
zhengsidao 2021-06-04 16:19:25 +08:00
其实他是没有问题的,主要是稳定以后也便于拍错,但是不接受新知识其实有点不好...
话说一句,我们直接上 es7 了,这种感觉爽的一匹吼吼吼 |
210
Hojondo 2021-06-04 16:22:14 +08:00
这团队里前端的地位也太低了,赶快走 别回头!
|
211
HDMItoDP 2021-06-04 16:23:59 +08:00
你走了,不影响程序,这就是他要的结果。你也表示你要走了
|
212
NakeSnail 2021-06-04 16:30:39 +08:00
我一直觉得 java 的 filter 那种写法跟他语言本身不像,像是没办法搞出来的一个语法糖
|
213
mahone3297 2021-06-04 16:47:23 +08:00
站在上司的角度考虑下,如果你是上司,你怎么办?
如果你说,让底下员工写。假如出了 bug,联系不到员工,怎么办? 你刚入职不久,这个信任,是要慢慢建立起来的 |
214
keventseng 2021-06-04 16:54:00 +08:00
团队协作,你上司的做法没毛病。
|
215
6J73U552K5UVij4R 2021-06-04 17:09:26 +08:00
熟悉的 v2 又回来了,我很欣慰,doge 。
|
217
Mutoo 2021-06-04 17:39:02 +08:00
@keventseng Leader 那不叫协作,这叫拖后腿。
|
218
yeqiu 2021-06-04 17:47:41 +08:00 2
|
219
cw2k13as 2021-06-04 17:53:30 +08:00
都 0202 年了,现代浏览器都支持好吧,babel 给他转一下吧,咳,这活没法干,明明可以用拖拉机非得手犁地
|
220
cw2k13as 2021-06-04 17:58:05 +08:00
大兄弟你小心点,入职就干活不正规啊,大概了干完活走人,正常公司过了试用期,再观察几个月才能给他分配任务啊
|
221
garvan 2021-06-04 18:04:09 +08:00
总结,楼主和老板都挺菜的,绝配
|
222
xingyuc 2021-06-04 18:04:40 +08:00
java8 就有函数式编程了吧
|
223
cco 2021-06-04 18:23:07 +08:00 1
你们这领导怕不是还在用 JDK1.4 吧。
|
224
fgk 2021-06-04 18:24:21 +08:00
lodash 或者 ramda 选一个,就不是新特性了
|
225
cco 2021-06-04 18:25:12 +08:00
@qwerthhusn 你这前半部分 java11 了,已经超越了他们领导的认知了。
|
226
liuidetmks 2021-06-04 18:47:49 +08:00
为什么不用 typescript 呢?
现在还有人裸写 js? |
227
gancl 2021-06-04 18:52:39 +08:00
@liuidetmks typescript 写有什么好处?
|
228
Leviathann 2021-06-04 18:58:55 +08:00 via iPhone
filter 还好
reduce 就真有很多人不懂了 今天 review 的时候就问我一段从 array 构造 object 的代码为什么用 reduce 不用 map🐶 |
229
levelworm 2021-06-04 19:45:19 +08:00 via Android
@touchwithe 笑死了,unpack 是吧。。。
|
230
levelworm 2021-06-04 19:48:23 +08:00 via Android
@zhangbaoliang 我也赞同,以 C++为例,自从 13-20 加了好多东西,很多人写出来的东西基本上就是全函数式的了,那你倒是用 lisp 啊。。。
|
231
gy0624ww 2021-06-04 19:50:43 +08:00 1
支持领导,要有大局观。
炫技啥的,技术领域更新迭代那么快,总用新技术摒弃旧的,还不嫌内卷吗 我的观点就是当新技术解决了日常开发的一个痛点,那可以考虑推广,但是同样的效果,或者增益甚微,仅仅是追求"新",duck 不必。 还有说一句,大厂很多都存在旧系统,旧版本,你改革你负责可以,否则还是别折腾了。 |
232
gy0624ww 2021-06-04 19:58:13 +08:00 1
还有补充一点,你说担心未来在会技术退步,这个和工作没多少关系,还是和自己的关系比较大
比如搞后端的,哪有那么多高达上的业务让你展现,大部分都是 curd 罢了。除了优化解决痛点之外,业余自己充电是提升自己的主要途径。 |
233
hafuhafu 2021-06-04 20:05:46 +08:00
不让用 reduce 、flatMap 之类的我还能理解,filter 的话...既容易看懂,还方便直接,学习成本极低,使用起来感觉一点心智负担都没有。
而且 Java 从 JDK8+有也 Stream...你这上司太古板了,对你的发展不是好事。 |
234
xiaoming1992 2021-06-04 20:25:31 +08:00 via Android 2
前端的技术发展,真的不是为了炫技,大多数都能切实地提高开发效率。
是上面这句话太过深奥无法理解,还是因为一些人太过傲慢? |
235
touchwithe 2021-06-04 20:30:29 +08:00 via iPhone
@levelworm #229 就是**kwargs 被 leader 当作指针的指针……笑哭
|
236
levelworm 2021-06-04 20:40:27 +08:00
@touchwithe 这个是核心语法啊,他不懂是不对了
其实我一直琢磨,对于比如说 java, C++等语法比较多,年数比较久得语言来说,到底哪些语法算是核心语法,不懂就不对? |
237
touchwithe 2021-06-04 20:44:54 +08:00 via iPhone
@levelworm #236 程序员这行本身就是要终身学习。新特性可以为了兼容或易读等原因不用,但不能不会甚至不知道。
|
238
levelworm 2021-06-04 20:49:13 +08:00 via Android
@touchwithe 但是我觉得终身学习是可以有不同方向的。
|
239
no1xsyzy 2021-06-04 21:03:18 +08:00
@yeqiu 是一个非常简单非常基本的东西,不过 filter 不是 lambda,而是可以把 lambda 或者说任何 a -> Boolean (甚至隐式地转换成 Boolean )作参数
你先定义个函数 isLengthGreaterThanSix 再把这句话写成 words.filter(isLengthGreaterThanSix) 是一个道理 只不过 lambda 写起来舒服罢了:一次性、即用即造、即完即销、不用特地为它命个名 |
240
young1lin 2021-06-04 21:12:56 +08:00
这个我觉得你可以整理一份详细的文档教程出来,给你上司,照着这个来学,慢慢改不就好了吗。身居高职,你不在,领导就是背锅的,我最近带人感悟的,好累啊,什么都要给安排,自己还要做,出了问题还得我背锅。草
|
242
molvqingtai 2021-06-04 21:19:11 +08:00 via Android
听叔一句劝,少用 filter map 之类的,年轻人你把握不住😂
|
243
JerryCha 2021-06-04 21:25:15 +08:00
4.万一我休息遇到 bug,for 他会改
------------------------------------------------------------- 你要是不想跑路就听他的,然后该休假时就休假,让领导修 bug |
244
randyo 2021-06-04 21:31:11 +08:00 via Android
当你们还在为用 for 还是 filter 争论时,我已经用 filter 写完功能然后按时下班看电影去了🙄
|
245
drackzy 2021-06-04 21:40:48 +08:00 1
小公司老板不懂,经常招到水货总监。不精通项目的技术,只会随便找一个个问题进行说教,显得自己很懂。提桶跑路吧。
|
246
GopherTT 2021-06-04 22:12:10 +08:00
你写前端跟 java 里没有 filter 他看不懂有什么直接关系吗?
|
247
stevenhawking 2021-06-04 22:13:34 +08:00
面向上司编程
|
248
akira 2021-06-04 23:20:17 +08:00
你也说了 “公司还行,但是没有干长的打算”,
然后你还打算用别人不会的写法, 别人给你解释了你还一肚子怨气, 明显是你的问题了吧 |
251
liuyl 2021-06-05 03:03:52 +08:00
你上司 java 也是半吊子,不知道 java8 stream 就罢了,guava 也没用过
|
252
lucybenz 2021-06-05 06:07:43 +08:00
此时此刻 你只是上司的几根手指头 帮他敲代码 而不需要携带思想
|
253
Zeonjl 2021-06-05 07:46:15 +08:00 via iPhone
道行真不行!
|
254
DOLLOR 2021-06-05 08:39:02 +08:00 via Android 1
@ian19znj
“只是个美工”,瞧这一股不屑的语气,有的码农已经默认自己比 UI 设计师高人一等了呢。 |
255
seakingii 2021-06-05 08:48:40 +08:00 5
你们这些人不要老是纠结一个 fliter 函数.事情的本质是,这个领导为了项目的稳定性,要采用他最熟悉最有把握的古老的 Javascript 语言特性.这不是一个 fliter 的事,还有 map,reduce,for in ...一系列的事...对于"领导"来说,他喜欢他最有把握的事,无可厚非,毕竟项目脱序的话他有更大的责任.
如果一个前端,自己想用什么就用什么,那么,前端想用 flutter 写,再转译 js,这样做行不行?不行?你这个水货领导,flutter 都不懂?所以说,在一个公司工作,就要遵守公司的规范,哪怕这个规范不合理,不然各用各的,项目会失控.实在对"规范"不满,几个选择,一是走人,二是向上爬后由你掌握规范,三是以理(力)服人,说服你的"领导"...最没用的方法就是上论坛找认同感了吧 |
256
boywang004 2021-06-05 09:14:14 +08:00
往好处想,你内没啥上进心的 leader 居然还亲自 code review……灰常棒呀(手动狗头
|
257
lovecy 2021-06-05 10:10:36 +08:00
@yeqiu 跟 lamada 没什么关系,传普通函数进去都可以,就是一个 Array 的方法而已,我看了下是 2011 年出的标准,十年前了
|
258
xyx650 2021-06-05 10:29:22 +08:00 via iPhone
是我的话,以自己不懂为由拒绝接受十几年前的“新特性”,这种领导甚至这种公司都不值得继续留下去
|
259
a719031256 2021-06-05 11:01:26 +08:00
作为外包开发,楼主给我一种非常不信任的感觉,一味的添加新东西,却连旧东西都不精通,新东西的实现是建立在旧东西的基础上,旧东西玩不精就玩新的,很容易写出 bug,这种情况会导致改 bug 时间大于开发时间,最终导致项目流产
而且楼主给人感觉不靠谱,做事浮躁,我这几年遇到不少楼主这样的同事,一上来不考虑实际情况,盲目的推新 |
260
x86 2021-06-05 11:36:15 +08:00 via iPhone
这就第三页了,熟悉的前端回来了
|
261
mxT52CRuqR6o5 2021-06-05 11:38:31 +08:00 via Android
@seakingii 楼主就在说 filter,为啥不让纠结 filter,倒是你在滑坡谬论
|
262
mxT52CRuqR6o5 2021-06-05 11:42:15 +08:00 via Android 1
而且一个团队的组成是团队里的所有人,而不是技术 leader 一个人,代码规范应该遵循大多数人的习惯而非 leader 一个人,更何况这个 leader 并不会来这个前端项目写代码
|
263
chemzqm 2021-06-05 12:20:34 +08:00
我感觉你可以走人了
|
264
rainboat 2021-06-05 12:27:44 +08:00
leader 连个 fliter 都看不懂,可以跑路了
|
265
seakingii 2021-06-05 14:16:05 +08:00
@mxT52CRuqR6o5 楼主想用的会只有一个 filter 么?目前只是用 filter,如果没有约束随便用,按楼主的想法,不会想用 map,flatMap,reduce,class,const,let,fetch,promise,Symbol,getter,setter,proxy...所有这些更先进的内容么?看事情要看本质,楼主的问题就是想用最新的语言功能达到更好的效果,楼主的"领导"就是只想用他掌握老的语法,能完成功能就行.矛盾在这里.我发的论点就是楼主作为新人在技术方案上没有权威.
"领导"的要求,总有一个边界,如果没有边界,那就甚至会前进到所有语言都可以用,只要这个语言能编译成 JS,运行在 WEB 上;如果有对语言的限制边界,那么这个边界会在哪?一般情况可能会是 ES5,ES6 随便用,只要用 BABEL 翻译一下就行,显然在这个案例里,边界更后退在甚至不能用 filter |
266
seakingii 2021-06-05 14:25:33 +08:00
语言的技术是学不完的,楼主没必要强求一定要在公司学.公司不是学技术的地方,公司是做项目赚钱的地方.想学技术,现在这个世界,道路多的是,最简单就是做个自己感兴趣的项目,有什么新的技术都用上.什么 ES5,ES6,ES1000000 你想用就用,什么 VUE,REACT,angular 随便选.甚至你可以学学 typescript,flutter,kotlin 再翻译成 JS,学学 golang ,rust 做 wasm 开发...前端领域太大了,学不完的技术,只用 jquery 的人还大把在做项目.不要强求别人能掌握什么前端技术,做好自己吧.
|
267
mxT52CRuqR6o5 2021-06-05 15:06:06 +08:00
|
268
shyling 2021-06-05 15:20:25 +08:00 1
1. filter 是 es5 的( chrome 1, ie 9 就原生支持的函数:你不会我会告诉你,你可能不适合 review 代码)
2. 我不用可以,但理由不能是你不会。你今天说你不会,因为 java 里没有,那我明天写个 splice ( ie5.5 就有) java 里也没有,你难道再说你不会? 3. 用什么,不该用什么,应该明确有个标准,说只用 es5,那我不用 es6,说用 es3,那我就不用 filter 。而这个标准应该由所有前端同学根据标准的发展,公司业务去决定,而不是给一个不写前端的后端做一言堂。客户的情况如果支持我们直接用 es6,那为什么还要去写冗余的代码,去加载没必要的 polyfill,这对性能和用户体验都有好处。 |
269
seakingii 2021-06-05 15:21:32 +08:00
@mxT52CRuqR6o5 "filter 、map 、reduce 这三个都是旧时代的东西"?这个"旧时代"是你定义的么?什么是"旧时代"?哪些是属于"旧时代"? 显然在这个案例里,"领导"定义了哪些能用哪些不能用,而不是你定义的"旧时代"
|
270
seakingii 2021-06-05 15:28:10 +08:00
@shyling 同意你的看法,这个案例就是缺少标准,或者说规范,或者说边界. 其实也不是没有标准,只这个标准不是明文的编程规范,而是"领导"的 Javascript 认知水平.
大公司为了解决这种情况,会出编程规范来约束团队的行为,比如《阿里巴巴 Java 开发手册》,小公司小团队因为各种原因,很多是不会有这样的规范的. |
271
mxT52CRuqR6o5 2021-06-05 15:29:52 +08:00
@seakingii 所以我的观点领导的规定>时代的规定这个事实是有问题的,你在反驳些什么
|
272
xcstream 2021-06-05 15:33:29 +08:00
挺好, 越是技术上没追求的公司,越是其他地方有优势。
只有其他地方没什么优势了,才最有技术上形而上学的东西。 |
273
Lemeng 2021-06-05 15:45:11 +08:00
有点意思。只能这样说了
|
274
mxT52CRuqR6o5 2021-06-05 15:58:54 +08:00
@xcstream 所以谷歌微软一定是其他地方没什么优势的公司了
|
275
learningman 2021-06-05 16:07:04 +08:00 via Android
@dfkjgklfdjg 可是 babel 的实现是 polyfill 啊。。。
|
276
seakingii 2021-06-05 16:13:33 +08:00
@mxT52CRuqR6o5 你认为"领导的规定>时代的规定这个事实是有问题的" , 相反,我认为"领导的规定>时代的规定这个事实"是可以接受的, 只要这个"领导"带领的团队能完成公司的项目,并且能正常上线运营,给公司带来效益,使用老旧的技术也是可以接受的.
不管是"使用新技术",还是"使用老技术",项目成功与否,责任肯定是"领导"更大,他更有权决定技术方案. |
277
mxT52CRuqR6o5 2021-06-05 16:35:36 +08:00
@seakingii 你只是证明了 leader 有权利决定用什么技术,但你没有证明 leader 决定到底是好是坏
|
278
tealerK 2021-06-05 16:54:25 +08:00
@yeqiu 同感 后端表示初看这些人把 filter 吹的天花乱坠,结果就这?!果然都说前端喜欢卖弄框架和概念不是没有道理的
|
280
auh 2021-06-05 17:27:04 +08:00
上司的话是对的。不要光想着当程序员。纯粹意味着傻吊
|
281
h1104350235 2021-06-05 17:55:26 +08:00
遵守团队规范,我觉得没啥问题。如果你不爽 leader,你可以做 leader
|
282
seakingii 2021-06-05 20:33:54 +08:00
@mxT52CRuqR6o5 我没想证明什么技术是好的什么技术是坏的,我的观点是:采用什么技术由"领导"决定 ,不管好坏.后果也是"领导"承担,不管好坏.
|
283
hotsymbol 2021-06-05 21:19:16 +08:00
那就用 ES2011 来写。同样场景:团队内高 T 大佬说 不要用 Python3,我只会 Python2,你们用 python3 或者用 Golang,要么就不要 merge 到 master,因为我没法帮你做 Code Review
|
284
initd 2021-06-05 22:01:16 +08:00
ts 写,tsc 输出 es5,或者 babel,rollup
|
285
tonytonychopper 2021-06-05 23:22:09 +08:00
filter 其实是 es5 语法。
这种事情,要么你说服 leader,要么 leader 说服你。没有 filter 也能写代码,就是干得爽不爽而已。另外这帖子还有人在喷前端我也是服了…… |
286
inhzus 2021-06-05 23:38:59 +08:00
什么年代了连 filter 都能算是炫技了?写 Java 的连 Stream/guava 这些都没用过真的有写过代码吗?领导错没错不重要,这么菜的公司快跑啊!
|
288
Solael 2021-06-05 23:52:39 +08:00
现代编程语言越来越趋同,新特性主流语言不可能没有,一丁点不愿意学习的人真心不适合继续在一线开发。
|
289
anguiao 2021-06-05 23:59:04 +08:00
能不能用应该有个确切的标准,而不是你说你不会我就不能用。
|
290
loginbygoogle 2021-06-06 00:25:50 +08:00
互联网太精彩
|
291
DOLLOR 2021-06-06 00:31:24 +08:00
@tonytonychopper
这个环境就是这样的,许多后端有迷之自信,对自己不了解的领域充满偏见 |
292
shakukansp 2021-06-06 01:30:23 +08:00 2
笑死了
楼主你自己封一个 filter 然后用领导让不? |
293
godblessumilk 2021-06-06 02:35:25 +08:00 via Android
建议普及下 微服务 /微前端,提高自治权,实现软件工程推崇的功能模块 [高内聚低耦合] ,即可实现职权划分清晰,也避免了甩锅领导担责,同时不限制手下的技术栈挑选使用
|
294
way2explore2 2021-06-06 06:48:55 +08:00 via Android
骨头硬一点
|
295
Actrace 2021-06-06 09:37:13 +08:00
技术角度:
看了一下 array.filter,发现确实可以简化某些场景下的应用(虽然我也是从未用过这个特性),是一个蛮实用的语法糖。不过,语法糖其实不是越多越好,编程语言过多的规则(语法糖)会加深心智负担,间接影响了程序可读性。array.filter 相比传统的 for,虽然减少了代码量,但是 for 能实现一样的功能,还能更灵活,大多数情况下可能还是选择用 for (少即是美)。 管理角度: 团队项目的整体水平实际上是一个木桶效应(重点),其最强实力取决于最菜的那个。也就是说,一旦你用了 array.filter,其他人也必须一起使用,否则就无法一起协作。解决方案大概就是以下两点: 1,所有需要用到 array.filter 的地方你都来承担。 2,睡服其他人,让他们一起用 array.filter 。 一个例外的方案是你收购了这家公司。 |
296
cereschen 2021-06-06 09:52:18 +08:00
遇到这种情况直接跑路就行了
首先 你继续这样自己写着也不爽 然后 你以后出去面试其他公司 es6 都不熟 人家肯定不要你 你自己考虑吧 |
297
LudwigWS 2021-06-06 10:59:49 +08:00 via iPhone
有些人的技术就是一年的工作当十年来用
|
299
slert 2021-06-06 20:49:53 +08:00
比较意外的是楼上很多人还挺支持这个领导
作为员工 可以选择服从领导 但这不能改变这个领导既不是一个好的程序员 也不是一个好的领导的事实 |
300
dfkjgklfdjg 2021-06-06 21:56:15 +08:00
@learningman 我记得可以把 ES6+的新特性 build 成 ES5 来着....现在不行了吗,有段时间没关注 babel 了。
|