不用框架,只用基础类库(操作字符串啊,解析 json ,解析各种 XXX )造一些显而易见的轮子。
一句话总结,我可能是个假程序员。
各种名词朗朗上口,各种概念如数家珍。但真要自己去实现。哪怕是一个很简单的轮子,投入的精力相当可怕。各种细节必须要考虑在内。平常只是实现业务逻辑,相比而言差别太大了。业务逻辑的细节是有限的,轮子的细节是无限的。 对开源贡献者油然的有一种敬佩之情。
我想,如果没有生产效率的考虑,用框架是否是自己作死。工作 3 年和工作 1 年完全没区别啊。。。最少我身边的朋友没几个去翻框架里的源码。更别说造轮子了。
下次再有人问我如何提高水平,我想我的答案一定是去造个最简单的轮子,哪怕只是写文件。框架用多了会有后遗症。
尽量别用框架。。。用框架代表的是生产力,而不是脚踏实地的能力。
这个能力很玄学,我的意思就是正儿八经的自尊感。
所以,最近 js 界如雨后春笋一般的轮子冒出来。以前是觉得很装逼,现在觉得这群人愿意投入自己额外的时间。光这一点就值得人佩服。
程序界的键盘侠也是多如牛毛的啊。
不喜欢用自己熟悉的语言去做轮子的,尤其是已经有成熟的方案了。会有挫败感。。脑子里会一直飘着:“你是个 SB ,你是个 SB ,你是个 SB 。。。”
所以就用所谓的新语言咯。顺便学习点新的技术做技术存储,多一样技能傍身没坏处。
于是乎 试着用 go 做,发现 golang 语法确实很恼火。除非工作需要,我想我不会再碰这个东西。。
再试试 rust 做,好东西啊,可惜没个好爹。
so ,是要提升自身的能力,还是生产力?这是个问题。。。
以现在这个社会的社会导向而言,生产力代表了来钱,那就选生产力。然后转管理,然后再不碰代码。。
前不久的那个一毛钱没拿的“ CTO ”就是个典型,我看了给我的感觉就是我草,再不学习被 t 了连饭碗都没了。。只能靠吹牛逼活着,这就是忘了做程序员的初心了啊。
当初为什么要做程序员呢?第一是生存,第二是可笑的理想。现在好像只为了赶紧存首付,生娃,结婚。
刚过完 30 生日的大叔月经吐槽,因为是双鱼的,所以有时候特别感性。。。思考我这个假的人生。。
Freedom !!!!!然并卵。。
1
altairkuma 2017-03-18 17:12:55 +08:00
Just for fun
|
2
fan123199 2017-03-18 17:22:21 +08:00
我会造轮子,但是还是倾向于用框架。造轮子是为了了解原理,使用框架是为了交接方便以及持续的版本迭代。个人轮子肯定不够大众轮子长寿。
|
3
lichun 2017-03-18 17:24:12 +08:00
用框架代表的是生产力,而不是脚踏实地的能力。
|
4
littleylv 2017-03-18 17:25:00 +08:00
个人项目,个人兴趣,可以造轮子,可以了解底层逻辑,提升技术
公司项目需要用到框架还是老老实实框架吧 |
5
misaka19000 2017-03-18 17:29:47 +08:00 via Android
楼主把自己造的轮子贴出来看看呗
|
6
zhidian 2017-03-18 17:33:50 +08:00
突然想到那句:“ 20 岁写不出 Linux , 50 岁也写不出”……那么,多年工作经验是否是个伪命题?
|
7
sampeng OP @zhidian 这句话说的确实是这么个意思
@misaka19000 特别简单的轮子,就不贴了。自己写着玩的。。 @littleylv 是这么个道理。。。公司项目还是公司要什么提供什么。。。 @fan123199 使用框架我的感觉纯粹是为了工资。。。因为不用框架要几个月,用框架只需要几个小时。这代表了你会不会被淘汰掉。。当然,有自己稳定的轮子,这个就看 leader 怎么看了。仁者见仁智者见智。 |
8
crysislinux 2017-03-18 17:47:57 +08:00 via Android
框架也不是人人都能用好的。。实际上用不好的人更多
|
9
sampeng OP @crysislinux 讨论的并不是框架好不好用这个问题。。。我想吐槽的是。。。脚踏实地感。存在即合理。。。公司项目不用框架不是作死么。。。
|
10
sampeng OP 其实还有一个故事:
如果你的 leader 告诉你,你有 N 个月时间做一件事。你可以自由选择自己做或者用现成的解决方案。 N >= 3. 大家伙怎么选? |
11
zmj1316 2017-03-18 17:55:53 +08:00 via Android
写 C++呗,一般搞这个的,框架都是自己人做的吧
感觉我逛 GitHub 也没见过多少出名的 C++框架。 |
12
AlwaysBee 2017-03-18 17:58:31 +08:00 via iPhone
楼主, go 的语法让你恼火?你确定不是 rust 么
|
13
dtysky 2017-03-18 18:08:20 +08:00 via Android 1
就是因为想太多得失心太强你才不能变强
有什么想法就赶紧去做,老是想这想那只会对任何事情都望而却步 — 最后一事无成 |
14
tftk 2017-03-18 18:11:34 +08:00 1
都是工具而已,谁关心。
|
15
Jimrussell 2017-03-18 18:14:09 +08:00
造框架轮子和造工具类库轮子是不一样的概念。能写出 lodash/ramda/underscore 之类工具的人未必能创造得出 backbone/angular/react
|
16
4ever911 2017-03-18 18:16:08 +08:00
取决于你想做什么,这个世界没有绝对的事情。如果想把程序水平提高,那就要多研究学习别人的代码。如果只是想快点做完事情,用封装好的更好,留下时间可以做更多有意义的事情。
一切取决于你认为什么是值得的和重要的。 |
17
bonfy 2017-03-18 18:22:34 +08:00 via iPhone
有个问题 楼主你自己写的框架你自己用么?
用 那楼主為什麼排斥框架 不用 那你造轮子干嘛 ... |
18
echo1937 2017-03-18 18:23:22 +08:00 2
作为人类,你会反对使用工具吗,认为工具只代表生产力,不代表能力吗?
作为程序员,可以不用框架,那是不是语言也应该自己写,指令集也自己设计? 在当今世界,几乎所有专业都与计算机息息相关。但是,只有某些特定职业和学科才会深入研究计算机本身的制造、编程和使用技术,而程序员在其中的作用,是更快更好地为人类生活带去便利,如果你不认可这一现实,应该去从事科学研究,而不是生产应用。 |
19
Pyjamas 2017-03-18 18:26:46 +08:00
这么说吧,大部分人造轮子造出来的都是废轮子,可能就没人用。如果大家都去造轮子,其实是很大的资源浪费,就像优化代码,写 C++的时候强行插入内联汇编,可能还不如不折腾直接让编译器优化的好,编译器的优化策略都是大牛折腾出来的。
我觉得读大牛们的源码更有效吧,当然肯定也少不了自己的练习,造点小轮子啥的。 如果日常生活中碰到个人对自己平时所用工具、框架的源码了如指掌,那已经很牛了吧。 用框架,有些人做久了把 API 背下来了,充其量是个熟练工,那种就不行了。 |
20
zhangchao 2017-03-18 18:33:12 +08:00 via Android
即使是造轮子,也避免不了用到别的轮子的。
一个人的价值体现在,你解决了什么问题。合理地使用工具,解决你要解决的问题再正常不过了。 已经存在的轮子,你再做一个出来,这只能说明你是一个合格的学生。能够使用工具解决真正的问题,才是工程师要做的事。 你照着别的轮子做一个出来并不会让你变得像原作者一样厉害。框架作者的价值在于,以前人们不是这么做项目的,他想到了一种好的做项目方式,得到了人们的认同,他的价值在于他提出了这种思想。 在实践中各种各样的轮子用的多了,了解各种轮子的优点和不足,才有机会想到,在软件开发中还有哪些问题需要解决,我们现在还缺乏什么样的轮子,才能造出有意义的轮子。 |
21
AsaMyth 2017-03-18 18:42:49 +08:00
上次公司硬件部门跟我说个需求,我第一反应竟然是“没有这个 API ”......
|
23
freestyle 2017-03-18 18:45:43 +08:00
lz 造过哪些有意思的轮子, 开个贴分享下呗
|
24
MBTimY 2017-03-18 18:46:17 +08:00
轮子是很好的东西, 感觉楼主还不算是一个假程序猿,我才是如假包换的. 入行也有些年月了,现在才来学习框架这些基础的东西, 入行这么多年就迷茫了这么多年, 现在什么东西都学了一点 但是又感觉自己什么都不精通. 什么东西说起来可能朗朗上口, 但是真正实操起来, 又感觉好像哪里都说不上来的别扭.. 最近算是想明白了, 设计和开发应该才是我的人生追求, 看着市面上那些琳琅满目的产品, 一件件优秀的设计出来的硬件软件, 我觉得那里才说我的归属 . 现在准备一步步踏入这个领域.. 感觉自己当了好多年的假程序猿了, 与君共勉.
|
25
wangxn 2017-03-18 19:06:35 +08:00 via Android
有谁来用 C++ 写 web ?
|
26
wangjie 2017-03-18 19:23:04 +08:00
> 于是乎 试着用 go 做,发现 golang 语法确实很恼火。除非工作需要,我想我不会再碰这个东西。。
为什么要黑 golang ? |
27
knarfeh 2017-03-18 19:39:44 +08:00 via Android
golang 的语法挺简单的啊
|
28
wuxqing 2017-03-18 19:40:42 +08:00
看定位,是想成为铸剑师?还是剑客?
|
29
crysislinux 2017-03-18 19:51:33 +08:00 via Android
@sampeng 我的意思就是大家都用框架,也能体现出能力的不同。何况用框架怎么就不脚踏实地了。要不要用汇编。。
|
30
coymail 2017-03-18 20:06:51 +08:00
计算机行业和建筑行业在本质上其实没有什么区别,
建筑行业和计算机行业都是那么一群人,而建筑行业各个人之间的分工可以说是硬区分, 只是计算机行业不同人之间的界限往往不是那么清楚的,我觉得可以说是软区分, 比如架构师, CTO ,普通程序员, |
31
coymail 2017-03-18 20:14:02 +08:00
@coymail 没编辑完...不小心发送了
计算机行业人与人定位区分很软,所以势必导致界限模糊, 用框架用轮子也没什么不好,建筑行业就是那些建材不容易自己造, 所以区分度高,分工明确,软件呢,每个人都有机会写框架造轮子 |
32
hpeng 2017-03-18 20:18:18 +08:00 via iPhone 1
你说的都很有道理,但是为什么要黑 go
|
33
uucloud 2017-03-18 20:19:59 +08:00 1
从杂质中提取出铁,造成锤子,用锤子造出简陋的工具,用简陋的工具造出复杂的工具,用复杂的工具生产出能改善生活的商品。
代码也一样,前人抽象出更高一层的工具被新的程序员继承,进行更高层次的抽象,代码的巴别塔才能越修越高。 人类出生以后需要学习已有的所有前置知识,一样的过程要被无数人实现无数次才能往前迈一点点,牛顿说自己站在巨人的肩膀上,那也是他自己爬上去的。 但是封装良好的程序,让程序员可以真正的生下来就在巨人的肩膀上,而不用从写二进制代码开始。 |
34
roys 2017-03-18 20:56:51 +08:00
很同意 28 楼的观点。
前段时间纠结一个类似问题,一个好的项目还是一个赚钱的项目,就是个定位的问题。 所以还是看自己定位吧。 |
35
shoaly 2017-03-18 21:13:34 +08:00
要么用轮子做应用, 要么专心开发轮子, 一边做应用同时造轮子. 很有可能轮子转不好, 应用也跑得不欢快
|
36
arischow 2017-03-18 21:19:55 +08:00 3
应该从炼硅开始吧。
|
37
dabpop139 2017-03-18 21:24:12 +08:00 via Android
我也有楼主的困惑,同样也我也正好 30 ,知道越多,懂得越少,我今天也真正理解了这句话。前段时间也试着做了一个源码分析的项目,希望大家共同参与做源码的分析,但是可惜响应的人也太少,我把帖子链接贴到这里大家共勉。
https://www.v2ex.com/t/346917 |
38
q397064399 2017-03-18 21:25:39 +08:00 1
没有用的,绝大部分公司要的是生产力 而不是 技术研究,资本是用来赚钱的,不是用来研究技术的
-------------------------- 我以前做过一段时间的机械加工,就是机械工厂那种流水线式的生产,完全照着图纸加工, 基本上是机械式的装夹,然后按下按钮 机器完成加工工序 (不要问我为什么,我是机械狗毕业,为什么不去当画图狗?因为垃圾本科毕业,画图都没人要) 这种工作别说 34 岁,基本上 30 都干不到,富士康内部每年一大把一大把的招聘 中专 大专毕业生干这个, 好多都是 18-28 岁的年轻人, 30+的基本上看不到, 而且年轻人精力旺盛,加班到 12 点 来个三班倒 基本上是无压力的,程序员加的那点班 说实话真不算什么 而且这种机械式的加工的职业,是没有任何职业成长出路的 随着智能技术 以及计算机技术的出现,这种岗位的出路越来越少, 以前还有好多老师傅还会吹嘘 自己加工的精度比计算机还牛逼,随着计算机技术的发展,狠狠的被打了一波脸 最早很多加工领域 需要工人来保证精度 只有非常牛逼的加工人员 凭借过往的经验来保证的,但是随着技术的发展 人的重要性慢慢被替代了 机器唯一不能代替人的地方 复杂的装夹动作 以及对图纸工序的理解了 --------------------------- 程序员的工作本质也是一样的,绝大部分的岗位注定是 理解业务->编写业务代码 早期由于计算机性能等限制,程序员需要非常好的计算机知识等功底才能编写出能用的代码, 到今天这种情况,对于一个规模不大的问题, O(N3) 跟 O(logN)的实现 又有多大的区别呢? 再慢一点,也就泡杯咖啡的时间就解决了 同其它各行各业的工程师一样,绝大部分工程师 都是解决技术世界最后一公里的问题 , 程序员跟软件工程师 需要解决的问题就是 具体业务->到通用计算机实现代码实现的问题 |
39
zzcchh 2017-03-18 21:36:51 +08:00 via Android
楼主认为造轮子的程序员才是真的,用轮子的都是假的么?
|
40
q397064399 2017-03-18 21:41:45 +08:00
@zzcchh #39 分工不同而已
|
41
juntong 2017-03-18 21:43:49 +08:00 via iPhone 2
记得之前听过一句话:大多数行业,都是最顶尖的那不到 1%的人研究最前沿技术,指定规则,生产工具。而剩下的 99%的人需要的只是遵守规则,约学会怎么使用那些工具。编程行业也是如此吧,不到 1%的人完成了纯技术研究 99%的工作。
|
42
WispZhan 2017-03-18 21:45:15 +08:00
感觉存在一个误区,程序员和计算机科学家之间的概念区分。
或者说是工程向和科研向的概念区分。 ———————————————— 作为程序员或者软件工程师,乃至架构师,我们首要的目的是解决实际成产中的问题。 框架和轮子都是这个解决问题的过程中产生的。 框架和轮子不是为了造而造的。 ———————————————— 作为一个工程师,我们首先想到的就是如何解决问题,就如同其他行业的传统工程师一样。 譬如建筑工程师,机电工程师,电子工程师等等,我们和他们没有本质区别。我们不需要主力去研发什么高达上的架构或者算法。我们的着重点是如何使用现有的技术完成我们对面的需求问题,当现行技术无法完成的时候,我们要想办法去完成。 而不是为了实践什么自尊或者个人价值去做什么高达上的框架或者轮子。 ———————————————— 我们就是工程师,或许很平凡。 |
43
WispZhan 2017-03-18 21:51:10 +08:00
另外,我上面这番话只是针对这个职业本身来讲的。
除了职业以外,还有一个东西——兴趣。 兴趣内容和工作内容绝对不会一样,而且是 100%不会一样,除非你是一个艺术家…… 当兴趣变成职业的时候就是一种悲哀。 |
44
hzw94 2017-03-18 21:55:40 +08:00
我也是用楼主类似的假程序员,系统用框架。懒得看源码,真要源码来写,真的要命。
|
45
wind3110991 2017-03-18 22:04:04 +08:00
你的想法很危险啊大叔,但愿我们不要成为同事吧 = =
|
46
sampeng OP @q397064399
@WispZhan 说的很好,深有同感 @dabpop139 知道得越多,就像窥探到不得了的东西。原来自己无论如何都是 sb … @hpeng 没黑 go …就是说着说着突然想吐槽一下。 |
47
sampeng OP @AsaMyth 对,你不觉得这种直觉很可怕吗?一个工程师应该是想到的是能不能解决。没有 api 就解决不了了?
|
48
yongSir 2017-03-18 22:18:15 +08:00
不要重复制造轮子
强调 重复 如果还没造过 谈何重复 其实是在教导我们不管什么轮子 自己先造个试试 |
49
Lispre 2017-03-18 22:21:52 +08:00
别想这么多了,自己过好每一天,少加班,有钱拿,多陪陪家人才是真的,不然其它的一切都是了解无物的,才 30 岁而立,到 40 不惑的时候你回首能看到的只有曾经自己的所得,不是你用什么框架,不是你技术多厉害,更不是你为这个开源社区做过什么,没有人会在意你的,真的
|
50
ansheng 2017-03-18 22:34:53 +08:00
你不也说了吗,生产用框架效率会高很多,如果你想提升自己,比如去学学英语?提示自己的情趣爱好也是对自身的一种提升,
|
51
billgreen1 2017-03-18 23:04:52 +08:00
不妨我们先写个编译器吧?
|
52
ezreal 2017-03-18 23:14:34 +08:00
造轮子浪费生命
|
53
icegreen 2017-03-18 23:18:19 +08:00
理解业务->编写业务代码 ,你的代码是能准确执行出结果就满足要求了吗;
我认为,到这里还远远没有结束; 我有机会就会在公司倡导一个观念, 怎么把代码写的优雅, 当成一个艺术品来看待; 怎么样更便于阅读, 怎么样更易于维护, 怎么处理能在后续版本迭代过程中, 尽量容易修改而又不过度设计; 在我看来这是最重要的能力体现,也是学校学不来的; |
54
lusizeng 2017-03-18 23:18:19 +08:00
想财务自由不容易啊
|
55
frostfall 2017-03-19 01:07:05 +08:00
有句话叫站在巨人的肩膀上,毕竟现代人也能像原始人一样生活,可到底原始人已经不见了
|
56
carlonelong 2017-03-19 10:24:35 +08:00
来个简单的,先实现一套逻辑门电路?
|
57
Kilerd 2017-03-19 12:37:41 +08:00
Golang Rust 的一点小小看法
在我眼里, Golang 之于 C , Rust 之于 CPP 。 我很喜欢 Rust ,无论是变量命名方法,语法等等,奈何学习起来陡峭得飞起。写起来各种不顺手,过度强调安全性导致严重失去了易用性 Golang 是我对 Rust 无可奈何之后学习的语言。给我的感觉就如同当时同时学 C 和 CPP 那样( CPP 写起来炒鸡不舒服, C 就很 nice ), golang 在保证一定安全性的情况下实现了易用性,写起来舒畅无比。 当然了, Rust 的生命周期,所有权,借用等等 都是无比吸引人的,再加上 循环中可以用标签的形式跳出。 等等很多没有历史包袱的语法糖和特性,想想都很动人。 不可否认的是, Rust 存在了过度设计的无奈, 抛弃了 指针, 但是在工程中又要使用怎么办, Box Cow 来帮你搞定。 str String 的区别,新手估计要搞好久才能搞懂哪里该用 str 和 String 。 str 传递的时候各种取值符什么的。真的难受 虽说 Rust 是冲着 CPP 去的,私以为,还是设计得太过度了。 从 CPP 转移过来的代价太大。 Rust 相比 Golang 还有不少优点: Crates.io 和 cargo 比 Golang 的 go 优秀带多了。 docs.rs 文档很全,但是不太适合新手入门。因为 cargo 内置了生成文档的功能,导致开发者写库的时候都不太习惯写 入门使用, 懒得飞起 两者都可以实现交叉编译,都可以做到零支持运行。 都有自动类型推导。 在我看来都是可以学习的语言。 写 Rust 的感受就是: F**K ,这 TM 也报错;我擦,这里能有什么错 写 Golang 的感受: 咦,这样写居然通过编译了? |
58
justfun 2017-03-19 13:21:13 +08:00
@altairkuma 我的 ID 诶 (逃
|
59
auhah 2017-03-19 13:33:24 +08:00
造轮子不重要
重要的是能造轮子 |
60
kghch 2017-03-19 15:19:58 +08:00
这就跟你做饭一样,难道要钻木取火吗,难道所有食材都需要自己种植吗,如果下面这些都有人接管了, 你只负责做好你的菜。别人也不会因为菜不是你种的就否认你的技能呀。
|
61
ilotuo 2017-03-19 15:26:06 +08:00
现在程序员不断造轮子还开源出来.除了在简历上炫耀自己的技能,能真的"改变世界"么.
(我指的是那种小范围使用的小轮子,不是各种知名开源项目.) 这种轮子最终作用不过是小范围内提高同行人生产力而已. 结果是效率高了,工作时间并没有减少. 甚至这些同行因为使用这些轮子实际能力下降了.怎么办?他们继续造各种所谓的轮子呗. 这些轮子看起来很酷炫,但是可能真的害了我们. 真是一个怪圈. |
62
sampeng OP @Kilerd 本来只是牢骚,既然你如此说。。我想说两句。
其实不是这样的。。如果不用 unsafe 的一些灵活性技能,只是做业务开发。编译过了就一定没问题。这是核心特性。不想 go 或者其他的, tm 编译了我还要担心线上崩了 |
64
c4fun 2017-03-19 18:12:37 +08:00
也要看轮子是否值得造。
大多数时间公司也是需要应用别人造好的轮子解决商业问题而已,没必要真正去重新造轮子。 |
65
tlday 2017-03-19 19:38:18 +08:00
1 造轮子(尝试) => 2 了解原理(学习) => 3 利用轮子(应用) => 4 解决问题 => 5 获得解决问题的经验和能力 => 6 通过能力挣钱 => 7 解决自己和家人的温饱及生活质量问题(活下去) => 8 做自己想做的事
学校 /培训可以通过教授你别人已经动手得到的原理让你直达 2 ,大部分转行来的程序员 /没有好好学的科班出身程序员其实是直接从 3 切入。某部分职业可以直接从 4 切入。行业老手比新手的优势在于老手已经到达 6 ,新手还在 3 。大部分人活着是为了 7 ,但是不得不从 1 开始,而且有可能倒在 7 ,达到不了 8 。有钱人 /无所谓钱的人可以直达 8 。 如果楼主乐于造轮子,享受造轮子的过程,那么你已经直达 8 了。问题在于,你在 8 ,但是你担心你的 7 不稳,所以焦虑。 如果楼主不乐于造轮子,只是为了 3 造轮子,为了满足自己的完美主义强迫症,那么你得考虑是不是该顺着这条链往下推进,而不是在 1 和 2 之间徘徊了。 |
66
Tyanboot 2017-03-20 01:21:56 +08:00 via Android
|
67
realpg 2017-03-20 10:14:05 +08:00
我想,如果没有生产效率的考虑,用框架是否是自己作死。工作 3 年和工作 1 年完全没区别啊。。。最少我身边的朋友没几个去翻框架里的源码。更别说造轮子了。
↑↑↑↑↑↑↑↑ 呵呵,自己学艺不精才能说出来这种话。 如果你把框架当做一种独立语言,你要按照该语言的规范做事,那么,你怎么看? 大家都用一种语言,比如大家都用 java ,大牛和普通程序员写出来的代码质量都没法比,思路也没法比 如果扩张到大家都用 SpringMVC 框架(大公司很常见从 50K 的到刚入职的 12K 的都在一线写代码) 高级开发和入门开发之间的鸿沟也是楼主的思维难以理解的 |
68
flyingghost 2017-03-20 12:10:33 +08:00
老僧三十年前来参禅时,见山是山,见水是水;及至后来亲见知识,有个入处,见山不是山,见水不是水;而今得个体歇处,依然见山还是山,见水还是水。
转一句老话。 对于参透了的人,一段代码是不是被称之为轮子,有区别吗? |
69
iugo 2017-03-23 16:39:48 +08:00
代码本身重要?
还是代码做出来的东西重要? |