只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  单纯把软件开发当作工作和真正喜欢做软件开发的人的区别在哪?


单纯把软件开发当作工作和真正喜欢做软件开发的人的区别在哪?

发布时间:2019-05-19 06:24:14  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
雇佣兵和义勇军
单纯把软件开发当作工作和真正喜欢做软件开发的人的区别在哪?雇佣兵和义勇军工作外时间在干嘛是很明显的区别吧生存和梦想!当一份爱好成为职业的时候,常常就不是爱好了。
所以,“真正喜欢做软件开发的人”在自由地开发自己的软件的时候,他是一个“真正喜欢做软件开发的人”。当他进入了公司,被迫接受别人的设计,应付频繁的需求变更,他就变成了一个“单纯把软件开发当作工作的人”。
如果“真正喜欢做软件开发的人”进入公司后,仍然是维持对软件开发的热情。那么恭喜你,你找到真爱了。我猜题主想问的是:怎样区分代码工人和软件开发爱好者?

软件工人往往只关注工作中用的到的技术,对其他领域的技术知之甚少。比如一个后端工程师如果只了解PHP,不知道任何Python,Ruby,NodeJS的开发框架,前端javascript也没有太多兴趣,基本可以定义为一个代码工人。爱好者往往会涉猎很多技术(很多是”全栈工程师“),虽然不可能都做到精通,但是兴趣会驱使他学习进步,并不断了解新的东西。Paul Graham有一篇文章说,企业应该招聘python程序员,因为在python很小众的那几年,python工程师还没有市场需求,懂得python的人一定是爱好软件开发的,这是一个很好的heuristic。

爱好者往往有自己的实验项目(pet project)。他们利用业余时间开发维护这些小项目,在Github上面很活跃,愿意和人分享自己的代码,并乐此不疲。代码工人很可能不知道Github是什么。

爱好者大部分都是社区动物:在Stack Overflow上面回答问题,到Hacker News上看新闻, 或者看TechCrunch报道的新项目。他们很可能不知道房价是怎样的走势,或者王菲为什么离婚,但是往往对最新的技术动向了如指掌。

表面上,代码工人和爱好者都一样,自称为码农、程序猿。但是代码工人真心对自己的收入和地位感到不满,而爱好者们是自嘲而已,其实心里充满了优越感。

-----------------------------------------------
欢迎程序员关注我的微信公众账号:codergroup
针对程序员群体,每周推送一次,都是你最关心的业界资讯、技术动向,还有那些只有我们才懂的梗~。组织在呼唤你,还不加入?

http://weixin.qq.com/r/njq-p8vEHZZirY-E92_M (二维码自动识别)

特征1:一遍遍的修改代码,每看到些许进步就很兴奋,即便代码本身可能很低级。
特征2:面对新问题时下意识的希望通过开发软件来解决。
特征3:知道不服高人有罪。我自己是单纯把软件开发当工作的人。我在写自己的项目、和朋友合作写项目、比赛、还有验证一些想法去编程感觉很开心,一想到工作时候要写的代码就一阵头疼。。。工作时候作为被公司雇佣的工程师,每一行代码首先是要为项目的赚钱程度、适用性、安全性、用户的舒爽度满意度、公司自己的维护难度负责,不能任性,所以实际上并不是很高兴。。。不过我是责任感强的类型所以再不喜欢也要玩命弄妥,不能丢了工程师的脸。。。

还记得以前第一次实习,在某著名公司,被允许commit代码都是差不多1个多月之后的事情了。。结果我就改个函数就随便哗哗哗commit了好多次(被git惯坏了),然后被mentor臭骂了一下午。。。Uncle Bob在敏捷软件开发的序中说过这么一段话,
   Next to my family, software is my passion. It is a medium in which I try to create beauty. The beauty of software is in it's function, in it's internal structure, and in the way in which it is created by a team. To a user, a program with just the right features presented through an intuitive and simple interface, is beautiful. To a software designer, an internal structure that is partitioned in a simple and intuitive manner, and that minimizes internal coupling, is beautiful. To developers and managers, a motivated team of developers making significant progress every week, and producing defect-free code, is beautiful. There is beauty on all these levels, and they are all part of the topic of this book.
包括黑客和画家都非常形象的表达了2者的区分,可以去看看,就不引用了,说到底还是passion问题。首先说明个人不是学软件的,只是个小小的射击师。
我是分割线
————————————————————————————
虽然不能从软件方面来说楼主这个问题,在下只能从设计方面来说一下在自己的看法。
自己本身是从下学习美术。想想小时候全村甚至全校就自己一个学画画的(那个时候根本不知道什么叫美术)。没有人教,都是自己看着课本上的小人照着画。大一点的时候跟着人学过一点年画,泥塑什么的东西,总之很杂乱。
再后来考上了大学,聊天的时候都会谈到自己为什么会学美术,报考设计专业;答案几乎完全一直,分数线低,容易考。
然后毕业都改干什么干什么了真正做设计的寥寥无几。我就属于没人给钱赋闲在家也还是以堆代码为乐的类型喜欢开发,但是只在需要的时候会去翻新的知识,不会平时就主动去挖新东西,比如python不到上课要用我是不会去自学的,没有为什么懒.而且不少什么都说的头头是道的实际也就是个嘴炮党,与其费尽去自学一个东西可能还学不好,不如真要用的时候去啃下来,毕竟有需求才有动力.
这也许就是为什么我现在不搞软件工程搞机器人了...
实在比不过那些嘴炮高手...我是路人小白,接触的代码工人不多,但是爱好者们真的是可爱爆了~来给大家还原各种爱好者们的日常(可能会说一些专业的东西日后满满补全解释,我也是从小白被慢慢的拖进这个未知的世界^^)

代码工人:
真是千篇一律的工作啊,整天对着电脑眼睛酸脖子酸。。。
程序不通过就要夜夜加班啊,待遇还好低。。。
关键这鬼环境连个妹子都撩不上!

爱好者们:
对了,上次的活动是装程序festival,这次是geeks聚会,我们下次举办个debug party吧!

太棒了这里有电源!

啥你竟然没带电脑?= =

看电影也把电脑带着吧,无聊怎么办。吃饭也把电脑带着吧,不然没上菜干些啥。

我艹!你用什么mac?!你家竟然还用Windows!
Linux最好了最棒了,(blablablabla然后掏出好多USB)你看,好多我都有32bits和64bits两个版本,怎么样让我还你电脑一个自由吧,绝对不会乱动其他的

你想放音乐?什么你在手机上听歌?好吧,还挺简单,有两种方法:
1.下载到电脑上,传到大家共用的stockage里,然后用terminal终端指挥A和B音响播放就好啦,音乐大家可以分享blablabla
2.或者你可以在手机上连接一个服务器终端直接操控音响,不过有些地方没有现成的软件要立即编一个。没关系很简单的在手机上也可以编blablabla

啥?这么简单都不会啊!= =
(就是不说把音响线连上手机就行了。。)

圣诞节要装饰一下吧。
好啊好啊太棒了!
那我们买点彩灯吧。
我艹好爽!这样就可以编个程序设计图案控制哪个亮哪个闪哪个间歇性抽风了!

啊好无聊= =........
我这有几十块chips。
啥!来来来(?▽?)

你还没有irc?快快下载IRC!!这样找你更方便了。什么whatsapp,fb,我这都和电脑连的你发我手机上我就电脑回你吧。你手机打字真好慢==你是原始人吗

ThinkPad又出新款了!

Bi———你闪开闪开!快过去!你压着我包了!朝那边去点!~~呼还好这块是满电

把桌面换成gif吧。不错不错好主意!!!ヽ(●′?`●)?

目的:连接A和B
理论:运用某种介质连接A和B
实际做法:把A连到C上,C带动D运转,D与B捆绑,CD通过E指挥,E分享与FGH用户,I负责管理优先级,J拥有总指挥。。。。

某某某你认识不?
好像有影响不记得了。
就他呢,就是那个用VAIO的。
懂了懂了。
那某某你知道谁不?
不知道。
就那个只带主机那个。
哦哦哦。

什么是磨砂键盘?基本上都被磨成反光的

18h:好饿
19h:真特么饿
20h:快饿死了好吗
21h:没劲打字了艹!
21h01:嗯~这家不错啊

啪。啊啊啊啊啊啊啊啊世界末日啊啊啊啊啊啊啊啊我要死了啊啊啊啊啊啊我靠!!!!
啊啊啊啊啊啊啊啊啊啊啊啊啊!!
(水杯倒了)


继续更。。。。

当作工作的人:交差就行;真正喜欢的人:我还可以做的更完美一点

用心“雕刻”每一个软件作品,一位华为软件大神的感悟

“世界没有BUG,问题在于自己。”
  已经忘记在哪本书上看到这句富有哲学意味的话,帮助我加深了对做软件的认识。
  入职后我被安排在ONT(光网络终端)维护组做需求开发,当时导师安排我做一个控制RF(射频)模块的命令行,其实就是在现有的命令行框架上增加新的命令,通过底层驱动来控制射频模块。这对有数年开发经历的我来说并不难,我正好也借此熟悉下代码结构。很快,我就拿着写好的代码进行调试,结果令人纠结,射频模块始终没有反应。我调试了整个控制流程,没有问题;又把相关的芯片资料研究了几遍,编码设计没问题;硬件检测也没问题。
  咦,是CPU的输出有问题?或者是芯片资料写错了?还是其他什么原因?我心里有种种疑惑,但找不到原因,只好求助FAE(芯片技术支持)。谁知我一问,FAE马上 “反弹”回来,他认为这个问题比较低级,一定是我没按照手册进行配置。
  “怎么会呢?手册我都研究了不下十几遍,没准是你们芯片资料写错了,或者芯片坏了?” 我当时对自己的认识很有把握,直接“怼”了回去。
  也许是我的执拗让他有些意外,他和我开始一项项认真比对寄存器设置,结果发现问题还真不在我这儿。“那我使用芯片的demo板测试一下吧。”FAE也拿不准了,后来他在demo板上验证发现,此射频模块控制确实有问题,找芯片研发人确认,果然是芯片逻辑电路存在问题。为此,我使用规避方案解决了该问题,而我也因为发现了一个芯片逻辑bug,获得了来公司的第一个及时激励。
  虽然这个问题很简单,但也说明这个世界上没有真正的错误,只要自己去发现,就一定可以解决。
  通过软件发现硬件bug,这件事使我认识到,做软件有时是需要“执拗”的,因为软件世界总会存在bug,它是人做的,就会受到各种因素影响,会考虑不周,会犯错,所以加强内功,做足功课,遇到问题大胆假设,小心求证,最终才可能减少bug或者到达“没有bug”。

在效率提升中谋发展
  做接入终端产品,虽然我们在全球市场占有率早就第一了,但居安思危,如何可持续发展,提升自身竞争力,开拓更为广阔的市场?
  2017年,部门组织结构调整,将不同部门的3个接入终端产品合并成固定终端产品部。3个产品的代码独立,开发人员也是独立的,各产品之间存在很多重复功能,整体开发效率可想而知。代码融合归一是大势所趋,但工作量大,且各产品迭代开发任务紧张,如果整合架构,质量如何保障,还不能影响正常的迭代交付,这让我们不敢轻易动手整改架构。但时间拖得越晚,人力和效率损失就越大。
  “这真是一个艰难的决策”,领导把这个艰巨的任务交给我来整体负责。“任务很有挑战性,迟早要做,咱就来一次彻底的吧!”由我带队的MDE(模块设计师)迷你战队承担了这个优化项目的开发。经过了多次激烈的讨论,画了无数草图,最终我们一鼓作气,将阶段性方案设计框图做出来了。我们满心期待一件伟大的“艺术品”即将诞生,但心中的“得意”没多久就被一盆冷水浇灭了。
  组织大家评审时,各种声音冒了出来。A方案认为,组件的范围还是应该大一些,从上往下一刀切;B方案认为,组件只负责业务层,底层还是应该统一。大家都有道理,各执一词,那到底哪种方案最好?与其争论不休,不如打开天窗,站在巨人肩膀上借力,最终我们参考了业界终端的主流架构,选择了B方案。但在讨论底层框架时,我们又一次在是否封装HAL(硬件适配层)上出现了分歧。如果增加HAL层,可以简化业务组件的调用,封装硬件差异,但需要把所有接口重新封装一遍,会加大系统调用负担。为了让产品更有效支撑多款硬件型态,我们最后采用了独立的HAL层。方案确定后,大家一起对代码进行大刀阔斧的优化,数个月前我满心期待的“艺术品”,终于在大家的手中被不断地打磨,渐渐将她的精美呈现出来,最终成功实现了一条主干支持3个产品族300+款盒子的交付,等效人力减少35%,支撑开发管道增长30%,TTM(Time to Market)缩短30%。
  今年,我们持续提升产品生产效率,我组织MDE团队开发了独立装备版本,将产线终端启动时间由平均45秒缩短至20秒。在满足产线硬件测试场景下,进一步解耦和拆分组件,在主干代码基础上,做到一个装备版本支撑几乎所有硬件主板测试,按照年发货千万级别计算,生产效率得到了极大提升。
  效率是竞争力的源泉,通过架构的优化、产线效率提升、运维效率提升,我们的竞争力在不断加强。下一步,我们将持续挖掘软件编程效率,我准备将常用算法和通用编程流程标准化和模板化,开发时可直接使用,让编程有更多套路,使复杂问题简单化。另外,还要引入一些新的工程工具方法,在架构守护、代码开发、编译上进一步优化,提高调试效率。
  接入网产品市场很广阔,竞争也越来越激烈,需要我们通过自己的努力,不断提升接入产品的广度、宽度、竞争力,智慧家庭、智能宽带方向机会和前景十分巨大,我们需要坚持不懈,一步一个脚印,才会越走越精彩。

软件开发就像建房子,一定要有追求
  2018年初,固定终端发展品质宽带项目,需要在终端上做数据采集上报,我承担了采集中心模块的设计和开发。之前我们已经实现了在演示版本上基于二进制文件方式的上报方式,虽然效率较低、扩展性不好,改改还是能用,但考虑到业务场景,采集系统的秒级采集数据多达几十项,而且会持续增长,采集效率非常关键,如果还是采用现有的演示版本方案,将会给以后扩展带来极大束缚。于是,我重新设计了采集方案,采用了在互联网公司最流行的GPB序列化编码技术,优点是编码开销小,能有效减少传输数据,并且支持兼容日后采集参数随时扩展,极大地提升了可维护性。
  我找来SE、领域专家评审,听取意见,大家都认为“数据采集是个系统工程,效率非常重要,架构一定要设计好,要做就要做到最好。”在进一步和业务模块讨论数据采集细节时,我发现还可以进一步优化,整体效率还可以提升。之后,我快速完成了新的采集框架的开发,保证了交付和现网运行的高质量。
  由于设计不够合理导致系统的累赘和负担,我们已经遇到过太多次,既然能提前预见,那就一定要及时采用更好的设计或重构,防患于未然。
  软件开发就像建房子,如果需求简单,只是盖平房,无论是使用砖瓦混凝土还是框架结构,都能满足质量要求。但如果需要盖高楼,又要牢固,那就不能用一层一层堆砌的砖混方式了,要使用坚固的钢筋混凝土框架。做软件也是如此,牢固和可扩展更为重要,需要采用最合适的技术框架,一定要有自己的技术追求。
  说到追求,我的体会是,首先要追求代码的结构,无论是大架构还是小模块、函数,都要有一个追求完美的心态,先把结构想清楚再动手编码,就是说要有良好的设计,不能一上来就直接开干,最后弄得一团糟,也给后续维护带来麻烦。其次,追求代码的质量。代码要写得工整、美观,短小精悍,细节好,符合smart原则,看上去赏心悦目,越简单越明了。软件一定不是追求复杂,把复杂的东西简单化,就是完美的追求。第三,追求也体现在坚持上。做软件时间长了,比较枯燥,但新技术会层出不穷,需要及时学习、充电,跟上时代和前沿技术的步伐,将新的软件思路、方法、技术应用到现有产品、代码结构上,与时俱进。

  梦想不在于伟大,在于坚持。一旦你认准了方向,就要坚持到底。这些年,我也一直努力做一个“坚持”的程序员,在代码一线持续耕耘,用心去雕琢一件件软件“作品 ”,大至宏观的主题,小至微观的细节,都需要一丝不苟,精雕细刻,才能最终成就完美的作品。


《华为人》版权所有,请勿转载

更多精彩内容可以关注 华为云技术宅基地

责任编辑:
热门阅读排行
© 16货源网 1064879863