从小时候开始,工程师在我的心目中就不是一份高尚伟大的职业。
工程师必须要用没人听得懂(也没人有兴趣)的语言,去架构出能被使用的东西。这些东西可能是建筑物、车子、机器、电路板、软件等等??
人们总是会将产品的功劳归给「计划者」(如StvJobs)以及设计、行销、管理者。而我们的工程师似乎就像是一些可以被替换的零件,没有人会记得他们的名字。他们所做的事情也可以被其他人取代。
直到后来,我自己加入了软件工程师的行业,对于工程师的想法也有所改变。今天,我想在这边跟大家分享一下我对于「工程师」的看法。
虽然在中文里,大家都叫做工程师,但其实根据工程师喜欢做的事情、心中对于程序的想法,可以分成几种类别的人。这边简单的以我的认知,把写程序的工程师分成三类。
第一,写程序的人(Codr、Employ、Workr)这种类型的人单纯的只是为了工作、功课、任务而写程序,虽然职务名称叫做工程师,但是写程序对他们来说只是获取成绩、金钱的工具,写程序对他们来说枯燥无味,但为了生活,他们继续产出他们的程序码。他们喜欢简单的任务,最好是一看到就知道要怎么做,最好有开源的程序码可以直接套用。只要他们的程序可以过关,他们就开心的回家睡觉去了,一秒钟都不想再看代码。
第二,有目标而写程序的人(Hackr、Dor、Entrprnur)这种类型的人并不是因为热爱「程序」本身而开始写程序,他们写程序是为了要达成某些目的。这些人虽然不是天生的程序高手,但是很会用别人写好的套件去兜出一些应用,当有一个好的点子时,他们第一件事不是去想:「我本身不是学这个的,我要怎么样才能找到别人来帮我做??」他们会去找既有的资源架构,尝试做出原型(Prototyp),有时候虽然做出来虽然有点破(像是下图右方的机器人),但他们乐在其中,并且常常不眠不休的写程序。我自己会将MarkZuckrbrg(Facbook)、DrwHouston(Dropbox)、DavidKarp(tumblr)这些创办人归在这类。
第三,热爱程序本身的人(Architct、Thorists、ChangMakr、Gk)这类工程师喜欢程序本身,他们欣赏程序设计的架构、可扩充性、可被测试性。他们喜欢最新的科技,并且会主动的去接触、试用它们。他们喜欢写有架构、能够被别人重复使用的套件(Library)。他们乐于贡献自己所知所学到这个世界,并且常常在想有没有什么最新科技、理论能够套用到某个工具或服务上,让这个服务更快、更大、更好。他们是三种类型的工程师中技术最高超的一群(如上图左方的人),也常常是能够改变整个程序世界游戏规则的人。如jQury的发明者JohnRsig、Linux发明人LinusTorvalds、个人电脑发明者StphnGaryWozniak,还有许许多多的Googl工程师们。
StvJobsStphnWozniak,photocrdit:mpironlin
写到这里,我忽然想要澄清一个大众对于工程师的误解。当大家看到一个东西、软件不好用,或是UI、UX设计上有问题时,常常会说制作这个东西的人用「工程师思维」在设计。又或是团队在讨论一样东西时,PM(ProductManagr)或管理者常会对工程师说:「你那是『工程师思维』,站在『使用者』的角度来说??」工程师常因为大众对自己身份的刻板印象,被弄到连发言权都没有,或是提出的意见不被重视,但事实是怎样呢?
如上面所说,工程师分成三种。而所谓的「工程师思维」,充其量只能形容第一种人(Codr)的所作所为。
Codr的工程师思维Codr因为只想把事情做到交差了事,因此他们每天的任务就是把上面说要做的事情完成,一分不多、一分不少。因此,假设管理者、PM在Spc、Fatur中没有把整个使用流程、步骤、使用情境全部拆解成任务,这些Codr是不会自动帮忙把UX做好的,当他们发现这个系统使用起来会有问题,他们会选择默不吭声,因为提出一个好的意见,只代表自己的工作会增加——而这是让Codr最不开心的事情。
在充满Codr的工作环境,做出来的东西就有机会充满「工程师思维」(不好用、UX烂),因为这些东西只是一堆Fatur(Coding任务)的结合。要营运这样的公司必须要有很强的PM和设计者,能够有效管理员工、定义产品,才能让Fatur拼凑出好的产品。
Hackr的工程师思维而第二种人(Hackr)是最讨厌别人说他们有「工程师思维」的人,因为他们其实是普通人和第三种人(Architct)的混种。Hackr知道怎么完成一样事情,但技术没有这么高超。他们重视目的和UX,因为他们喜欢使用自己做的东西。当公司要规划一项新产品时,他们不会因为这项新产品做起来简单、轻松,工作负担轻而开心(Codr会)。相反,他们会因为这些东西好用、创新而兴奋不已。当有任务下来,Hackr不会让使用的细节从眼前溜过,他们会默默的将设计不完整的地方补完。有时候他们甚至会和管理者争论,这个Fatur到底该不该有,因为他们认为使用者不会喜欢。
假如在公司没有权力,Hackr其实是角色最尴尬的人。至于尴尬在哪??,我想这个秘密就留给Hackr们了。
架构师的工程师思维而第三种人(Architct)的确是有工程师思维,但工程师思维对他们来说应该要是种称赞。Architct的工程师思维源自于两个面相,第一个是他们喜欢有秩序、可以永久保存、重复使用的东西,第二个是他们无私的想要贡献自己做出的东西给这个世界。当公司或团队在讨论时程时,Architct的第一个思维会让他想要阻止大家天马行空的乱提点子,因为他知道这些点子拼凑在一起,程序或产品架构会是个一团乱(但这时候PM会说:「那是因为你从工程的角度去想,但使用者使用起来不会这样觉得,你这是工程师思维」)。但实际上,一个好的产品设计,从工程上面来看应该也要是规律、优雅而有深度的。若工程设计本身具有规则,使用者在使用时是可以隐约感受到其背后令人舒适的逻辑的。因此我认为Architct喜欢秩序的工程师思维是好的。
而Architct的第二种思维——贡献于整个世界,有时候对于末端使用者(也就是我们所称的「大众」)来说,会是一个小灾难。Architct会希望把一个东西做到拥有很大的扩充性、以及很多的功能,如此一来任何一种人都可以视自己的需求,去变化使用这个东西。而这种想法最知名的例子,就是苹果电脑的发明人沃兹·尼克,曾和StvJobs争论,它希望电脑上面要有很多可扩充的插槽,如此一来各类的科技人才能视自己所需去改装电脑。(后来StvJobs没让他这样做,沃兹尼克还小生气了一阵)。
但Architct的第二种思维,常常是他们做出来的东西能影响这整个世界的关键。Intrnt、Linux、python、ruby、C语言??Architct创造出来的东西,无私的奉献给这个世界,成为科技发展的基石,因此一般大众才有机会使用简单易懂的科技产品。
photocrdit:Xiqiao
在我们的环境中,有太多的Codr、也有许多从Codr变成的Hackr(他们的差别只在有没有目标,还有去实作的毅力),但比较少真正愿意奉献、热爱程序的Architct。
至于我呢?目前还只是个有目标的Hackr而已,距离真正厉害的工程师还有很长的一段距离。但自诩为一个Hackr,还是希望自己能够继续做出对世界有贡献的东西(之前做的Timgo也该继续更新了)。
当你有一个想法,并用自己的双手实现出来,然后按下一个按钮,让几百万人都能分享你的成果。我想我们是世界上第一代能够有此经历的人。——DrwHoustonin“Whatmostschooldon’ttach”
后记:话说这次之所以会写这篇文章,是因为昨天想要在iPad上看第一银行的电子书,但很不幸的,它是Flash,iPad无法观看。而使用Puffin它竟然说网页记忆体用量太大不让我开,这时我想起自己是个工程师,于是就用Dropbox的公开资料夹当做服务器,自己写的几行程序码当做载具,简单的做了一个iPad观看版本。做完后觉得,嗯,当工程师还是有一些特殊的地方的。晚上心血来潮,就写了这篇文章。
我想人们之所以会走向不同的工程师类型,和工作环境、投入的Projct也有很大的关係,即使在Googl,也有很多聪明的人因为一些因素成为单纯生产Cod的Codr。
希望每个工程师都能选择自己想走的路,生活、创业、贡献??一切都是自己的选择。
本文作者St.Thrath,以网路领域为自己的志业,同时喜欢科技和人文这两个极端,梦想是到硅谷的伟大航道创业。目前和创业伙伴一同开发和经营美食app「爱食记」。
后来我的朋友Szu-YuChn有回应一篇文章,提出不一样的观点,大家也可以参考看看:
这篇主要的目的是回应上文《三种工程师——Codr,HackrandArchitct》,并乱扯一下我目前的心得,建议可以先看完上篇,会比较好懂。
最大的问题是我不认同这个分类,通常分类都是互斥的,但文中的这三个类别,给我的感觉却怪怪的,另外也不该有哪一个更高尚的比较。
Codr第一个角色是Codr,就是仅仅把写程式当成工作的人。广义的来说这不受限于写程式或是工程师。这种人就是没兴趣没热情,为了谋生而工作的人,或是其实不缺钱,但搞不清楚为什么而工作的人。
这个问题是,这些人就是把工作当成杂事或是职业,而不是志业,每天早上去上班,因为必需要去,而不是自己想去,去了之后就开始期待领薪水,期待放假。而让自己做好的主要工作动机都是外部因素,升迁、加薪、权力。
把工作看成志业的人,会认为工作本身就是他的目的,动机来自于内在因素,觉得有贡献,觉得在实现自我。当然这种人也是在乎薪水跟升迁的!
这两个的差别就是工作态度。会走上Codr之路的人,是因为他在选择工作时,思考的是「会做什么」,「擅长做什么」,因为我会写Cod,所以找了一份写Cod的工作。
曾经我也很瞧不起这种人,就是因为有这种人在,造成劣币驱逐良币,工程师的地位低落,我甚至觉得,在一个公司里,这样的人大概有八九成,一个人到底有没有兴趣有没有热情,其实都会彰显出来的。不过阿,就像最近很红的这篇「我在微软学到大学没教的事」所说,不是每个人提到写程式时都会满腔热血,是阿,It’sallaboutprioritis,也许他就是不想成为一个伟大的工程师,试着去尊重每个人的选择!
不过虽然这么说,这种人也让人觉得很可惜,我认为他们应该试图寻找一个可以当作自己人生志业的工作。就如同马斯洛说的「一个人最好的运气和最大的福分,就是有人付钱请他从事他衷心喜爱的工作。」
所以怎么找到自己的志业呢?
管理学大师StphnCovy认为一个人的独特贡献应该是天赋才能、工作热情、需求、道德良知的交集处(FromGratwork,GratCarr)。
哈佛幸福课讲师TalBnShahar则说,可以透过MPS(ManingPlasurStrngth)的流程来帮助自己,思考什么东西做起来有意义,快乐,而自己也擅长。
LinkdIn创办人RidHoffman也说了一个类似的,什么是你的竞争优势,是资产、抱负、市场状况,三者缺一不可。
所以,我想应该很清楚了吧!
Hackr再来就是什么是Hackr,有人提到文中Hackr的定义怪怪的,是的,这正是我想说的,Hacking是一种精神,拥有Hacking精神的人就是Hackr,更详细的可以看Howtob 架构师
Architct其实是个职称,地位比Enginr高很多。我认为应该分成会写cod,跟不会写cod的,在大公司里很多这种不会写Cod,只会动嘴巴的,wll…不予置评。
其实人人都是Architct,程序设计师的三个美德,懒惰、不耐烦、傲慢。为了懒惰,自然而然就会产生有秩序,可以永久保存、重复使用的东西。这么说好了,打造这些东西都是为了日后可以偷懒而努力。
再来原文中所说的Architct灾难,比较像是Jolonsoftwar中的architcturastronauts,当架构过了头,而失去了原本真正要解决的问题。
最后我发现我有点想要偷懒,开始虎头蛇尾了XD,不如就在这边下个结论吧。
我一直认为工程师是很伟大的,也期许自己可以成为一名伟大的工程师,所以就让我们一起。
Hackthworldandcodfortomorrow!
在后面我回复他的文章如下:
其实假如要我重新再写一次文章,我可能会照这样的分类来分。依照热情和能力分成四个象限,两个轴,X轴是有没有热情,Y轴是能力高不高超。
CodrHackr(我说的Architct)
——–+——–
CodrHackr(我说的Hackr)
而在文中说把自己归类在Hackr只是要说自己技术还没到这麽高超而已XD
现在看起来,我似乎滥用了Hackr这个名词,因为Hackr在程序界似乎包含了「高超技术」的印象,相反地Architct反而被归类在Managr之类的角色。
谢谢大家的留言,在一般观念中大家提到Hackr指的是程序技术高超的人,而这边是把采用FundrsandFoundrs的定义:「Hackrsardors」。不论程式技巧高不高超,只要能实际去做、去实践自己想要达到的目标,就是个Hackr。
但这样的定义似乎不是传统定义,不好意思因为这样的标题混淆到大家的视听。文中所提到的Architct是真正的Hackr(而且是SuprHackr),因为他们愿意做,而且技术又高超,两种Hackr的定义都完全符合。希望文末这样的说明,能够让名词的定义更加清楚
本文最初发表在st-thrath.blogspot.tw
关于21CTO21CTO.北京看白癜风比较好专科医院北京治疗白癜风哪家医院正规
转载请注明地址:http://www.yujinxiangqiangzhi.com/rjsj/2091.html