第一篇:如何成为一个程序员的道路
如何成为一个程序员的道路!
“程序员”,提起这个名称便让我们的脑海中闪出一长串名字:一手开创现代软件业巨龙——Microsoft的比尔·盖茨;中华民族软件业之代表金山公司的掌门人——求伯君;微软的噩梦、自由软件的代表、Linux之父芬兰小伙子Linus Torvalds……这些在IT业内被无数人津津乐道的名字,都是从一个的程序员开始做起的。随着他们的软件日益流行,他们的名字也逐渐为人所推崇和尊敬。很多年轻人也以他们为榜样,梦想着做一名程序员,最后成为新一代的IT英雄。在这里,笔者从一个职业程序员的角度,想和大家谈谈自己的感受。为什么要做一个程序员
提到这个问题似乎会让人觉得太简单、太幼稚。看看现在程序员舒适的工作环境、丰厚的薪水、过着“快乐”的白领生活,一切仿佛都不言自明。其实这是只看到了程序员的一面。我们的另一面则不为大众关注:没日没夜的工作,通宵加班是家常便饭;整天和键盘打交道,把自己的代码改来改去几十甚至上百遍,目的只是为了想抓住一个小小的Bug……这种枯燥的生活又有多少人能切身体会?没有对软件事业本身的执著、对源代码近乎朝圣般的痴迷,这一切都是普通人不能忍受的。但是当你的程序完全通过了测试,成为一个合格的产品。这个时候的喜悦,又是如此强烈地激荡在你胸中,也只有真正热爱编程的人,才会感到其中真正的快乐。所以如果有人问你为什么要做一个程序员,那就告诉他:我有足够的勇气面对每一次调试失败、有坚定意志和信心来写好每一行代码。这是我的热爱,编程就是一种乐趣!有规矩,成方圆
程序开发是一件灵活性很强的工作。例如:变量I增加1,在C语言里面可以有I++、++I、I+=
1、I=I+1等多种写法。但是,这并不说明编程就可以随心所欲,天马行空。良好的编程习惯可以提高工作效率,减少不必要的失误。尤其是对初学者来说更是要注意的是:
第一点:编程的时候,首先要建立好的数据结构。
编程序的时候,如果在开始数据结构设计错误,那么在后来你不得不花大代价来修改程序。笔者自己就曾有过这样的惨痛教训:一个程序写了2500多行,突然发现基本数据结构不合理,结果全部推翻重写。“磨刀不误砍柴工”绝对不是老生常谈。在开始写代码之前做好数据结构的研究和准备工作往往可以达到事半功倍的效果。
第二点:代码尽可能重用与模块化。
无论是面向过程还是面向对象,代码重用都是基本原则之一。例如:如果要画一个青苹果和一个红苹果,就写一个函数来画苹果,把颜色作为参数传进去。这样只要调用同一个函数传递不同参数就可以画出不同颜色的苹果。这样做的好处一是程序比较容易理解,另外修改也方便,只要修改一个地方就可以让两个苹果都发生改变。这一点在开发一些短小程序中还感觉不出,但是在以后开发大型程序的时候,工作的效率就明显提高。这,就是聪明人做聪明事,以最小的代价取得最大的收获。
第三点:良好的编写风格。
一个程序,不可能是绝对完美,以后永不用修改的。既然要修改,就必然要重读和理解原来的代码。而良好的编程风格,可以使人更方便和迅速理解程序的结构,从而可以最大限度地提高修改的效率。在这里,笔者举出一些比较好编程的风格要求:1.统一有意义的命名规范:一个变量叫nCount明显比叫iii更容易被理解其真实的逻辑含义和数据类型。所以变量和函数名多起几个字母,让它有意义一点,将来理解也比较方便。2.代码的逐层缩进格式。
这几乎已经成为一种标准,这种格式使得代码之间的层次关系非常明显,对于程序的逻辑理解有很大的帮助。3.代码位置的有条理性。把相关功能的代码集中起来,放在一起,这样在以后阅读代码时候,可以尽量避免在不同文件模块之间频繁切换。由于要考虑到以后的理解,所以函数内部的逻辑不要写得很复杂,例如循环嵌套以三层为宜,代码行数以一屏左右为宜,太长的代码不利于理解。如果循环的确太多、代码太长,就应该考虑重新再划分出更细的子函数。好的编程风格当然不止这些,这也需要在学习过程中慢慢体会。
第四点:注重程序测试,注意异常处理。
这往往是业余编程爱好者和职业程序员的一个明显的差别。业余编程爱好者往往只注重程序可以正常运行,而职业程序员除此之外还必须关注程序在异常情况下也可正常运行,至少可以正常终止。而这是建立在对程序充分理解和测试基础上的。多用不同情况去测试自己的程序,可以发现更多的隐藏的Bug,从而提高自己程序的质量。
千里之行始于足下。做程序员有更多的曲折和困难。但是只要真心热爱软件开发,愿意为之而付出,最后将使你体会到个中乐趣。来吧,还犹豫什么,踏上这条程序员之路,昂首向前走吧!
学编程是先学什么?
对于广大编程初学者来说,存在着这样普遍的认识:学习程序设计选择编程语言很重要,开口闭口就是Visual Basic、Visual C++、Delphi、Power Builder等一些现在比较流行的开发工具。经常看见有初学者问:我学C/C++,究竟是学Visual C++好,还是学Borland C++ Builder好呢?或者就是要求在Visual Basic和Delphi之间作出选择。学习程序设计和学习程序设计语言究竟是怎么一种关系?初学者究竟应该如何取舍呢?就此我们打个简单的比方:学习程序设计就好比学习射击,而程序设计语言就对应射击中的气枪、手枪、步枪等各种枪械。学习射击必须要选择一种枪械,不可能没有枪还能学好射击的,也不可能同时学会使用所有的枪械。但是,如果掌握一种枪械的射击,再学别的也就触类旁通了。因为在熟悉一种枪械的同时,也学习了射击技术本身。再学其他的,自然事半功倍。学习程序设计也是一样,必然要从学习一门程序设计语言开始入手。同时在学习的过程中,不但要掌握这门语言语法本身,还要学会编程的思想,这是所有程序设计语言的基础。程序设计语言,是“一法通,万法皆通”的。
建议:学习程序设计不必苛求一定要从某一种语言入手,可以在Visual Basic、Delphi、BorlandC++ Builder或者DOS下的Pascal、Turbo C(或Borland C)中间选择自己比较容易接受的一种进行学习。从中主要学习的是编程本身的思想,学习的是用程序设计的眼光来看待问题。或许,学习的效果不能马上看到,但是可以学到扎实的基本功,而这对于将来的进一步发展是有很大好处的。这些基本功包括:
一、强化逻辑分析和建立数学模型的能力
编程的目的是什么?是要解决现实中的问题。而现实中的问题是用自然语言描述的,目前的计算机对其无法理解。我们要做的就是必须用计算机能理解的方式将问题“告诉”计算机。也就需要我们对现实问题进行逻辑分析,建立合适的数学模型,然后以程序和数据的形式输入计算机,让计算机帮我们来分析解决。一个简单的例子就是计算机对于颜色的处理办法:用R、G、B三色分量来各表示一种颜色,对于颜色的处理被转化为对R、G、B三个整数的处理。我们只要改变这三个整数,就可以将其改变成另外一种颜色。对于其它的现实问题,我们也要像这样使其可以被计算机所“理解”。这是编程所要解决的第一步,否则就根本没有
程可编。这是建立在“经验”基础上的,是要在学习过程中逐步积累的。
二、数据结构和算法知识
程序设计发展到现在,已经有了一套比较普遍、完整的数学模型(我们称之为数据结构)和对应这些数学模型的处理方法(也就是算法)。目前的程序就是以此为基础的。在程序员中间流传着一句经验之谈:“好的数据结构是程序的一半。”其重要性可见一斑。作为一个程序员,如果不知道数据结构中堆栈、队列、链表、树,不知道算法中的查找、排序、树的遍历、递归,这简直是不可想象的。我们所说的“编程的思想”也就具体表现为这两点。所以,数据结构和算法知识是学习程序设计过程中必须掌握的重点,这样在以后的程序开发过程中就可以觉得得心应手。
三、丰富的实践经验
程序设计本身就是一门实践性很强的学科。一个只存在于纸上的程序如同没有翅膀的鸟永远不能飞翔在现实的天空。任由代码写得再巧妙,风格再优美,也只是一张纸上的一连串字符而已。就好比是一份作文练习,或许写得很好,但是不交给老师去批阅,和一张白纸又有什么区别呢?在这里,程序就是作文,而计算机就是老师。只有把“作文”交给“老师”,通过调试程序才能印证自己的构想是否正确,或者看到什么缺陷。当然也少不了要多和同行交流,尤其是随着互联网的普及,在网上我们也可以看到别人编写的例子和源程序,作为现代的程序员,这也是千万不可错过的好机会。
最后,作为一个程序员还有一点小要求:那就是身体素质要好,能熬夜才行。
第二篇:如何成为一个合格的Java程序员
如何成为一个合格的Java程序员? 合格的Java程序员就是要技术精湛,懂得沟通,然后就是要不断学习学习。如何成为一个合格的java程序员,想要成为一名合格的java程序员需要掌握哪些?下面,让多迪技术总监为你一一介绍。
1、技术能力这是非常重要的事,过硬的技术能让你得到面试机会,并在工作中游刃有余。当公司招聘一个Java开发人员时,是会优先考虑能力因素的。在实际的项目开发中,一个程序员的技术能力等于其解决问题的能力。
2、专业基础是一个程序员的知识积累很大程度上决定了其解决问题的能力。知道如何编写代码是基本的技能,但是知道Java编程语言的原理,知道代码背后的算法将使你从人群中脱颖而出。
3、主流编程工具有构建工具:Maven或Gradle。SCM:Git(不是GitHub。大不相同)。构建自动化:Jenkins。IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。Bug跟踪:Bugzilla或Jira。
4、JSF的知识是应用程序服务器,所有Java开发人员应该知道如何在Apache Tomcat中部署。当Glassfish开发停止时,下一个最好的事情是J Boss Wild Fly。
5、沟通的能力是我们做好一切事情的关键。我们必须与我们周围的环境保持互动,无论是在我们的私人还是职业生活中。一个良好的程序员知道如何在各种团体面表达自己。也许对你来说显而易见的东西在他人的角度来看并非如此。从大的尺度来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。
6、自学能力是一个非常重要的技能,在你自己的空闲时间学习新的技能。不要等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从WEB前端开发到架构模式,总是有一些新事物值得学习。经常阅读博客和论坛,尝试加入本地聚会小组。你学到的东西可以帮助你的事业。知识刷新频率极快让人无法追赶的这个时代,难免会有超出自己知识范围的时候,此时你的自学能力决定了你能多快的完成任务。
7、良好的团队合作精神是所有开发人员都是作为团队的一部分在协同工作。你需要致力于团队的目的,或帮助新的团队成员克服障碍。不要存在这种“我只要做好我的本职工作,下班就直接回家”的态度。成为团队的一部分,帮助周围的同事,对自己的能力也是不小的提升。
第三篇:如何成为一名程序员
苦逼中的战斗鸡:如何成为一名程序员
下面要说的是我在成为一名程序员的道路上做的几件事情。写在这里除了要让自己铭记在心外,我还希望它能对别人有些用处。1.建立一个博客
这是我后来才认识到的事,其实应该很早就去做。如果你是跟我类似的情况,你应该尽早开通一个博客——尽管还不知道该写什么。注册一个域名,买一个 空间。你会惊奇的发现有很多可写的东西。你可以记录下你成为一名程序员的过程,或写一下你感兴趣的技术方面的东西。我一直以为没什么好写的,可当真正思考 这些问题时,却发现有很多值得写的。最重要的事情是开始去做。2.开发一些东西
开发什么并不重要。选一种编程语言,任何一种都行,开始干。你不必去花大量的时间来决定应该使用什么语言。直接开始学一种语言,事实上最重要的是学习编程语言的基础知识,而不是劳神费力的去选择一种“最好的编程语言”。我选择的是PHP。因为它是一种被广泛使用的语言,在网上有大量的学习范例,我已经通过搭建一个WordPress网站而熟练的掌握了它。没有丝毫的遗憾。它使我学到了很多 基础知识。我还学习了其它语言吗?当然,我后来涉猎了很多脚本语言,我要在下一个项目上试试Ruby。编程语言不断的在变化,不要只盯着一个不放。3.注册你的GitHub帐户
我已经在Bitbucket上有了一个代码库。我最初选择注册Bitbucket是因为它能提供5个免费的私有库。后来我决定在GitHub上注册。事实上,我丝毫没有拖延,看看我的成果吧。4.向开源项目捐赠代码
我早该如此做了。我起初低估了做这种事情的重要性,说老实话,我现在仍需要进一步重视。向开源项目捐赠代码,这是一种很好的学习别人如何编程的方法,并且能把自己的代码公开。我今晚的就要去列一个准备去参与的开源项目的清单。5.热心参与
这也是我需要改进的方面。我应该到stackoverflow网站上去回答更多的问题,在一些博客,科技网站上分享自己的东西。去那些网站,让大家看到你。不在网上露面,就相当于待在屋里不出门却想找一份做巴黎导游的工作。重复做第2,4和5点 其它一些事情
很明显,每一个有志向的程序员都应该每天阅读Hacker News和其它开发/科技/编程类的博客文章。
我打听到了不少的技术讨论会。这周末我准备去参加一个。我会把那里的情况写出来。我在这里并没有提读书。我喜欢阅读,但我们没有买任何的关于web开发的书籍。这是我个人的做法。我相信很多人都会建议首先买一本书看看。
找一些能和你讨论你的web开发/技术/编程想法的人和群体。如果我做了更多的第5项,我可能找到了更多的这样的人。
好了,这就是我要说的。这些就是在过去的一年里我成为一个程序员的成长之路上做到事情。如果有人觉得在这个清单里我还应该加入什么,请给我留言。我永远都希望听到新的观点。
第四篇:【免费下载】一个80后Java程序员的成长道路
来源于:http://dayang2001911.javaeye.com/blog/
一个80后Java程序员的道路
写给想了解部分程序员职业发展生涯的人看,写给准备跳槽的程序员们看,写给有过和我类似经历的同行们看,写给自己看,写给我的女朋友看,写给其他行业中也想去努力拼搏的人看。
一、我的情况简介
我是一名有3年多工作经验的程序员,或者说是高级软件工程师。
本科曾经就读于西安电子科技大学,学过数学专业,那时候国家建立了36所示范性的软件学院,我一眼热就改专业、转学院,学了软件工程。这个教育背景写到简历上应该还是不错的,不过我在软件学院其实没怎么学软件,所以找工作的时候自己心里都没底。
没好好学软件的原因是那时候觉得软件也不是我喜欢的,又打算考个经济学的研究生,想以后搞企业。最终研究生也没能考上,又要养活自己,所以只好还是以软件开发为生,在西安一家国企性质的IT公司工作,公司主要给银行做,公司老总也是原来银行的一些小领导。
就这样,我在这个公司从毕业一直干了3年,从一开始我没什么基础,java都要自己现学(学校里是开这门课了的,毕设也用java做的),到三年之后我跳槽离开,可以说积累了一些开发经验。从工资级别上看,离开时也是高级软件工程师里的最高级了。
套用一句郭德纲的经典台词:“我很欣慰”。
三年里做过5,6个项目,还有1,2个自己做的小项目,从一开始的简单的修改一些变量、常量,用ireport一点一点画一些表格,到用cognos开发报表,做一些BI项目的前端展示,到独立开发模块,再到最后和我的小师父一块研究jbpm开发工作流的业务项目。顺便提一下我的小师父,也是我的同事,只因为他比我还小,但技术上很牛,又带过我,所以简称小师父了。
回想三年,虽没有像很多更牛、更成功的程序员们的经历辉煌,但从我自己来看,我真的“很欣慰”。
因为,我知道,我一点一点磨到这一步中间的代价是什么,是我多少个夜晚没睡好觉,去一点一点抠代码该怎么写换来的。三年了,我真真正正睡过几个舒心的觉呢?
但我又觉得我可能不适合这个行业,我没有Robbin或者我的小师父那么牛的技术。别人我不知道,单从我小师父干活时表现出的那种素质,技术,我就总觉得我真是太菜了,而且我还耗费那么多时间不睡觉去一点一点学,还花银子去买各种技术书籍,这些我小师父是很少去做的。我发现我们的“投入产出比”实在过于悬殊。
回过头想一下,我觉着我当时选择转到软件工程专业也挺合适我的,因为我原先是学的数学,是理科,转到软件工程,算是工科,从理科转到工科这才是我转专业的本质,我认为虽然我在开发上技术还不够精湛,但是我要是在理科可能混的更惨。我喜欢工科,我喜欢可以时不时的出些小成果的工作。
所以说,做到现在我也喜欢上了这个工作,这个行当,而且我希望自己技艺能更精湛,或者说编码能更快点、质量能更高点,并且我庆幸我在第一份工作经历中能遇到技术高手,又能亲自带我、教我,更庆幸的是我通过第一份工作经历使我对软件开发有了更多的兴趣,让我对自己的定位不模糊。虽然我现在不如这些技术牛人,但是我会坚持,借用一句名言“I came,I saw,I conquer”。我相信有那么一天,我会做的很好,我不会担心自己在工作时间里憋不出那几行代码,我不会为了消除这种担心而用宝贵的睡眠时间去提前开始思考、编码,我不会不敢给项目经理报我的进度。
我以为经过这三年的经历我能得到很多很多的回报,但是当我从这个公司辞职后去找第二家公司的时候,我发现我能得到的回报是IT界的一种普遍回报的平均数。
二、第一次跳槽
从西安那家公司离职后,我来到北京,开始我的第一次跳槽经历,三个月找工作的经历,让我知道了我到底值多少钱,更让我知道了什么是竞争的残酷性、理智性。
其实我找到第一份工作的过程很简单,由于原来部门的经理是我的校友,可能出于对学校的一种回报,答应给软件学院一些招聘名额,当时什么都不会的我就去试了试,又正巧面试我的副经理出差,就由经理问了问一些笔试中的问题,和一些Java方面的问题,我记得答的不怎么样,不过可能也没完全答错,也就过关了。后来想想,经理主要是做C的开发,那个副经理才是Java出身,如果真让副经理面了,恐怕结果也不会这么顺利。
也就是说,我第一份工作得来的还是很容易的,没有经过那么多次的选择。
也许正是第一份工作得来的相对容易,第二次找工作的经历就被上帝公平地安排一下,参加应聘的次数变多了,找工作的时间也延长了,用了3个月才定了下来。
人未到北京,网上的简历已经投了很多,到了北京没几天就有招聘的电话打来。
三、人力外派的招聘
1.人力外派公司的职位
是一家做人力外派的公司给我打来的电话。由于我有银行业软件开发的背景,而他们也正有某国有银行的项目需要,所以给我打了电话。到北京之前我就想,不能定的太快,要多比较一下,卖个好价钱。出于比较的心理,我答应到公司去面试。
公司就在上地那个有着亚洲第一厅堂的大厦里,来之前由于住的地方不能上网,也没好好查这个公司的基本情况,并不知道是做人力派遣的,到了之后,公司的总监很哥们似的把我拉到角落,给我介绍大致的情况。
“公司目前有两个职位,一个是给某银行做报表方面的项目,算是高级软工,另一个是给国家某总局做项目,并且是跟另一家公司合作,算是系统分析师级别”。一听这个情况,我首先反应,希望能更上一层楼,做做系统分析师,所以就说想做后者。再说到待遇,银行那个项目给到税前6K,某总局的那个项目可以给到7K。
2.期望待遇与实际待遇有差距
我以为凭在西安工作了三年,而且又被原单位非常认可的程度(包括获得优秀员工的奖励,工资级别是高级软工的最高级这两点),我认为我在北京应该得到至少至少7K的水平。而这个系统分析师的职位也才给到7K,使我相当不爽。但是我也知道,不争取是得不到好东西的,我就给那总监说,我的理想待遇是8K,总监说不太可能。
虽然价钱没谈拢,但是我还是想试试自己的面试能力,就同意和合作公司的技术方面的负责人去面试。
我原本以为就自己去面试,中途又加了一个,听总监说有近10年的工作经验了,能力相当强,我是一个尊重经验的人,因此对这位大哥也是抱着十分尊崇的心情的。
我、10年经验的大哥以及外派公司的总监,我们三人就到了某总局的项目开发现场,与合作公司的技术负责人见面。
3.第一次跳槽之第一次面试
来之前,我大致准备了一下,主要是想了想该怎么介绍自己的项目经历什么的。由于我最后一个项目的经历算是集大成之作,而且也因这个项目得到了“优秀员工”的荣誉,所以我着重准备了最后一个项目,有关工作流的项目。
面试主要也是问经历。合作公司的负责人拿着我的简历看,我给他在来个同期声,把我的经历介绍一下,其实这个介绍和简历上的也差不多。
我介绍自己:在某某年几月到某某年几月,我参与某信托投资公司的综合业务系统的开发,主要利用了
JBPM
工作流引擎实现该系统的流程部分。我的主要职责是对JBPM进行了技术攻关、分配一些模块、开发公用接口等工作。
负责人问了我如何对JBPM进行的技术攻关的问题。其实当时有我小师父在,他基本已经弄清了JBPM的使用了,因此我的主要任务是把这个工作流引擎运用在项目中,比如做出一个实际的例子,但是也有一部分对JBPM学习的任务。我就大致说了一下对JBPM技术攻关的过程,比如看了JBPM提供的例子、技术文档,而且我们部门还邀请了上海一家公司给我们做了几次咨询、培训,把他们运用JBPM的项目拿出来给我们进行了讲解。为了体现出我的价值,我着重强调了自己在这个项目中封装了一些流程的接口,用于给项目组成员使用,使他们不必对JBPM更深入了解,降低了开发难度。
之后,负责人又问了问以前我做过的项目,也没什么太特别的问题,这里就不再赘述了。
轮到10年经验大哥面试了,这位老兄瘦瘦的,戴副眼镜,歪歪一坐,一副谁也不吊的样子。负责人也像问我似的,让他自己说说自己的经历,我一听我都快坐不住了。这位老兄经验丰富,而且听他说自己非常喜欢玩各种新技术,很喜欢自己鼓弄,由于这个项目中可能用到有关搜索方面的东西,他也说自己也用过搜索引擎lucense,其实这个我也见过,可惜从没碰过,当时很后悔,至少也应该了解了解啊,这样至少有的说嘛。
负责人又问了他有没有做过项目经理,他说也做过,不过还是喜欢做技术,所以也没做多久。给我的感觉就是,技术很牛,很有经验!
我真是都不想再待在那个面试的房间里了,明摆着我就是一个陪衬。不过,我还是想,既来之则安之,面就面到最后。
合作公司的技术负责人面试完毕了,合作公司的项目经理也过来面试我们。项目经理问了我们一些个问题,我记得的一个问题是让我说说我的优缺点。
4.我的缺点
其实在离开上一家公司之前,技术总监曾经找我最后谈话,了解我离职后的打算以及对项目后期的建议,谈完后,我特意问了技术总监一个问题,我问他认为我的缺点有哪些,我希望通过领导的眼睛看到我不能看到的问题。
由于我们原先的公司规模不大,软件开发部总共也就100人左右,而且我当时所在的信托项目由于问题很多,技术总监直接进入我们项目组,指导我们的设计,并对我们实现的功能进行把关,最紧张的时候项目组全体成员
14,5个人封闭开发,这也包括技术总监,因此技术总监对我们项目组每个人的情况都非常了解。
在我眼中,技术总监是一个很聪明,看问题能看到本质的人,因此我信他说的。
作为领导,作为有着丰富职场经验的老手,他首先评价我有很多不错的地方,比如我能够从大局看待项目,这主要是指当时我们项目极度缺乏详细设计文档,而缺乏设计文档在开发初期给项目组造成了很多开发上的困难,开发人员不能又开发,又琢磨要实现什么。我把这个问题反馈给了技术总监,并且详细的列出了需要哪些功能的详细设计文档。
负责写详设的是我另一位师傅,这位同事在我进入第一个项目组的时候给了我很大帮助,这次我没有给我这位师傅留太多面子,直接把问题反应给了技术总监,估计也造成了我和这位师傅之间的一些隔阂。
接着技术总监看我对自己缺点的问题还是比较认真的,就继续说了下去。他说其实我在项目中也暴露出一些问题,可能也不算是缺点等等的,可见技术总监的说话还是滴水不漏的,一点也不会把事情搞得让我很难堪。
他认为我在项目紧张开发的那段时间里没能安排好自己的工作,当时分配给了我几项工作,包括开发公用模块、给其他开发人员分配任务以及开发一些自己的模块等等,在这些工作开展的时候,我没能把精力集中在对流程核心接口的开发中,有些任务可以分给其他人来做的没有分配,导致代码质量不是很高、效率底下等情况。技术总监也说,这也有他们分配任务没考虑过细的原因等等。
我在听完他说我的这个缺点之后,我的心里其实没有太服气,但也说不出到底是什么不服,可能有这样一个想法,为什么你们当时不给我指正呢?为什么项目经理有那么多问题,技术总监都给他及时的批评指正,而我却得不到领导的这种指导呢?我不服气的是,我认为技术总监偏袒项目经理,说难听点就是有帮派习气。
虽然我对技术总监有不满的情绪,但是对他做事的风格,实事求是分析问题的方法还是非常佩服,所以对技术总监说的我的缺点很留心,离职后,我立马琢磨他所说的意思。
后来我在吸收了技术总监意见的基础上,总结出了我的缺点就是,有时候不能安排好自己工作的优先级。针对这样的问题,我自己想了想解决方法,应该先把公用的东西优先做出来,涉及到别人的东西也要先做,可以分配给别人做的应该分出去,自己只做精力允许的、最重要的那部分。
我到现在都对我当时向技术总监征求个人缺点的看法很得意,技术总监看问题就是不一样,如果让我自己总结自己的缺点,怎么也不可能想到自己在安排自己的工作上出问题。而且经过提炼,我还可以把自己的缺点放到面试中去说。
5.出人意料的结果
我把自己的缺点讲给合作公司的项目经理,面试又进行了一会就结束了,人力公司的总监和合作公司的负责人出去商量最终结果。
在这空当,我主动找10年经验大哥聊了聊,我表达了我对他技术上、经验上的钦佩,而且希望以后能交流交流的意愿,我向他要了手机号码。没想到这位老兄说“你要我电话干嘛,没必要给你电话”,让我很诧异,我心说了,还有这么刺头的人,他又说“最近装修搞得他头都晕了,别再给我打电话了“之类的,简直让我觉得很尴尬,一下子对他的敬意全无。
人力公司总监回来了,结果很明显。他用车把我俩往回送,对那老兄说了一些什么,那老兄到了就下了,就剩总监和我了,他问我说“你猜录取谁了?”,我很平静的告诉他,肯定是那位有着10年工作经验的大哥无疑了。
但是,结果出乎我的意料,总监说录取我了。
我很意外,总监跟我解释道,主要看中我的团队意识,虽然那位老兄有10年经验,但是不易合作,即使技术强也不合适,因此决定要我。
听到这个结果,自己还是比较满意的,毕竟是首战告捷了,虽然我是不会选择去这家人力外派公司的,但是对自己能够获得这个工作机会还是很高兴的。
经过第一家公司的面试,虽然是人力外派类的公司的面试,但是由于成功过关了,所以自己的信心增强了。
四、兵败外企
1.T公司
其实在来北京之前,自己心里就已经有非常向往的公司了,也就是外企T公司。
知道T公司是因为我原来的同事强子曾经应聘过T的西安分公司,而且这个公司在软件行业内的口碑非常好,在IT红黑榜网站上查这个公司的评价,基本都是好评,不像其他公司似的,某某公司拖欠工资、某某公司领导很坏之类的负面评价。这些都与T公司绝缘。
最让我对T公司产生兴趣的还是他们的开发方式。
2.敏捷开发
T
公司在开发上很有特色,公司采用敏捷开发方式,我理解敏捷开发是一种开发方法论,为了能成为T公司的员工,我买了本《敏捷开发》的影印版开始看。
敏捷开发大致就是说以实际的软件、代码作为和客户交流需求的载体,而不是用文档,欢迎变化而不是遵循计划之类的。
在来到北京不久,一家专业的编程方面的杂志社联合T公司举行一年一度的敏捷中国大会,我到了北京的时候已经错过了报名参会的时间,不过好在我跟杂志社联系了一下,补上了报名。
会议组织得很专业,包括宣传材料、会议胸牌、茶歇等都组织的非常好。会议由许多演讲组成,值得一提的是,大会的主题演讲的演讲者也是敏捷开发的提出者之一,同时也是T公司的科学家。
我参会的目的很明确,想通过敏捷开发大会进一步了解敏捷开发,另一个就是想多和T公司的员工们交流一下,取得应聘T公司的经验。
实际上,T公司主办的这个敏捷开发大会的目的也是和我的目的类似,也是要宣传敏捷开发的理念,宣传T公司,而且提倡参会人员和T公司的员工自由交流。
演讲的很多都是老外,虽然我极力认真去听他们讲的是什么,但是我英语还没达到能直接听懂他们在讲什么。
虽然参加了这个会的收获一般,但是由于和T公司能走的更近,所以觉得也是做应聘准备的一个重要步骤,我想象在应聘的时候可以给他们说我参加了这个会议,从一个侧面也能表明我对敏捷开发的兴趣。3.电话面试
开过这个敏捷大会后,我就开始着手准备因为看重,所以慎重。
我到网上搜关于
T
公司的面试、笔试了。
T
公司的应聘信息,包括笔试、面试的题目等等,结果不多。倒是碰到一个做T公司职位的猎头,就加了MSN,我说明了我的情况,这个女猎头主要做高端的,也就是5年以上工作经验的。我追着问她T公司招聘的流程,甚至题目。女猎头心地很善良,发给我一份文档,写了T公司面试的一些情况。
T公司是外企,外企面试一般都是先进行一次电话面试,电话面试可以使人力了解应聘者的口语水平,电话面试通过后再真正面试。女猎头的文档列出了T公司电话面试的一般问题,比如有个人介绍、曾经遇到的一些困难什么的。看上去问题都不太难,我用英文把教育经历、三年的工作经历、项目中承担的责任、收获都写成了稿子,并熟记于心。
投简历后的第2,3天进行了电话面试,时间定的是下午4:00,到了3:50的时候我还没有不一样的感受,可是当时间到了3:55的时候,我发现自己心跳加速了,到了4:00的时候简直不能平静了。
好在T公司是4:00多给我打来的电话,我尽力地平息着我的紧张。首先人力要求我做一个英语的个人介绍,这个不难,我已经有了稿子,只要照着念就OK了,不过在念的过程中我还是有意识的放慢速度,稍微打些磕巴,免得被看穿。
个人介绍很快念完了,人力开始提问了,“what is your challenge in your current job?”,其实我已经听懂了她所问的,就是说遇到过什么挑战,但是由于紧张,突然听不懂“current”这个单词,问题说完了我就在不停的回想current到底是什么意思。我估计因为我已经离职了,当前并没工作,而她问在current
job(当前工作)中遇到什么挑战就导致我有点神智不清了,不过很快我反应了过来,从稿子中找到遇到的困难那部分,就开始往上套。
首先我说了个技术上的挑战,如何在信托项目中使用JBPM工作流引擎,以及如何把这个工作流引擎结合具体业务在项目中使用。说完,人力继续问我如何解决的,我就把技术总监给我们指明的要把“业务和流程分开”的解决思路说了。之后人力又继续追问,还有没有其他方面的挑战。我都被问得快有点撑不住了,想了想就把自己当时没能安排好自己工作优先级的这个缺点改造了一下,说了说。但是由于这部分没能预先准备,边想边说,说得特别磕巴,有的词发音都没发准。
说到半截,可能人力已经知道我的外语水平了,就不要我再用英语折磨她了,让我可以说中文了,我就把没能用英语表达清楚的地方用中文重新说了一下。
时间已经过去了15分钟,最后人力让我提问,为了给人力留下深刻印象,我问了5,6个问题,有关于敏捷开发在T公司的开发效果的,有对敏捷开发能否在大型项目中应用的,有关于T公司是否做国内项目的,反正我尽可能的想了很多问题,体现自己对他们公司的兴趣。
这个电话面试时间总共有20分钟,完后我的感觉并不太差,不过我也明确地知道了我的英语口语水平实在不怎么样,但是,我总以为上天会照顾我,至少让我能过了电话面试这第一关,哪怕让我进入下一关再出局。
4.晴天霹雳
想到这里,我心情还不错地和女朋友一块去逛超市买东西,从超市高高兴兴买了东西回来后,我习惯性的看了一下邮箱,发现了T公司的一封信。信的内容让我失落到谷底:
“After careful consideration, we are unable to match your skills and background with any of our current open positions.”
晴天霹雳!而且原以为要几天才会有结果,一看邮件到达的时间就是我电话面试后的15分钟后,我觉着他们太轻率了!但也只能接受这个结果。
我反复琢磨着“技能和背景与现有职位不匹配”一句的含义,最终,我理解为一方面,我原先的工作单位规模不大,另一方面,我原先的开发方式也和他们的不同,我虽然看了敏捷开发的书,但是从没实践过,更别说口语水平了,真是彻底失败。
那一晚我想丢了魂似的,可不么,理想实现不了,真是很痛苦。不过,我总归还得继续找工作,这家最理想的不行那就换点别的吧,退而求其次,还是希望能进入到外企工作,不但拿钱多,而且学到的东西也多。
从网上看到有路X社北京研发中心的招聘启事,我给他们也投了,没多久,来了个电话面试,让我说了说经历,用中文问了些诸如HashMap和HashTable的区别之类的问题,过后也没有了音信。
后来,通过猎头我还接到了
S公司的电话面试,S公司是发明了J语言的公司,电话面试的内容也大同小异,我用我磕磕巴巴的英语应付了这些电话面试。
再后来,通过其他猎头还给一家韩国公司投了简历,囧的是,连猎头这关都没过。
5.认识自我
这几家外企的应聘,我基本都在电话面试就结束了自己前进的步伐,几次失败让我非常现实地认识了我当前的水平、经验、技能、背景这几个方面,与外企要求的条件相比差距还是相当大的。口语不过关,工作过的单位也不是规模大的公司,做过的项目也不是非常大,这些都导致了我和我最向往的公司以及那些高薪的外企的远离。
清楚了自己的水平,自己也认为目前应聘外企是不适合的。而现在,我要做的是改变求职的方向,不能把重心都放在外企上,所以最终我决定以应聘国内的大型公司为主。这么做是希望自己可以从大公司中学到小公司所欠缺的更加规范化的东西。
五、转变方向有代价
1.做ERP的大公司K 继续在人才网上搜索大公司,联系到了一家,是在ERP领域做得很大的K公司。K公司的笔试,试题分了几类,量很大,题目应该说不算难,包括JAVA的一些基础知识、写SQL查询语句等等。还有要写一个单例类的题,我没想起来怎么定义的,忙发短信找同事求援,幸亏小师父找了一个,让我少丢10分。
上午笔试,下午面试。面试时间比较长,首先面试官先介绍了一下K公司,K公司是做ERP产品的大型公司云云。我还是介绍我做过的项目,尤其是对工作流技术的研究以及在项目中的运用这方面着重多讲,并引起和面试官的一些讨论。气氛还比较融洽,席间我投瞄到我上午的笔试卷子,好像是60多分。面试到了最后,面试官认为我所讲的经历都是项目经历,而K公司是以做产品为主,这其实是一个差别。
面试过后,回去等待结果,过了几日,K公司人力约我和北方区的总经理见面,我也如约而至,其实主要是总经理再和我聊聊期望薪水,再了解一下我过去的经历。关于期望薪水,我给K公司报的是9K,但是我也说可以考虑减少到8K,其实我心里算计的怎么也应该比7K要多。
K公司规模很大,招聘流程也很长,北京公司这边负责笔试面试等工作,最后还要把我的资料送到总公司那边,总公司再进行一下最后把关,我也被告知我需要等待1周左右的时间来等结果。
在这一周里,正好又有家做咨询、技术解决方案的公司找到我。
2.挣开源的钱
姑且给这家公司起名叫P公司好了,公司的发展方向比较独特,利用开源软件给做软件开发的公司提供咨询、技术支持的服务赚钱。
P公司代理了从操作系统到数据库以及web服务器等各方面的开源软件,通过卖许可证、技术咨询等方式挣软件开发商的钱。
可能正是因为我在简历中有“开源”的关键字,又在项目中用过JBPM,所以得到了P公司的面试机会。公司有位副总,人称马总,曾经在美国带过项目,而且巧的是也用JBPM开发过项目,还拿到了一个美国的大奖,9年后回到了祖国。马总相信开源,也很会玩开源的东西。3.与马总的上海之行
和马总交流并且能得到他的一些指导,对我而言也是种收获。在我眼中一些技术高手、大牛们总是高高在上,很难沟通。
马总却很具有亲和力。P公司在上海召开了一个给软件开发商宣讲开源解决方案的大会,到了快开会的时间还有很多人没到场,为了不让已经到的人等的心急,马总上台预热,他称之为“和大家聊聊天”,他的“聊天”方式很放松,做几个小调查,比如问谁知道“开源”,还推出了有奖问答,凡是举手回答问题的还能得奖,使得会场气氛很热烈。
我也跟着去了上海,和马总一块给一家上海的软件公司将开源报表的解决方案,我侧重讲解iReport的使用。由于JasperSoft出了一个管理报表的引擎JasperServer,用于管理报表,权限等信息。马总让我对这方面也进行了解,尤其是在机子上配置好这个软件用于讲解,整了一晚上也没整出来,马总用候机的时间给配了出来。
那天正好K公司给我打电话,商量薪酬的事情,他们给我开了一个非常吃惊的价钱,开的是6K,而我期望能在9K,听到这个价钱我很难接受,因此直接就说这个价格没法接受之类的话,后来想想有点后悔。
凭着用过iReport,做报表的过程讲解的还算到位,但是对如何使用参数、变量这些稍微复杂的地方,我就没太多讲,能看出来有些让马总失望。
在结束上海之行的时候,马总找了个机会跟我谈了一下,我记住了他的一句话,说“你还要再上三个台阶才行”,这句话我觉着是对我的一个十分中肯的评价,虽然工作三年了,也做过一些项目,似乎有了些积累,但是并没在技术上特别精通,而且在沟通方面也没能锻炼的很好。我认为这种技术支持、咨询类的公司需要既懂技术又能讲解、还能懂架构的技术支持人员。4.从开发转变为咨询?我准备好了吗?
我对P公司有好感,主要是两个方面,一个是开源,另一个就是马总,我觉着我如果选择开源作为事业的方向将能引导我走向成功,再加上有马总这样的经验丰富的领导指导、培养我,我觉着我将会有很不错的前途。
但我认为自己还是一名水平不太高的软件开发工程师,还需要用几年时间向架构师、项目经理的方向奋斗才行,而做咨询、技术支持是属于需要依靠很丰富的经验才能做好一种工作,虽然我能快速学习,但还是会缺乏在项目中的实践,很难给客户以很好的支持,最终可能也会让马总失望。
从上海回来后,我和人力谈了我的想法,我说自己还是应该在开发上面多做一些工作,目前的工作可能不适合,把P公司的应聘结束掉了。
5.从做项目转变为做产品,也要付出点代价。
我又赶紧和K公司联系,K公司人力抓住了K公司是做产品的而我是做项目出身的这一差别作为6K待遇的理由,又说让我权衡是进入一个大型的平台以后不断发展,还是为了眼前的待遇而放弃进入大公司。我更看重K公司这样的大发展平台,但是还是希望人力能再提高一些待遇,毕竟我这是在北京工作,刨去税真的感觉“回到了解放前”。
人力让我等几天和总公司协调,最后等来的结果就是,总部不批准我的应聘申请。我很难过,因为我找工作已经从5月20号一直找到了7月20多号了,K公司又是大公司,我后悔从一开始就把不满意薪水的话说给了人力,又忙和人力又沟通看有没有什么补救,因为毕竟北京公司这边认为我还是不错的,可是结果已经出来了,也无法改变了。
如果应聘上了,那种薪酬,也就是从做项目转变为做产品要付出的一种代价吧。6.从做银行业务的软件开发转换为给某家居公司做系统?
这种可以转变我工作方向的机会很多。有一家家居公司B要上ERP系统,用的SAP的ERP,但是有些功能还是要自己开发,因此他们想招一些高级软件工程师。
面试中谈了谈项目经验,走走过场,基本就搞定了。待遇是税前7K。面试完了,我也就决定了,肯定不去。
我想以我目前三年的开发经验,到企业中做信息化的工作,要做到技术总监或者CIO的话肯定也是很难的。因为很多人都是在有了很丰富的软件实施经验后,才跳到非软件公司做企业自身的信息化方面的工作的,我自然还不合适。
7.从开发转变为测试?代价依然很高。
找工作找到现在,出现了没有可选的局面了,有点抓狂,有点绝望。这时候,一家知名公司,神X公司约我面试。和面试官谈了才知道,虽然我投的是这家公司的高级软件工程师,但是他们想找我过来做测试,这个测试不是一般的黑盒测试,要写测试代码、脚本之类的。考虑到如果在这样的大公司做测试也是一种机会,我也乐意考虑这个职位。但是谈到待遇,只比应届生的工资高点,实在是打击,面试官的理由是我对写测试脚本还有网络性能这些测试方面的东西还不了解,还需要学习一段,所以给这个价钱。
事后,我想了,我如果应聘了测试,就是在用我的弱势去应聘,而把我的强项(开发经验)没体现出来,那自然得不到好的待遇,虽然是一个机会,但是我还是希望在软件开发这条道路上继续发展,即使我选择换一种方向,经过自己衡量所需要付出的代价,我还是选择放弃这个知名公司的测试的职位。
第五篇:如何成为出色的程序员(本站推荐)
(一)充分利用MSDN,因为我个人觉得它胜过任何一本编程参考书;
MSDN是Microsoft当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据,让您随时拥有与全世界菁英同步的技术,掌握最丰富的程序开发资源。我经常收到很多朋友的EMAILS,他们所提的问题往往都非常的简单,MSDN完全可以解答这些问题,但他们好象不太喜欢用,这是让我郁闷的地方,是因为英文不好呢,还是没有学会充分利用各种资源来解决问题的方法呢?
(二)提高英文水平,养成多上英文网站多看英文资料多买老外原版英文书;
有关程序员与英文水平的讨论已太多太多,我个人认为要成为程序员,高中的英语水平够了,甚至不懂英语的一些人,也同样可以成为较好的程序员,因为开发工具的发展将是越来越傻瓜,但如果你是仅仅满足于能运用某种工具开发某个软件模块,那是没话说了。真正热衷技术肯乾钻研乐于接受挑战的程序员是不满足于现状的,他们总感觉有太多的未知,于是总在不停地学习,如今信息技术发展得太快,而大部分的技术最先出现的时候都是英文版本的,要几个月或者几年以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典,“万事开头难”,必须有持之以恒的精神,不久你就会发现计算机英语其实很容易的。何况很多英文技术站点确实比国内做得好啊!比如http://www.xiexiebang.com,http://www.xiexiebang.com,http://www.xiexiebang.com等等。
(三)加强自我管理,善于作自我总结,分析自已的优点及缺点。
中国境内百分之八十以上的领导人在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的?
(四)养成良好的文档习惯
程序员大多都不喜欢写文档,我以前也是特讨厌,在我的思想里,所谓的文档就是一些废话,一句话硬是用十句话来代替的无聊透顶,就如同部分中文系男生的爱情表白,明明就是“我爱你”三个字,他硬是把月亮啊太阳啊大海啊高山啊石头啊天使啊乱七八糟的都拉上关系了,尽管听起来浪漫,但在我认为不实用,:),甚至太肉麻了,一个男子汉乾嘛这么罗里罗嗦的……良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱甚至失控。那么如何写文档呢?其实我认为没有统一的标准,虽然国家及一些NB的人总结了很多的模板,但每个人的习惯不同,如果你不加以修改或创新,就套用某个标准,我相信写起来会很吃力及说不清的难受,因此我觉得只要能将你的设计思想及实现算法或步骤描述清楚就是好的文档,我强烈建议广大程序员朋友们在写文档时要善于用图表来说明你的思想,我们不是作家,也可能作文都经常性地不及格,写出五官端正的文章对我们来说可能不容易啊!好好地利用VISIO,ROSE或别的工具来表达你的思想吧!
(五)代码风格要规范,严谨,效率要高。
这个不用说了,所以一定要记住了!不过,这一点有时可能与人的性格有关,如果你是经常丢三落四经常胡子长长经常钮扣扣错经常吃个快餐要一个小时的人,那你在CODING的时候可千万要注意了,CODING是CODING,生活是生活,不要写出的程序也是那样就不好了!
(六)掌握好跟踪调试技巧。
跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来。强烈建议你去看一下老美Everett N。McKay及Mike Wooding写的书<<Debugging Windows Programs>>,你一不定受益匪浅。
(七)养成自我测试的习惯
测试工作应由测试工程师来做,但在你写完一个模块或一个软件时,还是要自已先测试一下,保证不要出现一些低级的错误,何况这些错误让测试工程师看到了,狂扁你一顿,你很没FACES的。
(八)善于交流善于沟通,特别是经常与一些高手交流一下学习的心得体会;
有人说,程序员的性格大多内向不喜欢说话,其实是有些误会了,不是不喜欢而是话不投机,我的脑袋一天到晚都在不停地转,函数,数据,算法啊充满了我的世界,我那还有时间与你谈一些无聊的话题,话要找对人了,才容易谈下去,书上说过“听君一席话,胜读十年书”,你要找的就是这种豁然开朗!现在技术的论坛越来越来,这将成为程序员交流一个重要的地方,也有人说:“读君一长贴,胜读十年书”,:)
(九)阶段性地做一下专题总结
知识要温故而知新,因此我建议程序员要养成阶段性地做专题总结的习惯,比如你这个月学习或在做与多线程有关的模块或项目,那么在你做完后,你就可以好好地总结一下所有与多线程相关的技术,包括理论知识,实践方法以及各种技巧及优秀文章等等,这对你各种能力的提高将有很大的帮助,你试过了吗,如果没有,那就快点行动吧!
(十)要有持之以恒的精神
这是废话,因为我揍不齐十大,所以将它也算上,中国自古以来喜欢号召大众学习某种精神,比如马克思的,列宁的,毛泽东的,邓小平的,雷峰的等,这些精神使社会更安定人民生活更美好,那么程序员要有什么样的精神呢?我不是我说了就算了的,我只是想说明要学好任何一门技术,最好要有持之以恒精益求精的精神,特别是学一些比较抽象比较难的技术,比如VC++,我想它应比别的开发语言都要难学些,或许你已经开始了两年了,但感觉还是不爽仿佛也没掌握什么,这个时候你除了思考一下你的学习方法以外,还必须坚定你的目标及信念!
以上是学好VC++的十大良好习惯,以献给热爱VC++以及想要学习VC++的朋友们
欢迎电驴的爱好者加入我的群:19358895