题目有点文不对题,但方向大概类似。 昨天看一则新闻, nodejs 一个基础库出问题,引起几千个开源项目的不能工作。 这个基础库只有一个函数,好像是翻转字符串还是什么,没记得太清。
以前有过面试官的工作,来的 10 个里面 9 个不知道项目中使用中的开源项目是如何工作的。。。
如 Android 的 ImageLoader
如 js 的 Angular
如 php 的 laravel
这几个例子其实并不是太好,因为有点大,很多属于框架的范围。但实际上在开发过程中,有些懒得想的问题,真的是条件反射就上 github ,不仔细看文档,直接跳到安装和使用。
细思极恐的事情,用多了开源。脑子跟着木了。。。这会产生惯性的。
不是所有人都会把用过的开源项目精读之,我也只有用到某个接口了才跳转进去看看怎么实现的。仅限手头事完事了。。
不知道各位有没同感。
很矛盾的一件事,用开源,因为项目实在太紧,老大需要炫酷吊炸天的效果时间还给的很短。但这基本浪费了多年的开发精力。。同一件事做旧了,有种搬运工的感觉。不用开源。。。。家。。里。。等。。着。。开。。锅。。。
1
strwei 2016-04-06 23:54:33 +08:00
懶人太多,依賴心裡嚴重,明明可以自己動手寫的東西
|
3
roychan 2016-04-06 23:59:00 +08:00
对这个问题观点很复杂,就是总是无法决定到底什么时候该用框架,什么时候该动手造轮子。
|
4
sampeng OP @roychan 或许可以缩小点,不是框架。而是类库模块之类的。如权限功能模块啊,下载模块之类的。。。框架太大。不想写框架的程序员不是好的程序员。。。我的例子举的有点差。
|
5
sampeng OP 而且有个很有意思的现象,就是造出来的轮子,没问题还好说。一旦有问题,私底下就会开始传。你看, XXX 居然连开源项目都没用。开源项目多稳定。甚至没问题时也会。。。至于为什么,有过这个现象的人自然明白。。
|
6
dphdjy 2016-04-07 00:09:15 +08:00 via Android
至于 nodejs 模块问题这是一种思想,每个模块只实现自己负责的部分,这样看起来一小部分人维护的小项目,实际有 n 位 dalao 在后面维护各种库,只要一个被依赖项目发现坑反馈解决会对整个社区项目产生正向作用。
而引用开源库不看实现 1. 理解这个库对我是否有除了这份工资以外的意义 2. 是否愿意投入这种可能对有用的问题上 3. 是否有能力理解并优化这些开源库 之类的一系列问题 简言之: 短期最优方案或者懒 以及造了一些轮子发现效率底下,代码混乱,别人的开源库质量高,慢慢就不造了,自然特殊需求还是自己牺牲效率造。 |
7
holinhot 2016-04-07 01:00:44 +08:00
php python 都是开源吧。你能不用吗
|
8
chinvo 2016-04-07 01:07:30 +08:00
关于“开源项目是如何工作”问题,我个人认为,
如果只是追求“做完工作”,那么没必要了解太多细节,了解太多细节反倒影像工作效率; 如果追求“做好工作”,那么又分两种层次,一种是将第三方库作为黑盒看待,优化自有逻辑和数据结构,另一种是追求整个项目包括库的优化。 |
9
dreampuf 2016-04-07 01:40:58 +08:00
|
10
66450146 2016-04-07 02:02:19 +08:00 3
如果你是一个开源软件的最大用户,而又不是它的最大代码贡献者,你很可能有些事情做错了
|
11
murmur 2016-04-07 07:56:11 +08:00
了解底层工作细节那是面试的时候用的 因为现在的培训班分分钟让你背下来最新框架的特点 叫你虚构项目 不问太底层的没办法
所以现在面试一面都是。。细节 |
12
expkzb 2016-04-07 08:23:57 +08:00 via iPhone
是不是要从头打造一个操作系统才放心呢?
|
13
Pastsong 2016-04-07 09:39:32 +08:00 via Android
要不是因为有懒人你们现在还在码汇编呢
|
14
domty 2016-04-07 09:53:08 +08:00 1
精力问题吧
好多时候用轮子是因为轮子省事方便,而且性能要比自己粗糙的写一个好的多。我会大致了解原理,但是说实话没多少精力去了解细节实现,除非这块出现了什么严重的问题导致我不得不选择换轮子或者针对源码做修改。 库这种东西本来就是为了完成实现并且隐藏细节的,看文档什么的比看代码找细节方便多了 |
15
wxl1380610 2016-04-07 10:14:12 +08:00
快才是王道,老板不会关心你用不用轮子,只关心你多长时间做完。
|
16
v3aqb 2016-04-07 10:24:56 +08:00
只要用了就是过分用
|
17
zingl 2016-04-07 11:13:57 +08:00
LZ 说的这些事跟开源有什么关系?
|
18
robinWu 2016-04-07 11:30:38 +08:00
我承认:我不是大牛,我只是 github 的搬运工。。。
|
19
odirus 2016-04-07 11:35:31 +08:00
Google 就是 IDE , github 就是 libraries
|
20
Lucups 2016-04-07 11:36:27 +08:00 1
“过分” 应改为 “过度”
|
21
weizhiyao008 2016-04-07 11:37:34 +08:00
我能做到的就是选择开源类库版本时别太激进。
我觉得自己写的类库可能 BUG 还会多很多,好处是自己写的,改起来方便 |
22
cxh116 2016-04-07 11:37:52 +08:00
你自己写测试吗?
好的开源项目都写了测试.把大部分边界条件都测了. |
23
jugelizi 2016-04-07 11:43:24 +08:00
曾经痛苦地修改开源系统的代码
|
24
SpicyCat 2016-04-07 12:41:06 +08:00
我认为做软件的最理想情况是,不用自己写一行代码,全部像搭积木一样用现有组件生成软件。
写代码是很昂贵的,如果写出的代码不能复用就可惜了。况且你也不能保证自己造的轮子就比开源轮子好使,如果可能,还不如贡献力量去提升开源轮子。 leftpad 的问题本质是 nodejs 社区管理的问题,而不是说“我们忘了如何写代码”。难道说每个项目都有自己的 leftpad 就是好的?只是无谓地增加软件复杂度。 本来甄别开源项目的质量就是一项技术活儿,如果你的项目有开源实现可以用,那自然要考察下那个开源项目。如何考察?如果是 github 项目,除去看 star 数,看 issue 中的反馈,还要看是否有好的文档,是否有测试,更新频率,最后更新时间,最后才是看源码。 有不错的文档但是没有测试的项目,如果作者更新还算及时,也可留用查看。 没有文档的项目直接放弃。 开源项目没有过度使用这一说,我到觉得现在开源项目普及力度还不够。 开源不仅表示你可以免费使用代码,还表示你可以,或者说应该贡献代码。 |
25
9hills 2016-04-07 12:45:09 +08:00
和开源闭源没关系。
面试过各种 VMware 家, EMC 家的产品用的很多,但是对原理一窍不通的系统管理员。。。 |
26
zhicheng 2016-04-07 13:33:18 +08:00
你用 Linux 会看 Linux 的代码吗?你用 GCC 会看 GCC 的代码吗?你用 MySQL 会看 MySQL 代码吗?别那么蛋疼。
|
27
Jet 2016-04-07 13:36:23 +08:00
你可能是开源软件的受害者
|
28
sampeng OP 不是说开源不好,大型解决方案是受欢迎的。
没有几家公司自己撸个 hadoop 或者 mysql 吧。不是纠结这种大拿型的解决方案。而是小一点的。。一个组件,一个页面。等等。。。 但是,仅仅只是 github 的搬运工。是不是学编程只要学会堆砌开源软件就足够了。仅此而已。 有时候,学一下语法,然后花两天时间去网上弄点开源一堆。然后效果就出来了。。然后就被绝大多数人称为大拿。。这样很容易膨胀。一膨胀就不知道自己姓什么了。。 |
29
wohenyingyu01 2016-04-07 16:17:16 +08:00
使用完了再把人家批判一番才是过分……
|
30
nicegoing 2016-04-07 16:53:21 +08:00 via Android
没有开源软件,程序员的效率不可能这么高。就拿安卓来说,不用第三方,推送自己写,通讯自己写, imageloading 自己写。别人一个月上线了,你一年都不一定磨出来。程序员拿高工资,就有开源软件的功劳。
|
31
NetCobra 2016-04-07 17:07:56 +08:00
感觉 lz 这种想法就是想要把控每一个细节,否则就不放心。
不知道 lz 对“知道开源项目是如何工作”这个问题是如何定义的?如果说是需要了解这个开源项目的工作原理、应用场景、优点、局限性,我赞同;但是如果说要“把用过的开源项目精读”,没必要也不可能。 换一个角度,我们每天都要面对显示器,有多少人对显示器是如何工作的了解得很清楚的? |
32
jamiesun 2016-04-08 01:28:17 +08:00
懒是程序员的美德
|