1. 程序员是吃青春饭的吗,可以干到多少岁
作为一个技术老兵,在技术行业内混了十几年了,明显能感觉到目前国内软件开发工作,在某些行业就是吃青春饭般的存在,尤其是表现在互联网公司,而且公司越大加班的疯狂程度越强,互联网公司更加喜欢招收一些年轻人毕竟工资相对低一点,冲劲还足最关键能不惜体力的加班,国内互联网公司大部分做的事情跑马圈地,应用级的开发居多,所以难度不是很高,有了2,3年的工作经验就可以跟着做了,谁的执行力强能够加班更加被公司所喜爱,很多老程序员在互联网公司体验几年基本上就回归传统软件企业了。
很多公司在招聘的时候发现年龄超过35岁就开始有意设置门槛了,毕竟这个年龄段的程序员人生阅历也比较丰富,对于职场上的一些事情也摸得比较透彻,说的不好听就是职场的老油条了,公司出个什么政策这帮人看到比较彻底,不容易忽悠,年轻点的更加容易被接受,所以说成是吃青春饭的职业有点夸张,但一定程度上也能说得过去,国外40多岁继续做研发的环境要不国内还是好很多,但也在一定程度上找工作受到一定的制约,现在过40多岁如果还在写代码肯定被周围的人议论了,都这么大了也没混上个管理职位之类,现在这个年龄段还在一线写代码的数量也不在少数,基本上属于公司顶梁柱存在,绝大部分做着技术管理,并没有完全脱离技术岗位,遇到难点还是上阵去解决问题。
老程序员如何在技术生涯找好自己的方向点?1.尽早向技术管理方向转移
越是拖到最后完成转型形式越是被动,管理是一种学问,不像是玩技术你把自己管理好久万事大吉了,技术类的管理如果在技术能力到位的情况下可以,以技术服人这样无形之中减少了管理的阻力,更加容易让底下的人信服,平时多补一些管理方面的基础。如果有转的想法今早实施,做什么事情都要趁早。
2.将技术进行到底
技术类在职场上的分支有两个主项,一个是管理方向,可以沿着这个路线一直做到副总或者更高的级别;还有一个技术专家方向,对别的事情不感兴趣就想着一辈子能研究点技术,也没有什么大的追求,在很多公司专门设置某个项目的技术专家称号,职位基本上和技术经理持平,算是同一个级别,同样是拿着这个级别的薪水。
技术职位如果技术足够强,可以考虑直接在这个方向一直走向去,无论国内还是国外对于高级的技术专家永远都是持开放的程度,金字塔上层的技术人才毕竟是少数,但也是技术领域一直欠缺的,如果喜欢技术并且干的还不错就可以考虑在这个方向上一直坚持到底。
3.转行做别的职业,闯出另一番天地
很多程序员中间转行挑战别的行业,只要能把一个职业做好一定能够把别的方向给弄好,尝试新的天地未尝不是一个方向,新的方向新的起点新的挑战,可能带来的是新的收获。
作为一个程序员也有随着年龄的增长有一种无形的压力在心头,能做的就是拼命提升自己的技术能力,担心年龄大了淘汰,只能是继续提升技术和管理水平。
希望能帮到你。
很多人都说程序员这个行业就是吃青春饭的,为什么会有这样的问题呢,难道程序员真的感到30岁就要退休了吗,或者必须转行吗?程序员难道不就是敲代码吗,难道年纪大了敲代码就不能敲不动了吗?不是都说程序员靠经验吗,经验越丰富,不就是技术越丰富吗?作为过来人,今天索性没啥事,就和大家一起聊聊这个话题吧。
首先、先说说为什么会有这样的传言,为什么会有这样的说法吧。
第一个 就是很多人在这个行业干久了,从大学毕业到30岁至少也得6,7年了吧,行业做久了很多人自己也会感到厌烦,也想换换新的行业,尝试一下新的岗位,当然转行有风险,所以很多人转行都是转比较靠近的,比如做运维、做产品、做教育、当然走管理路线也是,这些都是比较轻松好转的行业,基本风险不大。
第二个 就是很多做开发公司加班比较多,晚上下班回家比较晚,陪老婆孩子没时间,况且加班熬夜身体吃不消,搞不好把身体搞垮了,而且大部分程序员都是懒得运动,健身的人,作息时间不规律,最后30岁的人居然熬成了快60岁的大爷,这就是为什么很多人都说程序员就是秃顶(这里我要澄清一下不适所有程序员都是秃顶呀,至少我还完好的保留着头发),在这里不得不替这些人伤心3秒钟。最后连娶老婆都去不到,还有很多连说话都说不通的人,表达能力已经到达到了原始 社会 。
第三个 就是很多那种在公司混日子,技术能力差一点的,以为公司就是可以养老的人,技术干不过别人,工资不见长,可以说非常佛系的,在这个行业混了个6,7年,终于待不下去了,压力大呀,老婆孩子一家人的希望呀,最后选择了转行,最后离开的原因竟然是公司不需要这种人了,但是我们想想哪怕是争一口气也不会混到这么差呀。
其实呢,不是说程序员真的就是考吃青春饭,30岁之后就必须的转行,想想原因还是在这些人自己身上,年轻不愿意拼实力,不愿意积累点能量,真正有技术的人,想想公司能放走嘛、高薪难道还差吗,除非那公司真的做的有点过分,亏待功臣,卸磨杀驴呢,自己不争气在前,怎能怪别人呢。
当然加班、熬夜这些都是存在,但是其他行业也不好做,那些高管,有钱的职业经理人,哪一位不辛苦呢,而且其他行业也是一样,老板虽然压榨,但是真正想要福利好的,除非公务员,不然工资很低,所谓功高者后禄,这个不会假。
另外当然也有很多愿意尝试新行业的人,愿意挑战,尝试新的开始这也有很多。总的来说,程序员真的是不是吃青春饭呢,不能一概论之,有经验,有能力的人,高薪,谁愿意走。
绝大多数程序员确实是吃年轻饭。
不管你愿意不愿意承认,等你到40岁之后就知道了。
这里有个界定,从事研发的排除在外,从事开发的包括在内。要注意研发和开发是两个不同的概念。
一般研究所,研究生院中的程序员多叫工程师,这类人是越老越值钱。年纪大经验越多,能力扎实,对做研发突破苦难起到至关重要的意义。
而开发不同,开发更多是面相年轻人来做的,你开发一款软件给60岁的老大爷们,且不说你开发的好不好,老大爷他也不会用。
一般从事开发的程序员在35-45岁时是个分水岭,能力强,有水平能熬到领导层,或者能独当一面,那么就留下来。如果不能基本就被淘汰了。而这部分留下来的人只是少数。
为什么程序员要年轻化?第一,上面说过,开发主要针对的用户是年轻人,那么只有年轻的程序员才知道年轻人喜欢什么爱好什么。让一名60岁的老程序员写一个 游戏 ,能火起来的概率不大。第二,年轻人无牵挂,肯吃苦,能加班熬夜,工资待遇又相对低。上了年纪的程序员家里有老婆孩子需要管,还有父母需要照顾,也没有了年轻时干劲,思想也渐渐和 社会 主流脱钩,并且工资还极高。这个时候如果这个老程序员不能为企业创收,那么辞退一名老程序员,省下的薪水可以在招好几个大学毕业生。
有些话不是空穴来风,也不是无能人的借口,看看各大企业裁员的年龄段就知道了。
只有码农,靠蛮力,用体力而不是用脑力的程序员才是吃青春饭的人!
大多数程序员都认为程序员是个吃青春饭的职业,编程这个事只能干到30岁,最多35岁吧。每每听到这样的言论,都让人感到相当的无语……
有研究者用了最近5年内比较流行的技术Tag,然后用了一套比较严谨的算法来查看那些所谓的“老程序员”是否在新技术上跟上不了,所谓跟不上,也就是这些老的程序员在回答这些新技术上并不活跃。所谓老,就是37岁以上的程序员。
老程序员和年轻的程序员对于一些新技术的学习来说也是差不多的,甚至有些项目还超过了年轻的程序员:
1、程序员技术能力上升是可以到50岁或60岁的。
2、老程序员在获取新技术上的能力并不比年轻的程序员差。
由于如今许多的年轻程序员太浮躁了,才会说30岁是程序员的顶峰。
其实,对于大多数人来说,如果还没有编程到30岁,还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。
在我身边,就有一些年龄在40以上,并且还对技术保持热衷的“老程序员们”,他们无一不是身怀绝技,在公司身居要职或高管,成为公司最宝贵的技术保障。
工龄超过三十年了,做了一辈子程序员,单位还在不断招人,所以还有事情做,没有坐冷板凳,不存在什么危机。。
公司也很重视加班,但我早就过了干体力活的阶段,领导并不管我加不加班。进度慢了领导就会说你需要人吗。
学新技能么,还好吧,java,c语言这样的经典可以用一辈子,重要的是有编程思维,学习并使用哪种语言很容易。
做一辈子程序员肯定是可以的,只是很多人不愿意而已。可能男人野心大了些吧,编程一辈子觉得很丢脸,总想往上爬。。身为女性就没那么多想法,人到中年,有人愿意雇我们有口饭吃就满足了,老老实实干活的人,老板不会不要的,换过几次工作,并没有遇到年龄障碍,也没有刻意去经营人脉,你的表现如何,别人都是默默看在眼里的。。
回顾一下,有几点经验,一是不管坐哪个职位,不能丢掉编程这个技能,做了很多项目的负责人,框架自己搭,核心模块自己写,技术掌握在自己手里,项目完成有保障。。项目结束了,就要去当普通程序员,有一手过硬的编程技能,还是挺受欢迎的。二是不能总是生活在一个舒适圈里,要不断学习新知识,迎接新的挑战,每次接受新的项目或任务,一定要有所突破,不能只是单纯的重复。
我也算是这个行业的一位老兵了,从13年到现在也快八年了,程序员其实是挺费身体的,熬夜加班家常便饭,所以我觉得程序员是在吃青春饭,互联网公司基本上都存在一个问题就是看谁下班的晚,不管你在公司有没有在做事情,只要你下班比其他人晚那么你的绩效就一定不会差。至于我现在的话已经没有经常加班了,偶尔发一下版,上下班都比较规律,这就是我还在坚持的原因,程序员能干到多少岁这全看你自己,我身边三十多岁依然在干程序员,虽然程序员吃青春饭,但是你自己也可以选择往中层或者其他岗位去转,肯定不能再像初出校园那样,不然身体迟早吃不消的,秃头,脂肪肝,亚 健康 ,近视,腰椎间盘脱出这些都是普遍存在的,大家不要觉得程序员的工资就一定非常的高,这也要看地方,像重庆程序员的工资还真不如有些工种。
大多数程序员认为程序员是吃青春饭的工作。编程只能干到30岁,最长可达35岁。我经常听到这样的话,都让人感到适当的无语......
今天,我们来谈谈这个老话题......
首先,我们来看一篇论文《Is Programming Knowledge Related to Age?》(英文版)。本文是来自北卡罗来纳州立大学计算机科学系的两个人,他们在StackOverflow.com上对用户进行了相关的数据挖掘。一些数据出来了。(StackOverflow.com上的数据被公开,任何人都可以使用它进行分析和核算,所以这篇论文的实际情况还可以。
让我们来看看他们的年龄分布图:我们可以看到程序员年龄的正常分布(高点大约是25岁,但中点大约是29岁)然后,计算每个人的月营业额,这样你就可以找到用户的真实生动的时刻,这样便于计算程序员的真正才能。 (总声望/活泼时刻),我可以得到他每个月均匀得到的Reputation。我们可以看到程序员的才能从25岁开始上升,并且直到50岁才会开始下降。因此,程序员不吃青春饭的。只有码农,依靠蛮力,使用武力而不是脑力的程序员才是吃青春饭的人。
年龄大可以跟上新技能吗?该论文的作者使用了过去5年更受欢迎的技能标签,然后使用更谨慎的算法来检查所谓的“老程序员”是否跟上新技能。所谓的跟不上,也就是说,这些老程序员并没有积极回答这些新技能的问题。所谓的老,就是是37岁以上的程序员。
我可以看到老程序员和年轻程序员在学习一些新技能方面相似,有些甚至超过了年轻的程序员。
论文的结论是:
1、程序员技能可以升至50或60岁。
2、老程序员在获得新技能方面并不比年轻程序员差。
结论
从上面的数据可以看出,由于现在很多年轻程序员都太浮躁了,据说30岁是程序员的巅峰。事实上,对于大多数人来说,如果你没有编程到30,你就不能成为“合格的”程序员。因此,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。
这个问题,我应该比较有发言权,大城市呆过2年然后回了小城市,5年程序员转行当老师。大部分程序员是吃青春饭的,因为大部分程序员干技术,只是停留在应用层面,没有足够的平台,5年后很难再有质的提升。技术有了提升后,还需要有足够大的平台才能撑的起你的薪资。我离开程序员行业的导火索是见到某公司,辞退唯一的一个45岁架构师。当然如果你可以不要求高薪,放平心态,我相信很多公司还是愿意要大龄程序员的。
到35岁还在基层那基本上就是没希望了,随着年龄增长,思维能力不如年轻人,如果不能升上去带团队,那只能一直做基层码农。
程序员三十以后就老了,一是技术更新太快,二是经常性熬夜加班,三十以后转管理岗,搞技术吃不消了。
2. 一般程序员的工资是多少
一般程序员的工资大概就是1万~12000左右。如果平时有加班会更高。
3. 一个好的程序员至少应该具备哪些条件
楼上的几位显然误会我的意思了,我并不是说不应当写文档加注释注重团队精神,看看下面的一篇文章,那位三天就写出UNIX的他需要写文档注释和团队精神吗,他用不着。哪个高手没有一点傲气和自信,他之所以敢对用户说:拿到你想要的,然后滚蛋,你已经很幸运了!是因为他有这个资本。天才本就不循规蹈矩,那样他就不叫天才了。
MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder,
and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。
Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还
是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据
说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前
身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在
Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN
TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封
喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP
Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿
个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你
怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯
伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把
Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同
事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯
发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI
的主要作者之一。
John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄
聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实
战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC
上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein,
然后再接再励,doom, doomII, Quake...每次都把3-D技术推到极限。J哥哥的简历上说
自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人
是很幸福的,因为各大图形卡厂家一有了新产品就要向他“进贡"
,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听
取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以
上,也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过
呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还
是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们
叫“达分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意
思。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别
人“Da Vinci”就不知所谓乐。嗯,扯远了,打住。
David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发
员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然
后说:“who can't write an OS in a week?",也是牛气冲天的说。顺便说一句,D爷
爷到NT3.5时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。
D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。 日常交谈fuck不离口。
他面试秘书时必问:"what do you think of the word 'fuck'?" ,让无数美女刹羽而
归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite
word"。于是她被录取乐,为D爷爷工作到NT3.5发布。
Don Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,
学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到 Anders Hejlsberg,
或者学Linux不知道Linus Torvalds一样,不可原谅啊。为了让文章完整,就再罗唆几句
吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别
人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高
爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞
出了个 Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比
赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n
美分奖励等等都是耳熟能详的,偶就不饶舌乐。
顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可
谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没
有学究气,不失轻快跳脱。记得几年前读Concrete Mathemathics,时不时开怀大笑,让
老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那
完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我
们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带
谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。
高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他
捐献了好多作品,都可以在网上看到,比如着名的Mathematical Writing,MMIXWare,
The Tex Book等,更不用说足以让他流芳百世的Tex乐。
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche
老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主
要作者(另一个是大牛人Rob Pike,
前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是
计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山
仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是
他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不
知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,
于是C在随后20年成就了不知多少豪杰的梦想和光荣。
Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很
快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell
Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX
代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清
净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只
好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码
里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器
编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译
器。
(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系
统 。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开
发 Unix的猛人,UTF-8的设计人。他还在美国名嘴David
Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的
是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设
计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix
Programming Environment 和 The Practice of Programming 的作者之一。如果初学者
想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写
出了Unix下第一个基于位图的窗口系统,并且是着名的blit终端的作者。当然了,罗伯
伯还是号称锐意革新的操作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多
少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is
Irrelevant,痛斥当下系统开发的不思进取,固步自封的弊病。虽然这篇文章是罗伯伯
含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越
来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的
革新越来越少。
就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不
遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道
了。具有超强容错和负载平衡能力的分布式文件系统GFS
(现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统
也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的
说),更不用说处理海量并行计算的各式google服务了。Rob在System Software
Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到
他错了,应为google关心。google网络了大批功成总是试图吸取系统研究的最新成果。
想必Rob Pike在google很幸福。愿他做出更棒的系统。
Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M.
Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前
身是B,而B是Ken Thompson一手做出来的)。两人1983年分享图灵奖,是有史以来少数几
个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,
所以就成了唯二的乐) 一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛
不衰近30年,至今生机勃勃,DMR此生可以无憾的说。
D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有
成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和
逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成
形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D
不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。
Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来
人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接
受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来
领导自己的团队在1995年和1996分别推出了Plan9和Inferno操作系统,又用多少人知道
呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond
在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁
知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次
采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当
然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意
识奠定了C广为流传的基础。
最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜
欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就
是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开
发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也
就长留你我心中乐。
P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。
据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写
得最少;但说到编程,Ken爷爷才是当之无愧的老大。
Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短
路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。
其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,
无非是戴爷爷在1956年为了展示新计算机
ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最
短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒
太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙
着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专
业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表
在Numerische Mathematik的创刊号上,权为捧场。:-)
EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较
深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。
戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工
作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要
知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情
愿,但经不住项目负责人Bram和Carel的轮番 “吹捧”:我们知道实时中断让您工作变
得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,
接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博
士论文,顺利戴上博士帽。
让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日
没夜地工作了8个月,就搞出了Algo60,也因此获得了 1972年的图灵奖。因为Algo60,
戴爷爷发表了一篇石破天惊的文章:Recursive
Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,
所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。
而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员
都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科
学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是
专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴
爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的操作系
统,并培养计算机科学家。几年后,THE Multiprogramming
System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统
没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小
组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就
喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作
来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷
从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。
EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。
Anders Hejlsberg,微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手
做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作
品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当
如Anders的说。李维的<>里已详细讲述了Anders的传奇故事,我就不用费舌了:
http: //java.mblogger.cn/iexploiter/posts/1505.aspx
Artima上有Anders谈C#的系列访谈。MSDN上有一段Anders导游的录像 。有兴趣可以去看
看牛人的丰采。
4. 程序员到底能干到多少岁35岁真的是程序员的分水岭吗
我个人认为程序员可以干到退休;35岁的确是大部分程序员的分水岭。
总的来说,只要你身体允许,程序员干到多少岁都可以。至于分水岭问题,只有在大公司才有,中小公司没有35岁分水岭这一说法。
5. 做程序员需要什么学历
程序员因为是从事程序开发、程序维护的专业人员,所以通常需要大专学历及以上的学历。
一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
(5)程序员小才扩展阅读:
程序员通常要求熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术;负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广;负责对业务领域内的技术发展动态进行分析研究。
6. 如何辨别一个程序员水平的高低
1.自己介绍项目,看对项目的提炼总结能力(也是抽象能力);
2.自己印象最深的bug,可以知道大概技术深度;
3.设计模式提问,看有没有学习方法;
4.语法基础问题,多线,分布,安全等问题,看知识面广度;
5.智力问题,看反应能力,分析问题思路等
上述五步基本可知是否是一个好程序猿
计科专业从事软件开发十几年了,主要在浏览器内核领域研究的比较多,最近在研究服务器后台方向,辨别程序员水平高低主要看做出了什么产品,如同现在的程序员主要是项目经验,简历上写的一堆项目经验都是面试的时候主要提及的问题。经常在面试中会问两个关键点:一个是做过什么项目;一个是在项目组中承担什么职务,毕竟参与过和做的多少程度是不一样的,这些都是可以通过一些具体的细节检测出来,问题越具体越是容易看出水准,具体的东西不是能够编造出来的。
有很多技术公司直接不通过笔试,仅仅通过简单的面试就确定工资水准了,最简单的测试程序员水平的直接用笔试的方式,笔试可以把一些细节量化,尽量的细节化也是能测试出程序员基本功的,但这种基本用来测试初级程序员的,很多高级的程序员看到有笔试直接就抬腿走人了,因为有些程序员在一个方向做的时间太长了,很多基本功都忘得差不多了,所以笔试可能不过关,现实中很多程序员笔试不过关,面试还可以,也一样可以做项目说的就是这类人,起码这算是非常优秀的程序员。
有很多公司采用谷歌的方式,直接采用上机写代码的方式检验程序员水平,这种方式比较直接,但在现实中可能消耗的时间以及面试官的精力,目前只有极少数的公司用这种方式,国外的公司用这种方式比较多,这种看基本功非常有效。通过代码可以看到编码习惯以及算法的设计上,都能直接看的出来。
普通的程序员直接看项目的经验,高级的直接看做过的产品,特别是产品主要设计人员,这就是程序员内心的自豪感,毕竟作为一个程序员起码要有自己设计开发的产品,也算是不白做一个程序员,在程序员的职业经历中如果能经历过一个产品从开始设计的初稿到最后推向市场,如果是完整的经历,将是一种巨大的财富,只要经历过一次都会对产品设计有一个比较层次的认识,这种能力需要靠直接的面试语言表达来展示出来,谈下对产品的认识以及产品稳定性性能等方面的总结,能到这个层面起码是高级软件工程师的级别。
当然有些程序员内在的东西不是靠语言或者写代码看出来的,因为一个优秀的程序员不仅仅是代码能力以及框架能力,还有几个非常重要的能力
程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
希望能够帮到你。
自认为不是一个好的面试官,因为我认为在这么短的时间内,准确地衡量出来程序员水平的高低是有比较大的难度的,并且我有多次看走眼的时候,面试的时候觉得能力还不错,但是入职工作了一段时间之后,编程能力不忍直视。
工作之后接触一段时间,我会从这么几个方面观察他们,以判断技术能力的高低和发展潜力。
能不能出活儿、能不能debug
能不能把开发任务按时按质量地完成,当然是最主要的衡量标准了:
解决问题的方法
在开发过程中,难免会遇到没有见过的问题,有些程序员遇到问题无从下手,而优秀的程序员,自有一套解决问题的方法。
分析问题、流程设计的思路
有人会认为,程序员的主要工作就是敲代码,上班大部分时候都是在敲代码,其实并不是这样:
总结问题和改进问题的能力
好的程序员,相同的问题不会犯第二次,差的程序员,总会在一个问题上栽跟头:
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
不请自来,一介码农路过,留下些看法。
程序员主要是有四种综合能力,也就是debug 能力、 performance分析、 保护性编程和 投入产出比。
仅仅独立完成日后必然成高手?在这里不能说一棒子打死,至少对于很多人来说,能独立完成是没什么问题的,有的是因为对业务熟悉,有的是真的基础扎实。但怎么说呢,程序员和浏览器打交道是最多的,现在这个互联网时代,遇到的大部分问题网络都是可以解决的,也就是普通程序员 + 网络 = 超级程序员。 但很多人也没明白具体的原理,甚至都是这个项目抄抄那个项目抄抄的,久而久之虽然解决了平时的业务,但进步的空间却很少,甚至止步不前,写出来的代码也可能存在很多坑,所以,仅仅能独立完成任务的话,离高手还有比较远的一段距离。
如何辨别高手程序员?也就是结合我们一开始列举的那四个能力进行判断。不同级别的程序员,在那综合能力面前,强弱也是不同的。例如在奔溃的或者其他性能调优问题上,即使是面对大量复杂的代码,在信息不全的时候也会一步步的分析,抽丝剥茧缩小范围,最终定位根本原因
,并且最终给出一个好的方案。
如何成为高手程序员?
当然还有看他摘了帽子是否秃顶这样的笑话,就再不赘述了。
第一阶段(黄金):会用编程语言实现需求,比如现在的业务系统,都会找一些会搬代码的人来拼工作量,也就是能自己独立基于搭好的框架实现crud常规操作。
第二阶段(铂金):除了crud,还会有一些自己踩过坑的经验,知道如何处理一些常见问题,或者可以基于搜索引擎快速解决一些异常情况。
第三阶段(钻石):能解决一些疑难杂症和会通过debug部分源码类库查看到这些疑难杂症是如何引发的,并通过编码解决这些问题,还能进行一些局部的性能优化,类似某个系统接口缓慢可以单独去优化。
第四阶段(星耀):会基于整个系统进行设计和规划,根据业务特性选择合适的框架,从源头控制开发遇到问题的频率,可以自主的搭建框架并完善机制,了解各个组件工作原理。
第五阶段(王者):小说里面总是说练武功的永远比不过创造武功的,同样的道理,用框架的也往往不如写框架的,所以写框架的这类人单独分层。
第六阶段(荣耀):其实这个阶段不应该列入进来,因为这类人往往不编码的,只是给出思想;像Hadoop这种框架就是基于人家发表的一些论文(bigdata)进行编码实现的,这类人注重的是思想和算法,区块链,大数据,云计算等等概念的创造和理论的支撑是这类人提出来的,这些人才是真正影响行业走向的人。
程序员的水平高低,不是靠语言或外在表现就能看出来的,不是看他会多少技术、参加过多少项目、写了多少博客,而是看他在实际业务场景中解决问题的能力,尤其是面对一些特别复杂的问题,或在高强度、高压工作状态下解决问题的能力与态度。
技术可以通过学习掌握,但是解决问题、定位问题的能力却不是一蹴而就。大家可能会说,“解决问题的能力”这个太宽泛了吧,可以更具象化吗,有具体的测量方法吗?简单整理了以下几点供参考。
会写出满足需求的代码,早就不是评判程序员水平的标准了。代码编写既要满足业务需求,同时还要考虑后续的软件维护,说得通俗些,既要自己爽,也要别人爽。一个优秀的程序员,会致力于写出更简单、更效率、可读性强、扩展性强的程序代码。
程序员在日常工作中,需要理解各式各样的业务需求,所以这就需要程序员具备一定的逻辑思维能力。可以说,逻辑思维是程序员的灵魂,因为每一行代码都是程序员逻辑的体现。
项目着急上线,发布时出现问题?
业务高峰时段,系统宕机了?
业务催、运营催、用户催、老板催!
各种形态的bug,各种着急的心情,背后无数支眼睛盯得内心慌慌......
这些都是一位合格程序员所需要面对的日常。不同的程序员,在解决问题的方法、效率、质量等方面,都各有千秋。一个经验丰富的程序员,能够扛住各方压力,在复杂条件下找到核心问题,通过抽丝剥茧的分析来找到产生问题的原因,并快速进行应对处理,事后及时复盘总结,减少同类问题出现的概率。
随之互联网的发展,越来越多的人涌入程序员这个赛道,竞争日益激烈,加之新技术层出不穷,更新迭代快,程序员所使用的语言、框架、模式都会发生天翻地覆的变化。如果不主动学习,你很快就会被落伍淘汰。
这种其实在面试过程中能体现出来,沟通主要是技术沟通,以及和客户之间的沟通,所有技术都不是闭门造车就能搞定的,沟通能让事情推进起来更加顺畅,包括和产品经理之间的流畅的沟通也显得非常重要。程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
线上出bug了,第一时间响应、处理;
团队项目进度紧张、人手紧缺,主动补位;
又或者,在项目推进过程中如果只是关心自己模块内容,对于整个项目置之不理,只守着自己的一亩三分地。
随着时间轴的拉长,你会发现,有此f技术能力不是最好的,甚至不如你的小伙伴,最后做到了技术主管或经理、甚至更高职位,这里面除了技术实力,还有一个叫“责任心”的东西。
结束语
判断一个程序员的水平高低,核心是其解决问题的能力,而解决问题的能力养成,需要扎实的底层基础来支撑,要综合其代码质量、项目经验、框架能力、逻辑思维等等多方面,不能单看某一方面。
而对于1-6岁的程序员来说,想要成为一个高级程序员,变得越来越优秀,唯有持之以恒去学习、积累、实践、修炼。
----end----
一:50岁的时候,头发还是黑色的浓密的。
二:赚到的钱能保证家人快乐的生活。
三:当公司不要你的时候能成功转型。
其他的例如编程经验、写代码厉害啊什么的根本不值一提。
这就是程序员的面试嘛 :-)
(1)是否能熟练使用所用编程语言的主要功能;
(2)是否知道用合适的数据结构解决问题;
(3)是否知道基本的算法,并且用这些算法解决问题;
(4)只看少量代码的话,从变量命名和程序结构一般能够判断是否是新手;
(5)给出具体问题,能够用程序解决,能考虑到所有的边界条件;
(6)考虑程序的可扩展性,可维护性;
再往高一点走,就需要
(7)面对模糊的问题能够分析并且找到细节和具体的需求;
(8)知道利用已有的库,架构和工具等来解决新的问题,而不是什么都自己实现;
(9)能发现并改进已有程序中的瓶颈;
(10)对整个大项目的程序架构有很清晰的了解,知道相互之间的依赖,以及知道为什么采用这样就架构;
(11)给一个大的项目,能够对整个项目的程序架构和组件进行合理的设计,考虑并行性,低延迟,大数据量等各种需求和应对方式。
带领团队已多年,项目数十个,对判别程序员水平的高低,我有自己的看法,欢迎大家一起交流。
1.代码质量。
优质的代码,首先是经得起考验。静态分析工具过一遍,无错误,无警告。当然警告部分需要人工重审,因为静态分析工具不一定完全正确。过了这一关,重要的还须过测试关,少Bug或无Bug的代码,才是好代码。优质的代码带有技术气质和艺术气质。阅读起来,有一种赏心悦目的快感,即工整美观,干净利落,又蕴含着理论常识,运用技巧,精准到位。
2.表达能力。
3.文档能力。
文档形式包括但不限于PPT,文字,图表,音视频。文档内容包括但不限于API说明,工具手册,项目事项,技术论述,陷阱总结,方案展示,指导手册。文档要求必须是满足公司或部门的规范和格式,否则五花八门的,不利于交流和传承。
以上3点,是我量化判断程序员水平的标准,仅供参考。相比水平,其实我更看重程序员的态度,执行力,时间观念,自学力等等,也是很重要的团队作战能力,也可以说是程序员水平的考量吧。
谢谢大家。
7. IT培训分享刚入行的程序员小白如何才能快速成长
每个大牛都是从小白成长过来的,对于刚刚步入职场的程序员来讲,面对身份的转变和还未熟悉的工作,都难免会有不适应,对自己未来的成长也会比较迷茫。
No.1
大部分的程序员从小白到大牛都是要经历一个循序渐进的过程,没有一蹴而就的成功,程序员的成长也是分阶段的,而每个阶段的侧重点又都不一样。
很多人总想一口吃成胖子,可往往就是这种急躁的心理,反而使得自己更难静下心来夯实基本功,适得其反。
要知道,成长从来就不是一件简单的事情。那么对于IT小白来说,IT培训http://www.kmbdqn.com/介绍怎样才能在更短的时间内成长为一名优秀的程序员呢?
No.2
首先,要制定详细而明确的阶段性目标。工作时如果有一个目标,会帮助你找到努力的方向,对自己的事业发展也很有帮助。而越详细、越明确的目标,其可实施性就越高,这也能使你找到短期奋斗的动力。
其次,要利用空闲时间多学习。技术实力始终是一个程序员能否往前走的关键,没事的时候多看代码,保持对代码的敏感度。只有看的多了,琢磨的多了,才能培养出好的代码审美感。
除了要保持对代码的敏感度以外,还要让这种敏感度成为你写代码中的利器。因此,你需要勤写代码,多做总结,不断优化自己写的代码。
最重要的是,要注重在项目中去锻炼自己。项目开发是帮助程序员快速成长的一个有效途径。实践出真知,只有多实践,才能发现自己在实际的项目开发中存在的缺点和不足,找出来并及时改正,将为自己积累下十分宝贵的经验。
No.3
不知道大家有没有听说过“空杯心态”?
“空杯心态”简单来说就是:如果你的杯子是空的,新东西就比较容易进去;反之,如果你的杯子已经满了,新东西就进不去。
举例来说,可能会有一小部分自以为是的同学,他们在刚从学校出来时思维较为固化,自己的东西太多,顽固又不肯放弃,新东西自然难以学进去,成长自然就慢。而具有空杯心态的同学,他们会适时清空自己,甚至有意识清除脑中顽固区域,虚心主动学习,渴望更多知识,学到的自然就会多。
因此,要想快速成长为一名优秀的程序员,就要学会保持空杯心态。
随着技术更迭速度的不断加快,IT行业对程序员的学习能力要求也变得更高。只有时刻保持对学习的热忱,保持空杯心态,才能早日成长为一名优秀的程序员。同时,要坚持自律,懂得自我约束。越是在特殊时期,保持学习的自律能力就越重要!
8. 程序员未来前景如何大龄程序员出路在哪里
年龄大的普通程序员,将来的出路无非就是以下三个:
1、稳定地待在一家公司,有一定产出效率,成为一颗螺丝钉,不出彩也不出丑,就像之前棉纺厂的工人那样,直到这家公司不行了,找另一家,继续做个普通一兵。其实这事儿和几十年前的工人一样,只是时代不一样,职业的名字变了。
2、寻找相对优势,到稀缺你技术、能力、经验的地方,找到存在感。比如一线城市回退到二线、三线;比如互联网顶级公司的普通程序员进入小公司;比如互联网行业的普通程序员进入传统行业有软件部门的公司。
3、转行,想干什么干什么去,很多人认为,一个 35 岁以上的程序员相比较一个 20来岁的毕业生,精神状况、身体状况必定是不如刚刚大学毕业的年轻人,所以要尽早转行。那么问题来了,程序员是吃青春饭的吗?程序员的职业发展到底如何呢?
首先,我觉得时至今日,相比其他职业,程序员仍然是一个投入产出比比较高的职业。程序员不是一个“吃青春饭”的职业,而是一个常青的职业。程序员其实也并没有我们想象中那么累,很多互联网公司的工作环境、工作氛围、员工福利都是非常不错的:弹性工作,定期团建,免费健身;一日三餐、零食饮料应有尽有。对于头脑灵活、思维敏捷,但还没有明确职业目标的理工科毕业生而言,把程序员作为职业生涯的起点,应该会是一个不错的选择。以北京为例,应届毕业起薪在 8000-10000 元,比其他职业高出不少。程序员现在小蜜蜂云工作了解很多远程可办公的,全职兼职都是有的,可供的选择还是比较多的。
程序员在职业生涯第一个阶段,通常是 3-5 年。这个阶段要以职业探索为主,脚踏实地写好每一行代码。只有快速学习和成长,掌握过硬的专业技能,这样才能在职场立足,走好未来的路。现在程序员的职业领域已经细分到了令人发指的地步,比如:大数据工程师、云计算工程师、某某语言工程师、系统架构师、web 前端工程师、嵌入式软件工程师、数据库开发工程师等等。
9. 程序员要具备什么技能
一名合格的程序员需要掌握哪些技能呢?
熟练掌握开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
对操作系统有一定的了解
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
懂得网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
明白DCOM/CORBA/XML/WEB Services存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
不要将软件工程与CMM分开
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
拥有强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。