我是一名程序开发人员,和大家一样,我2004年7月份参加工作,目前已经快10年了。
我于2010年12月中旬离开中国,去国外发展自己的职业生涯。 我目前在Facebook公司就职。
现今,我居在英格兰伦敦,但我平时也很喜欢旅行,到处走。因为:生活并不只是单纯地为了工作,一个人不能整天超负荷地工作、不要成为代码的机器,人要放下自己的心扉,走出来。
我的个人专业技能:
1)熟悉C/C++语言。熟悉STL、了解Boost库。
2)熟悉Visual C++ 熟悉MFC机制。
3)熟悉 Microsoft COM原理。
4)熟悉TCP/IP网络协议。
<1>熟悉:TCP协议、IP协议、UDP协议、ICMP协议、ARP协议。能够利用这些协议实现如:端口扫描、报文的传送、网络数据抓包等等的工作。
<2>熟悉网络编程的异步通信模型。如:WSAAsyncSelect、WSAEventSelect、OVERLAPPED、完成端口IOCP模型。
5)熟悉网络Socket开发、网络服务器端程序开发、高并发、均衡负载。
6)熟悉Unix/Linux操作系统上的常用命令。C/C++程序开发、GDB、GCC工具的使用。
7)熟悉Intel 80X86 CPU系列的汇编语言。理解软件调试和反汇编的重要性。
8)熟悉Windows PE文件结构。
9)熟悉软件的加壳保护以及对软件进行脱壳。
10)熟悉Windows系统下的调试工具 WinDbg、OllyDbg、IDA Pro的使用。
11)熟悉Windows下的驱动程序设计。
<1>熟悉Windows内核下的内核同步对象、IRP、自旋锁、完成例程、常用的内核函数。
<2>熟悉 Windows内核钩子、Hook SSDT、Inline Hook的用法。
12)熟悉NDIS编程。
<1>熟悉NDIS协议驱动和NDIS中间层驱动的编程设计。
<2>明白ProtocolXxx函数和MiniportXxx函数的使用。
<3>能够使用NDIS中间层驱动程序的规范来设计:TCP/IP网络数据包的过滤、Windows防火墙软件。
<4>我对TDI编程不是很熟,平时工作中没有使用。
13)熟悉Windows文件系统。
<1>理解文件系统的开发范例sFilter工程里面代码的含义。
<2>明白卷设备的管理、以及VPB的应用场合。
<3>明白卷的挂载、绑定。
<4>明白文件系统的快速IO分发函数(Fast I/O Dispatch)。
14)熟悉Windows磁盘过滤驱动的开发。能够使用DiskPerf工程开来发磁盘过滤驱动程序。
其它方面
(1)掌握Objective-C语言、XCode、部分Iphone SDK。
(2)我对IOS内核有一定的心得体会。IOS内核是不开源的,我只是平时去分析研究它。由于苹果公司对软件审查的严格规范制度,目前我还没有把IOS内核的程序用于商业产品化。
(3)Iphone手机程序的开发经验,我才开始学习、刚开始起步积累IOS的开发经验。
我的技术缺陷
(1)软件的设计模式、架构、需求分析、书写实施方案,这方面技能,我很薄弱。我平时没有兴趣、也不想耗费时间来关注和研究这一块知识。
(2)数据库开发的技术不熟悉不会。没有去关注。从我个人的技术路线来看,我觉得这方面知识不重要。所以没有必要学习。
我先和大家谈一谈薪水这个话题。
以前我在中国的时候:
1)从薪水上来说:
在中国大陆地区,在上海、北京、杭州、广州、深圳这样的一线城市里:
(1)很多从事Windows或Linux应用层软件开发岗位的人,月薪范围一般在:8000元到18000元之间。
要求薪水的理由:
做应用层的软件开发,技术含量不是很大,主要是以业务逻辑开发为主、软件模块之间的协调配合。
做软件应用层开发的人员很多,遍地都是。占据软件行业的90%以上。在应聘者的学历、专业技能同等的条件下, 企业选择低薪水的人或者压低求职者的薪水来节省公司的人力成本开支,企业招聘相关的人员很容易,也不怕招聘不到人。
(2)有很多从事Windows内核程序开发、Linux内核程序开发、反汇编分析、软件破解、系统漏洞挖掘、计算机系统的攻与防,这样工作岗位的人,月薪范围一般在:14000元
到30000元之间。
要求薪水的理由:
底层开发的人比较少。很多人感觉难度太大而做不来这种岗位、有些人学习这方面的知识但坚持不住放弃了。
底层开发可以学到有用的知识,掌控最关键的部分。因为看待问题的本质、专业技术的难度、做事的耐心程度、都比应用层增大了很多。
企业招聘一个内核开发人员或者反汇编破解人员这样的工作岗位,招聘等待的时间周期比较长。
这是我当时的选择软件公司的标准。我在上面罗列出来的薪水,也是这个行业的标准。除了薪水,我还观察这个企业的未来发展。
但是,有什么用呢?
在中国的时候,我换过好几份工作,从做金融行业的软件开发开始起步,到了后来从事Windows内核程序开发。
我曾经在这些公司工作:
杭州恒生电子股份有限公司工作。 我从事金融行业的软件开发。
福建网龙公司工作。 我开始从事反汇编分析、Windows内核反面的工作。
淘宝(中国)软件有限公司工作。我从事反汇编分析、Windows内核反面的工作。
我和朋友在英格兰创业,开了一个小型的软件工作室,接软件项目。 我的技术面比较杂了,能做的都做。
在Facebook公司工作。做计算机安全。
我发现很多程序员的职业生涯都在36岁以下。年龄大了,那么企业在招聘的时候就不考虑你了。因为企业怕你的薪水要的很高、企业怕管不住你、有的企业甚至认为你的学习能力比不过20多岁的年青人,而且你有家庭了,有老婆、有孩子,企业怕你在公司奉献的时间不多,多余的时间都在家庭上了。
在中国,很多人的这些观点有失误。
2)程序员的职业生涯到底可以坚持多久
其实,慢中出细活,一个好的软件,一个好的产品,并不是短短几个月就出来的。并不是以圈钱为目的,并不是以这样的方式来占领市场份额。
在欧洲的这3年里,我看见了很多的技术牛人,有的人还不到18岁,而有的人都已经过了40岁。大家都还在写代码,学技术。这主要看你对知识的兴趣以及热爱程度了。
我个人认为,很多事情并不是像有的人说的那样:35岁之前,如果没有转型,没有做管理、没有做项目经理、没有做公司的管理层,那么这个人就是一个失败的程序员。 这些话,我个人认为是不对的,或许您认为是对的。
我总结了自己对技术的道路:
技术,来自于个人的执著;
技术,来自于灵感;
技术,要有一个良好的氛围来称拖;
技术,需要耐的住寂寞;
技术,不限于个人的年龄;
技术,不限于个人的学历教育;
我希望很多有技术天赋的人,不要被现状给打垮,要坚持自己的信念。即使到了最后,你也不要有遗憾。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!