想想自己写代码已有一年多了,有很多感触和想法,特意写下来让刚入门的程序员避免踩坑。
一、 我适合做程序员吗
这是这个很重要的问题。首先你要知道程序员是怎样的一群人。众所周知,程序员属于高收入群体,个别实力特别强的或运气特别好的程序员,可以轻易的跻身富豪行列,全世界最有钱的人里面,也有不少程序员,比如扎克博格,李彦宏,马化腾等等。但就算当个普普通通的老实程序员,正常的工作三五年,也会有富足的收入。 当然,如果我们老是谈钱,那和戴金项链的煤老板又有什么区别呢?区别还是有的,钱没有人家多。不过我认为事情的关键是生活的态度。有的程序员不修边幅,有的程序员很会打扮,有些程序员大腹便便,有些程序员有人鱼线,这都是小问题,任何群体都会有这样的人。 程序员喜欢一种颇有趣味的黑色冷幽默,他们对于机械,动漫,机器人,飞船,电子电路往往有着特别的热衷。他们不喜欢现实中的争论和谩骂,他们宁愿找个安静的地方写代码,但有些时候,他们也会利用自己的特长做一些恶作剧。 我一直觉得,在骨子里面,程序员都是一群调皮的小朋友。 这个世界有无数传统的行业,在这些行业里面,上升通道几乎被特权和身世给堵死了,要在这些行业里面出人头地,有所作为,就必须精于人情世故,甚至做违心的事情,因为你更多的是和人打交道。 然而程序员是和电脑打交道的,电脑会严格按照指令行事,不会把指令执行错,也不会执行错误的指令,说一是一,说二不三。 整天和电脑打交道的人,你很难想象他会有什么坏心思。 编程是一项脑力活动,需要逻辑思维能力,在文字游戏上面,程序员都是一把好手。而整天被代码摧残,让程序员变的非常聪明,这种聪明并不表现在买菜砍价上面,而是在面对这个复杂多变的世界的时候,这种聪明能够看到更多的可能性。 程序员整天都开着电脑,除了写代码,这些电脑还接受大量的信息,任何新产品,程序员都乐意体验,他们也同样关心这个世界每天产生的新奇事物,这带来的影响是远见和包容的心态。 人们对待新兴的行业,尤其是这个行业太过蓬勃的时候,都会心怀恶意,然而程序员这个群体实在是太友好而可爱了,因此这种恶意转换成了没有什么恶意的调侃,我认为这是程序员的大智慧。但你如果把这些调侃当真,就有点不明智了。 农民种出一万斤大米,工程师建造一座大桥,政客设计政治,法官裁定好坏,医生拯救生命,这些事情意义非凡,但却不是魔法,一千年前的农民也在种大米,一千年前的工程师也在建大桥,一千年前的政客也在设计政治,一千年前的法官也在裁定好坏,一千年前的医生也在拯救生命。 但突然某个时候,一个崭新的行业诞生,这个行业里的人们每天都在创造出意义非凡的东西,他们让资源被更加合理的分配,他们让每个普通人的生活深受影响,这才是魔法。当然,一个医生拯救的一条生命可能比一个有几百万用户的软件更加可贵,但生活但趣味却在后者。 无论任何人再怎么黑程序员,都无法阻止这个行业蓬勃的发展,都无法阻止这群怀着善意和爱的小朋友创造出谁也不会预料到的东西。而这,真是酷毙了。最后一点就是一定要有兴趣,如果你只是为了混口饭吃,劝你还是趁早离开程序员这个行业吧。
二、程序员的内功
万丈高楼平地起,基础是一切的一切,所以要在程序员这个行业深入发展,下面几点要着重培养。
英语必须好
导致国内的技术人员落后于国际的重要原因,不是不够聪明, 而是国内的程序员英文水平不好。 在国内,英语又好,计算机能力又强的程序员,在2001~ 2010年左右,都会被招进 外企。这个情况在BAT等国内互联网公司做大之后,有所好转,但是,我见到的英语好 的程序员,很多走的路线都是:大公司工作 , 出国。 而国内的程序员为什么会比国外技术落后1~2年呢? 这个时间就是 认识到这个技术好(大约1年时间) + 翻译(一年时间) + 出书( 找出版社,出版,大约4个月)的时间。 现在,由于新兴技术越来越多,我们不能再采取“学中文书”的习惯了。 所以,基本要求是: 要么CET6. 过了六级的人,英语肯定没问题的。 要么可以进行一段口语对话。口语是英语听说读写四个能力中最薄弱的环节。 如果这个人的口语是60分,那么阅读可以达到80分。
思路敏捷,清晰
打个比方,我们上学老师讲课的时候,有的人,他的思路跟不上老师。有的人,他往往 能纠正老师的错误,提醒老师下一步的思路。 我们要的,就是后一种人。 思路的敏捷,直接导致程序员是否有“灵气”。 有灵气的人,几乎都是一点就通。 你给他一个方向,剩下的事他都能自己办完。 思路不行的人,让他做事就会让你特别痛苦,他离不开你,你一离开他就几乎没有 进度。 判断一个人思路是否敏捷,清晰,很重要的一点是看他口齿是否清晰,表述能力是否 足够好。
表达沟通能力强
表达和沟通能力强是非常重要的因素。一个软件项目能否做好,完全取决于大家的沟通。 比如说, 这个需求没有说明白 昨天提交的版本为什么没有通过 那个bug昨天修改了,为什么今天又出现了 用户的需求又改变了 我们在开发过程中,绝大部分出现的问题,我们都要与人商量,跟人沟通。 有沟通恐惧症的人是无法胜任软件开发的。而“话痨”程序员就特别难得。而对于不会沟通的人,往往工作就做不好,不受别人的待见。时间一长,这样的人 就容易恶性循环,越不敢跟人沟通。这个问题真的很常见。
计算机基础知识必须要好
我读大学的时候并不觉得操作系统,计算机网络,线性代数,离散数学等等有什么实际用途。所以并没有好好去学,等到bat校园招聘的时候就后悔了,招聘考的问的都是这些知识啊,并不会要求你懂很多实际业务的东西,后悔死了都。最后,在开发过程中,大家不要死记硬背或者死学某些库,看到一个库,大概知道什么意思,然后用的时候再去看,查文档,特别是官方文档。我在网上看到一段评论,觉得很有意思框架编程语言都是幺蛾子,好好学编译原理数据结构算法操作系统计算机网络比什么都强,还有数据库,最后你会发现那些php java c+c#web server 都是渣啊。好好修炼内功就足够了,刚毕业没人要你对框架很了解。。大多数是要你写个算法,写个排序,写个深度优先写个广度优先。。再不然就是面向对象思想以及工程的思想,。。如果真对前端有兴趣,你先学好js吧,ng上手不要太快,准确的说学ng对于你找到好工作,没什么卵用。。。永远要分清楚,什么是变得,什么是不变的。变化的总是容易学的。
三、对于工作上的问题
习惯即刻回报
他不懂得只有春天播种,秋天才会有收获。刚刚付出一点点,甚至还没有付出,就想要得到回报。技术刚刚掌握,能一边百度一边干活了就觉得该拿到多少多少钱了。找工作先想着多少多少钱,入职了没干几个月就想着要加多少多少钱,干了没几个月,薪水要是没涨,就放弃了,准备通过跳槽加薪,不跳槽的话,往往也会因为没加薪而牢骚满腹,工作敷衍了事。 一个程序员的价值,是通过他带给公司的价值体现的。先给公司带来了价值,然后才会反过来在薪水上体现出自己的价值。公司都很现实,很少会为你的潜力买单,在你还没有体现出价值时就给你很高的薪水。 在生活和工作中,一定要懂得付出,不要那么急功近利,马上想得到回报。天下没有白吃的午餐,你想获得什么,就得先付出什么。唯有种下种子,然后浇水、施肥、除草、杀虫,然后才能等来收获。
缺乏学习热情
很少有哪个岗位的人像程序员这样需要持续不断的学习,软件开发的技术日新月异,而每一项技术又往往博大精深,不持续、深入钻研是很难掌握的,更别谈精通了。如果你对一项技术不能深刻理解熟练应用,表现出来的水准仅仅是能干活、还行,那很难说会有公司愿意为“还行”付出大的代价,只有脱颖而出,才可能备受重视。 假如你对学习、掌握、精通技术没有兴趣,面对不断涌现的新语言新技术新框架没有学习欲望,那但就软件开发这个工作而言,你不但眼下不太可能拿到高薪,将来也不会。在这样一个快速变化的时代,只有不断地学习才不会被抛弃。
不够努力
虽然我们都知道努力学习可以改变我们的技能水平,持续努力不懈坚持可以让自己有所建树,可还是有很多人浅尝辄止,三天打鱼两天晒网,搞两下能Run就放下了。 人和人在聪明才智上的差距并没有想象中大,甚至很多时候,从大多数人的努力程度之低来看,根本还轮不到拼天赋。如果两个人的实力半斤八两的话,热情工作努力坚持的人,一定比较容易成功。
畏难
做事拈轻怕重,不愿挑战。殊不知能力就是在不断挑战不断突破自己的过程中历练出来的。在一个公司里面,经常承担高难度任务的程序员,一定是成长比较快的,薪水增长也一定是比较快的。越是困难的事情,越能体现出个人价值,也越能带给个人成长。 万事起头难,不要害怕困难。事情做不好往往不是因为没有能力,大都是由于缺乏恒心。只要不怕困难,坚持前行,一定会有不一样的收获。 事业就像女人,谁去追求,谁就能得手。金钱也一样。
缺乏责任心
工作上不管什么事儿,反正不是自己的事儿,缺乏责任心,干好干不好都无所谓,对交付承诺、对产品质量都不在意,没什么事儿能让他上心。 一个人的责任心如何,决定着他在工作中的态度,决定着其事业的好坏和成败。如果一个人没有责任心,即使他有再大的能耐,也不一定能做出好的成绩来。
消极,抱怨
工作稍有不顺,就怨气沸腾,这个怎么怎么样,那个怎么怎么样,而我怎么就这样,任务不公平,资源不公平,那谁谁不支持我,那谁谁不配合…… 抱怨不能使事情变好,反之,它会让负面情绪蔓延,蚕食你的精力和时间,让你产出更低。成功者永不抱怨,抱怨者永不成功。立刻停止抱怨,早一分钟停止,你就离目标近一分钟。
没有时间管理观念
每个人的一天都只有24小时,人和人的差别就在于如何利用时间上。 有的人每周都有目标,每天都有计划,早上起来会想今天要做的几件重要的事,晚上会回顾今天完成的事,总结干成了什么干坏了什么,还会有计划的学习新知识新技能,这样日积月累不断坚持,每一天都是高效的,每一天都朝着更丰富更完美的自己前进。 而有的人则漫无目的,走哪算哪,到了公司,上午基本做不成事儿,到下午了还不知道要做什么,晚上也发愁如何消磨时间……
为薪水工作
虽然工作的一大目的是获取薪水,养活自己以及供给家庭所需;但是,这只是工作最直接的报偿,同时也是最低级的目标。 如果我们为薪水而工作,将注定我们是短视的,也将注定受到最深的伤害。假如你看不到工资以外的东西,斤斤计较于薪水、福利、职位等,那外界的些微风吹草动就可能让你像浮萍一样飘来荡去,你很快就会失去平衡,失去信心,失去热情,失去平和,进而在工作时总是采取一种应付了事的态度,能少做就少做,能躲避就躲避,觉得只要对得起自己的那份薪水就成了。长此以往,你追求的高薪水反倒得不到。 我们进入一个公司工作,是为了自己,不是薪水也不是别人,比薪水更重要的,是成长和成就自己的机会。我们一定要明白,公司、企业、组织,都是我们锻炼自己、修炼自我的平台,我们不是为薪水工作、不是为老板工作、不是为家人工作,是为实现自我而工作,是为更完美的自己而工作。 唯有志存高远,方能风行天下。 #### 其实不喜欢软件开发
有一部分人从事软件开发工作,并不是因为喜欢,也没有干着干着从不喜欢变成喜欢。他们可能是喜欢软件开发附带的高薪水——平均薪水比其他行业高。人做一件自己不喜欢的事情时,心理上没有亲近感,不会想着怎样把事情做得更好,往往是差不多就成了,不太可能有精益求精积极向上的追求。因为在做不喜欢的事情时,情感上是拒绝的,情绪上是想逃离的,总想着早点儿完事儿拉倒,每一天去单位时不是充满期待,而是各种担忧、烦躁、畏惧,到了单位,稍有困难或不顺心,就会消极、抱怨、抵触、拒绝…… 做喜欢的事,能最大可能发挥一个人的潜能和热情,会最快速地通向成功成就自己。而做不喜欢的事,一开始就注定了事倍功半,最后也往往会是痛苦不堪或半途而废。
作者:cll
转载需注明出处
网友评论