为啥程序员不大乐意做二次开发的活儿

记经验 0 赞 (1) 2077字  预计6分钟 59

在软件开发行业里总会有人需要在他现有软件基础上开发更多功能,这也就是我们常说的二次开发。但是,很多的程序员其实不太乐意做二次开的活儿。这是为什么呢?徐伟轩博客就为大家总结一下。
为啥程序员不大乐意做二次开发的活儿

什么是二次开发?

百科上的定义是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。
说白了,就好比你的网站,现在有的功能还不能满足你的需求,你还想在你现有网站的基础上增加两个功能,那就属于二次开发的范畴。
也就是说,原本没有的功能、框架、结构,需要然程序员另外再做或者修改的,也就是所谓的“二次开发”。

为什么要二次开发?

其实随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司。选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省时间成本及开发成本的同时,更能带来技术上的保障。
不是常说:站在巨人的肩膀上,你将看的更远。
所以国内很多互联网公司需要招募会二次开发的人才。

为啥不乐意做二次开发?

为啥程序员不大乐意做二次开发的活儿,有钱赚不好吗?我总结为以下几点
1、需要重读代码
一个程序代码不是咱写的,那咱肯定是要理清它的业务逻辑、程序功能、数据结构等等,那看懂并且读懂代码就是第一步。
最怕是那种代码写得很混乱,程序功能BUG多的程序,那种做二次开发的话,程序员绝对会多掉几根头发的!
碰到比较烂的程序能让人发疯
配图:碰到比较烂的程序能让人发疯
2、成本不太好评估
很多人不太理解,会问,不就增加这么一个功能吗,有那么难,需要耗费多长时间,怎么还会多出费用?

二次开发的成本一般程序员其实不好一下子武断地判断出来,如果你也就第一眼看了这个程序,客户要求你增加某个功能,你总归需要先了解到程序代码再去判断。
而且时间成本、人力成本都会占用,自然也会增加二次开发的费用。【Tips:有时候,二次开发的成本甚至会和新开发一套系统接近,甭管你信不信】
*举例说明:
李某由于预算有限,从某网络公司购入一个网站系统,花费3千元,但是他想要修改网站的界面,并且增加多用户商城功能、分销等功能。程序员一评估发现,在这套网站系统基础上二次开发,其实和重新做一个网站系统费用相差不大。*
软件二次开发
配图:软件二次开发
3、不愿蹚浑水
程序员的工作本身就比较繁杂,事情一多,很多事怕忘记或者搞混。所以,他们宁可接一次开发,而不太愿意搞二次开发。
毕竟像上面一点所讲的,其实很多外行还不理解程序员,反对其猜忌。
他多出的时间,去接点其他业务做做不香吗?

当然了,程序员不大乐意做二次开发,不意味着他就不做。总归是,重赏之下必有勇夫。

为程序员正名

知乎里面有个帖子问:大多数程序员一个人连一个稍过复杂的桌面软件都做不出来吗?在普通的公司里程序员的工作是什么样子?看完帖子里的各种回答后感觉更郁闷了。
在公司中的一些程序员,可能刚开始他是从前端工程师开始,要求他独立完成一个软件的开发其实是不现实的。不过,我认识的很多人,他们工作一段时间基本会转做其他例如开发、产品经理等的工作。
而现如今,全栈工程师 icon_cool.gif 显然更吃香。毕竟全栈工程师掌握多种技能,能胜任前端与后端,能利用多种技能独立完成产品的人。就拿网站的项目来讲,公司里面肯定是希望能招募到既会前端,又会后端,还能懂一定安全攻防知识的员工。
全栈开发者本身是音译过来的,叫做Full Stack Developer,本意指的应该是“全能开发者”,通俗点说就是自己能搞定一套系统(C/S,B/S,App等)
目前所指的全栈开发者/全栈工程师,通常指的是Web开发中的前后端都会的开发者。即自己能搞定前端部分(HTML+CSS+Javascript等),又能结合后端部分(如PHP+MySQL等),同时还能自己管理好服务器(LAMP/LNMP+网站优化等)
全栈开发者是对每一层都熟悉的人。
全栈开发
配图:全栈开发
全栈的层:
1、服务器、网络和服务器环境
知道哪里可能崩了和为什么会崩,没有什么是理所当然的。
适当的使用文件系统,云存储、网络资源,必须具备数据冗余和可用性的概念。
知道应用的伸缩性对硬件的需求。
什么是多线程和竞争条件?想想看,在开发机上你可能看不到这些,但是现实环境中它们就是会发生。
全栈coder还要能与运维并肩作战。提供有价值的错误信息和日志。确保它们是可靠的,因为运维会在你之前看到这些东西。
2、数据建模
如果数据模型有缺陷,业务逻辑和上层逻辑就要用奇怪的代码(很丑)来弥补数据模型的缺陷。
全栈开发者要能够建立合理的、标准的关系模型,包括外键、索引、视图、查找表等。
全栈开发者要熟悉非关系型数据存储(应该指的不止是NoSQL),并且知道它们相对关系型存储优势所在。
3、业务逻辑
应用提供的核心价值。
可靠的面向对象技能。
可能会用到的框架。
4、API层、Action 层、MVC
理解外部对数据模型和业务逻辑的操作。
该层会有很多框架应用。
全栈开发者要具备编写清晰、一致和易用的接口。过高的复杂度让人厌恶。
5、UI
全栈coder:a)知道如何创建可读的页面布局;b)或者明白自己需要帮助设计师。A或B,关键是要能有好的视觉设计。
掌握HTML5和CSS。
JS正在逐步成为语言新锐,Javascript的世界里已经完成了很多激动人心的工作(node, backbone, knockout...)。
6、用户体验
全栈coder要知道用户需要的就是It works!
一个好的系统不会废了用户的手腕和眼睛。一个全栈coder会发现和审视需要8次点击、3步操作的流程,并最终把它一键搞定。
提供有价值的错误信息。如果崩溃了,就要向用户致歉。有时候程序员会写出让用户自我感觉很二的错误信息。
7、知道用户和业务到底要什么
现在我们模糊了架构的界限,但却可能远离了实际需求。
全栈coder要明确知道用户使用软件时的场景,而且要领会业务。
【总结】
这个社会现状就是活到老学到老,而且艺多不压身。今天的铁饭碗明天说不定一文不值,在能看到未来的行业里,做专;在自己不清楚未来如何时,做多。多一些的学习,多更多的专业。

如果您喜欢这篇文章,欢迎在下方留言评论哦~
  • 没有相关文章
  • 发表您的看法
    选择表情