当前位置: 华文问答 > 数码

作为一名程序员,最大的成就感来自哪里?

2016-06-22数码

十几年前做的游戏外挂,现在还有人在用。



我一直觉得我的技术直觉/判断力非常好,有很多有趣的创意,初看起来自己都觉得很难,但是动起手来往往真的能做到。创意被验证的那一刻是最开心的。

举一些例子。

1,d2hackmap这个外挂,原作叫d2maphack,一个老外写的。起因是有一次我给d2maphack打了一个补丁,把他惹着了,在论坛里指责我。我好心没好报也很火大,决定教训他。我做了一下技术分析,觉得能把他的外挂软件反汇编用C语言还原出来!一般来说随便还原一个软件都要面对海量的汇编代码,难度是很大的。想像一下还原notepad.exe的源代码就知道了。但是我真的做到了,由于是hack了maphack,所以我给它起名叫hackmap,哈哈哈。源代码可以在网上搜索关键字d2hackmap找到。


2,终极装备大概是所有电子游戏玩家的梦想。那时我在一个私服上玩暗黑破坏神2,有一天走在马路上,我突然想到一个点子,通过它我可以得到任意装备,想要什么就有什么。细节在这里:Hacking Diablo II之Uploading。不过这个事的副作用是我发现自己对游戏没有追求了。到后来玩暗黑已经不打游戏,尽找人聊天。前段时间玩皇室战争,我已经从技术狂堕落成RMB玩家了=_=!。


3,外挂做到后来,由于暴雪出了反外挂检测系统,所以外挂也要做相应的反检测。期间我产生的一个想法是可以把多个程序在一个进程空间跑,从而把自己隐藏起来。细节在这里:[旧文存档]Introduction to Remote Run Library


4,以前做医疗设备开发,自家设计的硬件平台(基于Intel XScale 270),软件跑在Windows CE上。有一天我觉得其实不需要定制的硬件平台也可以跑,于是用VMWare做了个模拟器,在上面跑我们的软件系统。这个模拟器大大方便了我们的内部测试、原型展示,销售们也终于可以不用带着笨重的设备到处做演示了。老板后来差点把它产品化了直接卖。部分成果在这里:如何制作支持VMWare的Windows CE BSP。

有评论者认为这个事技术难度不大,不值得说。我解释一下。从技术难度来讲确实没那么高,因为硬件平台也好,应用软件也好都是我们自己设计的,对我来说是白盒。关键在于你怎么会想到去做这个事情,因为完全没有人要求你做,也没人知道这么做是否可行,也不知道能干嘛用。我的成就感在于意识到了这个东西的价值而且自己技术上判断能做出来。成就感这个东西不光来源于技术难度,其实更来自于大家的认可和创造的价值。简单讲一下这里面创造的价值在哪里。一个是把应用软件开发和硬件开发解偶了,原先应用软件必须等板子回来后才能开发,第一块板子回来、点亮(BBU)、板级功能调试稳定是要花很多时间的,有的时候板子有bug还要重新做,周期很长。其次产品的功能演示、渠道培训、客户演示等都需要样机,非常不方便而且设备也不便宜。再次产品界面需要翻译成很多国家的语言,翻译是外包的不知道在哪个国家,也需要样机做本地化。这些场景模拟器都可以解决,节省了大量的时间和成本。


5,干过一些杂七杂八的活儿。比如有个朋友是设备代理商,他有设备坏了找我修,仔细研究了一番我觉得可以。于是自己买了同款单片机、编程器等器件,把ROM倒腾出来刷到新器件里再焊上去。更有意思的是,另外一个产品和它的硬件设计完全相同,只是多焊了两片内存。我买了两片内存焊上去,刷进另一个产品的ROM,完美变身了。


6,有一次玩一个工业设备(定制的软硬件系统),用熟了以后我觉得其实可以山寨。于是照着人家的硬件规格自己凑了一套(用PC104、SDRAM、CF卡等),把人家的软件系统扒出来装到我的山寨设备里,再写点代码添了一些胶水模块跑起来了。当然我是纯技术研究,没有拿去卖钱哈。

7,还有一个带给我很大成就感的:一个人做了整个硬件产品,成功商业化了。其中包括:沟通需求、定义产品规格、做总体方案、找人做结构设计、开模、找厂商做硬件设计和生产、自己写所有的软件和PC端配套程序、调试、写文档、测试,等等。基本上所有的设备开发环节都走了一遍。

8,在家人、朋友和邻居大爷眼里,我是个神奇的电脑老中医,俗称IT男,最大的功能是给他们修电脑。凭这个本事,我进过女生楼,获得过邻居大爷青睐给介绍妹子。。。

9,其他的有机会再写。

总结起来,我折腾这些东西,最大的成就感来自于整个过程中产生的创意、设计、实现、绞尽脑汁的解决问题,以及成功后的喜悦。

我有时想,如果当初选择做黑客,我应该可以成为很好的职业黑客。但是比起去分析别人的系统,我更享受自己创造东西带来的快感,所以我选择了做程序员。

我的本职工作是软件开发,绝大部分的时间都是在做正规的软件开发,外挂这种是业余兴趣偶尔玩玩。自我定位的话,我称自己为有黑客精神、有完美主义倾向的程序员,但我并不是技术宅也不是技术控哦,有情商的好不好!在职业生涯中,我比较自豪的是从人生第一次写产品代码开始,我一直都是职责范围内的主程序员,从构思设计到编码实现都是我主导。第一份编程工作是写一个医疗系统网关模块,把各种医疗设备集成到信息系统中。第一个版本虽然能工作但代码写的很烂(第一次写产品代码谁都好不到哪儿去)。我重写了三遍,从最开始只能接一种设备到最后可以快速集成不同厂家不同类型的设备,也因此成为公司的核心模块。第二份工作是因为对底层开发感兴趣,跑去做系统级开发,所谓的BSP(Board Support Package)开发,写过Boot Loader、OAL(OEM Adaptation Layer)、驱动程序、BSP和应用程序的接口设计等等。这份工作的成就感在于我从零BSP开发基础、没有人带的情况下一个人扛下了几乎所有BSP开发(在老美同事看来是不可思议的,他们觉得至少需要两三个人)。

在职业生涯中,我觉得最有成就感也最让我感动的是,不同的领导、同事对我的评价都非常好。这些都是原话:「你是我最希望做同事的人」,「你是我见过最好的程序员」,「你是团队里我最不希望离开的人」,「你做软件做到了一定境界」。


有人问到技术道路如何成长,我写了一篇答案在这里:

有哪些IT初学者(新人)成长为技术大牛的真实经历? - 知乎


接下来打一波小广告,我现在在做目前为止最有挑战的一件事--创业@声网Agora,欢迎技术牛人加入我们,长期有效!