十八年程序开发经历小结

  本来题目想写为“十八年开发经历总结”,但是一想我的开发生涯还没结束,怎么就总结了呢。再说个人的一些积累和看法也不一定正确,所以还是改为小结比较妥当,言下之意自己还需要继续积累进步。本文主要谈几点个人的体会,这些内容有一部分可能只是我自己遇到的问题,相信还有一些其他程序员也曾遇到或者面对过。之前看到这些问题也思考过,三言两语回复过,现在以小结的方式写出来,算是对自己十八年经历的一个回顾。

  一.如何开始写程序的

  第一次接触电脑当然是在学校里,可以说什么都没学到,也什么都没学会,相反只是增加了对电脑的恐惧。第一次真正意义上让我开始学习电脑是在1992年,我所在的部门负责销售电脑。由于那时PC(当时叫家用电脑)的操作系统是DOS的,所以为了使用电脑必须学习一下基本的操作命令。我的第一次学会使用电脑就在那个时候,这为后来学习编程打下来了基础,因为当时不会操作电脑是不可能学习编程的。

  1994年7月开始在公司的人事部工作了。当时人事部有一个386的台式机,那个时候386算是不错了。机器里装了WPS和Foxbase,这个可以说是标配。我的第一门编程语言就是这个Foxbase。应该说这个东西还是很容易上手的,再则当时领导不安排什么具体的工作,所以有了大把的时间学习,结果很快就掌握了。在完全赶走对电脑恐惧的同时,对编码产生了浓厚的兴趣。当时我完全是自学的,3个月后已具备开发一个小型管理系统的能力了。然后是学习C语言,我还特意买了一本书,书名是“C语言编程300例”。编译器是Turbo C 2.0。应该说C比Foxbase要难一些,但是我比较幸运,还算是学会了。作为一个成果是用C语言写了一些小程序,操作Foxbase的数据库文件,实现Foxbase中的部分命令的功能。

  这些经历让我意识到自己的特长在软件开发方面,于是开始有萌发转型为职业程序员的念头了。

  二.职业程序员转型之路

  发现自己的特长是一件好事,因为可以定位自己的职业方向和规划,但是具体的操作却不是那么简单的,我做了一些思考和评估。其中涉及两个问题:第一,转型是否值得?第二,做职业程序员我的能力是否真的足够。

  对于第一个问题,我老爸的意见是不太支持我转的。应该说当时的人都比较相信国营单位的所谓铁饭碗,安安逸逸过太平日子,少折腾。而且当时程序员是吃青春的观念非常浓郁,有的公司甚至以本公司程序员年轻作为炫耀的资本。所以丢掉手上的铁饭碗去干一个相对风险明显要高的职业,确实是一个很难下的决定。所以我面对这个问题是犹豫不决的。对于第二个问题,从我在本单位的表现来看,写程序是我的特长。但是与所谓的以写程序为职业的那些人来说,我是否有优势就不得而知了。从各种关系得到的反馈是很不乐观的。主要是两个原因:1.我的专业不是计算机,2.没有实际开发经验。

  基于上述的情况,我做了一些准备工作,首先是我给自己出了一道题目,那就是开发一个病毒程序。如果我可以独立开发出一个符合当时公安部规定的病毒程序概念的程序,那么我就下决定转。选这个题目是就很有讲究的。首先这个方向我很感兴趣,其次这个问题足够的难。但是这个题目又不是难的完全脱离实际。因为我已经学了很长一段时间的汇编,平时对病毒资料注意搜集,所以对实现病毒程序的每一个技术细节我是清楚的,只是没有实际写出代码而已。在此后的4个月的时间里,反反复复经历了好几次噩梦一般的起伏,最终还是成功实现了。整个病毒代码大概1.4K,应该不算小了。那个病毒程序发作的症状是让计算机的蜂鸣器发一次声,感染的是当时一个非常著名的工具PC Tools。当运行PC Tools时,听到的那Beep声,可能是我生命中听到的最美丽的单一的声音了。

  这个病毒的成功研发完成,让真正看到了自己的专长,于是下决心转行。针对学历和经验的问题,我当时是计划用职称来弥补。所以报名去考了程序员资格与水平考试,这个考试在2000年改了,现在已经不叫这个名称了。那是1996年的事情,结果第一次考试没有通过,那是一个非常大的打击。考试的经历让我意识到自己缺了一门课程,就是数据结构,从这件事情我发现有专业系统学习的和没有专业系统学习的差距是明显的。所以一方面自学数据结构,另一方面参加了一个专升本的成人高考,专业就是计算机。此后的几年基本上就是在积累了,一方面程序还在自己找课题写,另一方面在学习计算机本科段的课程。三年以后我以本科学历,高程证书,在2000年7月开始北漂,寻找我的第一份程序员工作,那年我已经30岁了。

  希望我的转型之路可以給有同样困惑的朋友一点借鉴。基本上我转型的过程还是比较慎重的,属于稳扎稳打。其实这个过程还有很多的细节是挺考验人的,限于篇幅就不写出来了。以后有机会写总结的时候再来写吧。

  三.第一份程序员工作

  2000年7月到了北京,然后在比较困难的情况下用互联网应聘了一个公司。我非常幸运,由于该公司正好有人离职,急着需要人来补上,所以我得到了那个职位。这个职位的考验在于需要维护一个串口通信程序,这类程序我从来没有接触过,并且所有的资料都是英文的,对我来说这个挑战不小。征服这个苦难的方法是两个:1.硬着头皮读代码,读懂它;2.硬着头皮读英文文档,读懂它。因为既然出来了,那就没有退路了,只有拼了。读代码的经历让我学到很多东西,基本上以后这类通信程序我可以写的比较到位了。所以这里也建议各位同行,付出一点努力学点东西总是有益处的。

  适应了这个职位后基本上就顺手了,而且还主动配合部门经理帮助其他的同事完成其他项目。此后,我就和相当一部分的程序员那样,不断的在跳槽,在同一个公司都没有能签到第二份合同。我就像一个沙粒一样在茫茫的世界中飘荡。

  四.关于跳槽

  在北京打工的几年发现,要想在一个公司干长是比较困难的。即便是自己主观上有这样的想法,但是实际发生的事情却总会导致跳槽的结果。可能雇主和雇员之间的雇佣关系比较松散,同时雇员有较大的择业自由也是一个原因吧。

  首先想说的是,不要只是为了工资跳槽。还有他若干因素的重要性并不比工资低。比如:

  1.工作是否稳定

  对于大部分人来说,能力是差不多的,稳定的工作可以避免频繁的跳槽,而导致去和比自己强的人竞争职位。我个人的观点是,今后在中国会出现越来越多的所谓大龄程序员。其原因是70后和80后这一辈的程序员的年龄开始逼近所谓的大龄了。在上世纪90年代非常流行的观点是,程序员这个职业是吃青春饭的。这里面有一个误区,那就是当时从事这个职业的确实都是年轻人,因为这个行业刚开始兴起,没有大量的老程序员。就业市场缺乏比较和选择,所以事实上造成了这个情况。但是当市场出现大量的高龄程序员时,用人单位就会比较选择了。以近几年看到的情况来说,40岁的程序员找工作也有很快的例子。所以,一个稳定的工作越来越会成为一个实际的目标。

  其次,我个人的理解是,所谓打工成功,不是在于你的工资有多高,而是在于你在一个公司能干多久。因为绝大部分的软件公司都是合资,独资或者民营的,随着工作时间的增加,雇员和公司以及雇主会有越来深的情感,这在民营企业中尤为重要。这种情感的积累是个人在公司得到好发展和高工资的最好的基础。所以如果能在一个公司干长的话,就尽量不要跳槽。

  2.公司领导对自己是否赏识和器重

  一个有缘分的或者好的上司是一笔财富,如果自己能遇到,那就请珍惜。

  3.从事的具体工作内容自己是否喜欢

  开发工作包含的具体内容是非常多的,在一个职位上是否能够得到自己喜欢的工作内容,不是一件特别容易的事情。比如有的开发者,实际从事的是修改别人代码的工作,这种读别人的代码再修改的工作,相信很多人都是不愿意干的。如果公司提供的工作,允许你按照自己想法设计并写代码,这样的工作体验就大不一样了。所以如果你当前的工作内容正是自己的喜欢的,那么就不要轻易跳槽了。

  4.与同事的关系

  与同事的关系在很大程度上决定了工作环境的好坏。如果自己觉得和同事的关系不错,合得来,相处的也很愉快,那么跳槽的时候就考虑一下,在新公司是否也能得到。我遇到的真实案例,就有人因为同事关系融洽,而不愿以跳槽的。另外,我也相信,一个公司的员工之间的关系都很融洽,那么这个公司也应该是不会太差的。

  5.其他

  比如跳槽的机会成本,上班的距离等等。

  五.创业

  一直以来,看到不少打算或者已经创业,这里谈谈我的看法。我觉得创业不是一件今天想干明天就能行动的事情。创业需要等待机会,你需要一直准备着,等到机会来的时候就可以了。不要等到自己感觉打工不行了再开始创业,这个基本上是晚了,或者成功的可能性也不高了。就我自己来说,我真正开始创业是2009年开始的。而产品的开发从2006年就开始了,之后一直断断续续的在持续着。这期间解决了诸如核心技术问题,产品的定位,发展方向,市场调研等问题。同时,公司的注册,资金来源,办公地点,设备配置,人员招募,公司管理事务等等,这些问题也是在这一期间逐步解决的。于是在2009年回到北京,全职开发产品,正式开始创业。所以我的体会是,以非常淡定的心态,长期积累和准备是可以开始创业的基础。切不可认为自己简单搞一个东西卖钱,就可以创业了,这是不切实际的。当今社会总体上是公平的,没有什么核心竞争力或者核心技术就想赚钱基本上是不现实的。

  六.学习

  记得我还没有入行的时候,在电视中就听到谭浩强老先生说过,计算机这行发展快,需要不断的学习。如果说现在要选最重要的一句话的话,那么谭浩强老先生说的这句话对我来说,至少可以排在前三名。对于程序员来说学习是终身的事情,当然这个学习是广义的。

  很多人的看法是,随着年龄的增长,个人的学习能力在退步。人在80岁时大脑只相当于20岁时的一半大小,所以这个说法当然不错。当初我也是这么想的,所以一度花力气准备考系统分析员资格,打算专职做设计,不用写代码了。但是随着自己年龄的增加,我发现对于还在职场的大龄或者高龄程序员来说却不是这样的,至少对我来说是如此。这里面一个关键问题是,大龄或者高龄程序员的经验发挥了极为重要的作用。对于一个学生往往是空白的被动接受知识,但是对于一个大龄或者高龄程序员来说,可以带着经验来学习。所以学习的速度不但没有减缓,反而是加速的,学习知识的速度会越来越快。在知识的掌握和在编码中的应用程度这两点上,有经验的程序员的优势更为突出。这是年轻人无法比拟的。

  所以我觉得不要对新的技术和知识有抵触或者畏惧的心理,尝试去接触,了解并使用其实不是很难。技术虽然发展很快,但是毕竟也是逐步发展的,在每一步中更新的内容并不多。所以,每次都跟上,不要掉队,维持终身学习的状态也不是一件难事。

时间: 2024-09-20 13:40:38

十八年程序开发经历小结的相关文章

Flex程序开发心得小结

和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率. 在Flex的帮助手册中,有一个专门的章节讲了程序的优化,下面是我结合帮助作的几点小结: 1.避免容器的多级嵌套,减少相对尺寸.相对定位的使用. 在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作.如果嵌套的级别很深,这个计算量会很大. 2.尽量使用轻量级的容器 Canvas是体积最小的容器,它只支持

Flex程序开发心得小结_Flex

在Flex的帮助手册中,有一个专门的章节讲了程序的优化,下面是我结合帮助作的几点小结: 1.避免容器的多级嵌套,减少相对尺寸.相对定位的使用. 在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作.如果嵌套的级别很深,这个计算量会很大. 2.尽量使用轻量级的容器 Canvas是体积最小的容器,它只支持绝对定位.很多时候,都可以使用它来代替HBOx和VBox.另外,Canvas也是我们编写自定义容器性质组件的一个首选.它具有容器的基本功能

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.5 本章小结

1.5 本章小结 嵌入式 Linux应用程序开发标准教程(第2版) 本章首先介绍了Linux的历史.嵌入式Linux操作系统的优势.Linux不同发行版本的区别以及如何学习Linux.在这里要着重掌握的是Linux内核与GNU的关系,了解Linux版本号的规律,同时还要了解Linux多硬件平台支持.低开发成本等优越性. 本章接着介绍了如何安装Linux,这里最关键的一步是分区.希望读者能很好地掌握主分区.扩展分区的概念.Linux文件系统与Windows文件系统的区别以及Linux中"挂载&qu

《微信小程序开发入门精要》——第1章,第1.7节小结

1.7 小结本章用一个完整的例子从头到尾演示了从开发小程序到真机测试,再到上传发布的完整过程.尽管本章提供的例子非常简单,但足以清楚地展示小程序开发的完整过程.不过要想开发更加高级的小程序,还需要继续阅读后续的章节.

精通J2EE应用程序开发之交叉分析J2EE

j2ee|程序 在不久前的一段时间内,Java 开发人员在准备一个新的企业 Java 开发项目时,事先就知道将要使用的工具.当时,一切都很简单:J2EE 是新的,HTML 浏览器是公认的用户界面标准,而复杂性(至少从推测的角度而言)已成为过去的事情.而如今,事情变得如此复杂. "开发人员面对的选择令人眼花缭乱." 开发人员面对的选择令人眼花缭乱,从"轻型容器"(如 Spring.NanoContainer 或 HiveMind)到"web 框架"

《嵌入式 Linux应用程序开发标准教程(第2版)》——导读

前 言 嵌入式 Linux应用程序开发标准教程(第2版) 第2版说明 本书第1版<嵌入式Linux应用程序开发详解>自2006年7月出版以来,受到了广大读者的一致好评,已经多次印刷,累计销量18000册.许多高等院校.职业学校和培训机构也将本书作为嵌入式专业的教材.许多读者提出了宝贵的意见和中肯的建议. 第2版图书在第1版基础上做了以下修订. 增加PPT教学课件:本书第2版增加了PPT教学课件,方便老师教学使用. 赠送嵌入式专家授课视频:本书第2版免费赠送超值的嵌入式教学视频,所讲内容均为嵌入

程序员-做程序开发还是考金融研究生

问题描述 做程序开发还是考金融研究生 我是一名即将毕业的大学毕业生,曾经在学校实验室工作一年从事商业项目开发,现在即将大四,在实验室工作一年的经历让我觉得程序员如果毕业直接工作,只能属于码农角色,而且提升很难,在工作中和人与人之间的沟通太少,极度缺乏社交,那些在实验室工作的那些人就跟二B一样一天到黑做在那里开发,关键是创造不出一个合理的价值,完全是民工的民工,现在我想考金融专业方面的研究生,要么毕业后从事更加有价值的开发,要么直接走金融方向,现在求前辈指点 我这种想法的对和错,如果我现在直奔上海

基于Oracle的高性能动态SQL程序开发_oracle

正在看的ORACLE教程是:基于Oracle的高性能动态SQL程序开发. 摘要:对动态SQL的程序开发进行了总结,并结合笔者实际开发经验给出若干开发技巧. 关键词:动态SQL,PL/SQL,高性能 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输

[译] 一名 iOS 开发者的 React Native 开发经历

本文讲的是[译] 一名 iOS 开发者的 React Native 开发经历, 原文地址:An iOS Dev's Experience with React Native 原文作者:本文已获原作者 John Scalo 授权 译文出自:掘金翻译计划 译者:lsvih 校对者:1992chenlu,avocadowang 一名 iOS 开发者的 React Native 开发经历 如果你是一名 iOS 开发者,你应该听说过 React Native.它给出了简单而吸引人的承诺:一次编写,两处部署