㈠ 顶级的程序员是怎么样的
顶尖程序员常说:“这个我以前写过一个模块,我找找,很快。“简直是没有对比就没有伤害!
有人认为,普通程序员用复杂的代码解决简单的问题;而高级程序员能把复杂的问题简单化并用简洁的代码去实现。在w3cschool看来,顶尖程序员和普通程序员至少在以下6个方面大有区别。
1、文档能力
“文档是第一生产力”,这一点在程序员的世界是毫无异议的。看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他们tutorial,他们的getstarted,他们的reference文档写的多么的易懂。
如果要获得更高的报酬,文档是绝对关键的因素。有文档就有沟通,就有交易。搞技术的容易忽视文档的力量,也因为写文档十分困难,更多程序员选择舒适区,习惯写下代码,但正因为如此,妨碍了不少程序员的进阶。
2、解决BUG的效率差别
普通程序员可以利用搜索引擎(网络)寻找答案,经常性找不到好的解决办法,然后更换技术方案!顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。
3、表达能力
表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。
对于累积人脉,当你的阅历越来越丰富,人脉对你的帮助也越来越明显。
4、优雅和美观的抽象能力
普通程序员和顶尖程序员之间的区别在于优雅和美观的抽象能力。好的系统通常是要做到两个方面才合格,其一是好用,其二是好看。但是令人遗憾的是,普通程序员仅仅从实现的角度进行堆砌。顶尖程序员往往能够更进一步,经常会去思考用户在操作这个功能的时候,到底还会做什么事情。
所以,顶尖程序员和普通程序员区别就是是否拥有用户意识,是否敢于直面用户。好用,好看一直是软件能够被普遍采用的前提,因此,我们有必要学会抽象优雅。
5、面对如何开源社区态度
普通程序员几乎没有在开源社区混,这也导致经常对新技术发展关注度低。而顶尖程序员则是拥抱开源社区。
6、面对功能点
普通程序员:立马开始构思自己如何实现脑海里出来一个方案。
顶尖程序员:发现功能点很普通github上面早已经有非常多的解决方案,着手根据业务选择一个最适合最优的方案
㈡ 改变世界,为什么程序员却得不到足够的尊重
一直以来,网上充斥着程序员的诉苦声,各种高薪短命之类的论调络绎不绝。加上之前“美国2012年最佳职业榜单软件工程师居首”的新闻恐怕更让国内不少“码农”羡慕嫉妒狠。
但实际上,在美国普通的程序员也不是那么光辉的存在,更多地是被当作怪胎(geek)和书呆子(nerd)看待。最近,Hacker News上就有一位外国程序员诉苦,并获得大量网友的反馈和分析,大家也可以一起讨论下为什么程序员没有受到足够的重视,以及我们应该怎样做。
经济因素
正如网景创始人Mark Andreesen所说,软件在我们的日常生活中正变得越来越重要!相比之下,程序员——软件的主开发和维护人员,却没能得到相应的薪金和名声,这是为什么?
等一下,程序员的工资还不高?的确,相比于全国平均工资程序员的确算得上是高收入人群,但是你还需要考虑很多程序员都有很高的学历!跟其他高学历职位相比,程序员的工资又怎么样呢?
想象一下,一个35岁左右的Google高级工程师(当然,如果你不喜欢Google,也可以类比一下其他顶尖IT公司,比如IBM或者微软等等),基本上可以算得上是顶级程序员了,工资大概在15万美金左右,这并不能使其在美国买一个很好的房子,过上特别好的日子。相比之下,一个优秀的医生在职业生涯的巅峰可能能拿到40万美元(在美国,医生是个非常不错的工作,待遇和社会地位都很高),更不用说银行家和企业管理层了。
很多情况下,某些工作的工资被夸大了。比如银行家,确实有很多成功的银行家的财富多得惊人,但他们只是少数人。另外不得不提的是,他们中也有部分人身负巨债!以下数据来自美国薪资统计网站payscale.com,这里去掉了薪资最高和最低的10%的人群的数据。(点击文字链接可以查看详细数据分布)
医生0-$176,588
律师$38,806-205,790
软件工程师$35,670-$106,331
高级软件工程师$33,500-135,486
高级商务分析师$61,308-$120,547
系统管理员$23,489-$93,996
计算机程序员$28,842-$103,900
管理顾问$47,730-$201,428
银行投资者$34,382-$121,696
会计师$29,252-$71,884
高级会计师$36,151-$79,557
这里还有几位网友指出:医生其实分很多种类,每类医生工资差距相当大,比如皮肤科的医生平均薪金在$200,000左右。另外实习医生或者是资历浅医生的跟资深医师的薪金差距是非常大的!
另一方面,很多人认为程序员可以在创业中发大财(估计他是把比尔·盖茨和马克·扎克伯格这样的案例当作是普遍现象了)。实际上,所谓的“程序员可以在创业中发财”只是“企业家在创业中发财”,没有哪个“程序员”在创业成功后还是一个纯粹的程序员(盖茨和扎克伯格也只是在创业初期参与编程,之后就主要负责公司运营之类,只能算是“企业家”)。
社会、文化因素
当然,金钱不是生活的全部。从社会地位的角度考虑,程序员又怎么样呢?据我所知几乎所有的大公司都是由MBA运作,而不是程序员。程序员在公司(主要IT企业)做着苦力活,却生活在剥削链的最底端。当然,我们应该考虑到社会分工:好的管理层能够使企业的营收翻倍,律师能够帮助你避免很多不必要的损失(优秀的律师通常可以通过避税等合法手段规避大量无谓损失),而程序员的主要工作和其他工人一样,主要是生产产品。
和别人聊天时,如果你提到自己是一名医生或者律师,甚至是推销员,人们至少会对你的生活感兴趣。相反,如果你是一个程序员,人们常常会立刻失去兴趣,甚至,哪怕只是聊到了科学和IT,那么会瞬间被贴上怪胎(geek)的标记。当然并不一定所有不了解IT的人都讨厌IT,也有程序员网友表示他自己就很受欢迎。
没有哪个父母会这样教导自己的孩子:“只要勤奋和努力,总有一天你将能够成为一名优秀的程序员!”在欧洲,程序员的地位甚至不如流水线上的工人。在英国,你的父母通常会更希望你从事律师或者医生这样体面的工作。当然这不一定涉及到尊重,大多数家长丝毫不懂IT,但他们却能理解医生和律师是做什么的。IT相比于这些传统职业,只是一个新兴的行业,所以也不难理解为什么会被当作怪胎了。(计算机最早就是出现于美国,即使如此还会有这么多IT“文盲”,有理由相信这是一个“世界性的问题”!相信有不少程序员朋友都有被拉去安装操作系统或是修电脑吧!)
程序员是英雄?资本家可以创造就业,医生救死扶伤,律师和法官维护正义,但程序员似乎不会对人的生命/生活有直接影响(不得不强调一下,很多应用虽然是程序员创造,但普通人的理解更多的是某个公司的产品)。所以程序员很难把自己突出出来。
政治因素
程序员是顶级的政府顾问?在印度,如果你不是一个工程师,那么你什么都不是!这里,编程行业是中产阶级的默认工作;而在美国,一个人做编程却是由兴趣决定。在印度,很多政客都曾经是软件工程师;而在美国,据我所知,没有一个国会议员有过任何编程经验。也许正因为政客中缺乏程序员,才导致了社会对IT行业工作的不理解甚至误解。
性格因素
另外被提到比较多的就是性格了。有很多程序员性格孤僻,或者说不善于打交道。这也许是因为很多人因为不善于人际交流才选择的编程行业,或者是因为程序员花太多时间来和计算机交流导致与人沟通能力的退化。无论如何,计算机行业的从业人员中不善于与人交流的比例比大多数别的行业都要高!
结论
主要不外乎两点:一个内在,一个外在。内在的是因为程序员性格决定的,如果你希望别人尊重你,让别人知道你是个值得尊重的人才是长久之计,人与人之间的隔阂难免会造成偏见。外在的因素就比较多了,但我相信都是可以通过内在的改变而慢慢变化的,如果每个程序员都能让周围的人了解程序员到底是做什么的,偏见一定能够被消除。无论如何,只是抱怨不会有任何改变,多多交流才能消除偏见!Enjoy coding,enjoy life!
㈢ 程序员竞争力太大了,怎么样才能提升自己呢
1、程序员要学会主动学习,要不断地更新自己的技能,提高自己的“基线”。
2、程序员程序员要学会自我营销,在业界打造自己的个人品牌,要有品牌意识。
3、程序员要善于对付中断。如果你在跟别人结对编程,或者你用了TDD,那么保存上下文信息就变得非常简单。
4、程序员要重视单元测试。要知道单元测试的重要性,把测试代码和产品代码看的一样重要。
㈣ 如何看待这句话:“程序员是世界上少有的能改变世界的
知识就是力量”
培根说这句话的时候,英国刚刚处于干掉无敌舰队的志得意满中,似乎没有需要太多的知识来做到这些。此时距离牛爵士出生45年,第一台蒸汽机100年,第一台铁甲战舰下水两个世纪,第一台电脑三百五十年。任何一个大概能在脑海中画出指数函数形状的人,都可以尝试感受一下过去四百年的社会发展速度,套在指数函数模型上,从而切实的体会这知识种力量是何等令人窒息般的强大。
现在,在这个曲线的最前端,就是互联网对知识和思想的放大。所有的概念和交互结构以一种迷幻的,难以理解的有序相互勾连错落在这张网上,如同一张张多米诺骨牌,或者一颗颗黑白棋棋子一般。而一个懂得这张网的程序员,很有可能能找到那颗最关键的棋子,一翻之下,就能反转整个棋盘。
这个棋子可以是yahoo,amazon,google,阿里巴巴,facebook,也可以是你,我,或者任何一个痴迷这个世界,尝试过翻了好几个以为有用却不曾撼动大盘的棋子的人。每当大家觉得格局确定了,总会有那么一两个程序员走出来,翻动那个真正能彻底改变棋盘的子。过去的很多传统行业都经历了从新兴到高速发展再到稳定继而沉闷的各个阶段。如同海上贸易,钢铁,石油,化工,机械,半导体等等。然而互联网和这些如此的不同,以至于经过了快三十年的发展,依然不断涌现出挑战你世界观的产品和概念。
改变世界虽然仍然很困难,然而从未如此轻易!
㈤ 如何做一名优秀的程序员
首先就是你的目标就不明确,你先要确定自己打算向哪方面发展
当好一名合格的程序员不仅要有扎实的基础知识,还要多思考,多实践,勤看书,更要有团队合作精神,平时多和别人交流,俗话说:“三人行必有我师”,多上网看看一些资料,看看别人对同一问题的看发会有很大的启发,要知道不是你一个人在写程序而是和大家一起写程序,注重团队的力量!编程是一种艺术,要好好的发挥团队的力量把它做的漂亮,完美。
勤奋联系,多写一些程序,然后在根据程序代码多想想用多种方法去测试运行它`实习基地给我们提供了实际做一些项目的机会`我会借这个机会多学习`多思考,多实践。多看一些相关的书,不断提高自己。
我觉得做一名程序员是很难的,特别是做一名合格的程序员就更要严格要求自己,增加团队合作能力,不断提高自身水平。
1.1 程序≠软件
现在很多人以为程序就是软件,软件就是程序。事实上,软件和程序在20世纪80年代时,还可以说是等同的,或者说,在非pc领域里它们可能还会是等同的,比如说某个嵌入式软件领域,软件和程序可能是等同的。但是,在pc这个领域内,现在的程序已不等于软件了。这是什么意思呢?
1. 软件发展简述
在20世纪80年代的时候,pc刚诞生,这时国内还没有几个人会写程序。那么,如果你写个程序,别人就可以拿来用。这时候的程序就能产生价值,这个程序就直接等同于软件。
但软件行业发展到现在,这里以中国的情况为例(美国在20世纪80年代,程序已经不等同于软件了),程序也不等同于软件了。因为现在会写程序很容易,但是你的这个程序很难产生什么样的商业意义,也不能产生什么价值,这就很难直接变成软件。要使一个程序直接变成软件,中间就面临着很高的门槛问题。这个门槛问题来自于整个行业的形成。
现在,你写了一个程序以后,要面临商业化的过程。你要宣传,你要让用户知道,你要建立经销渠道,可能你还要花很多的时间去说服别人用你的东西。这是程序到软件的一个过程。这门槛已比较高了。
我们在和国内的大经销商的销售渠道的人聊天时,他们的老板说,这几年做软件的门槛挺高的,如果你没有五、六百万做软件,那是“玩”不起来的。我说:“你们就使门槛很高了。”他说:“那肯定是的。如果你写个“烂”程序,明天你倒闭了,你的东西还占了我的库房,我还不知道找谁退去呢。我的库房是要钱的呀!现在的软件又是那么多!”
所以,如果你没有一定的资产的话,经销商都不理你。实际情况也是这样的,如果你的公司比较小,且没什么名气,你的产品放到经销商库房,那么他最多给你暂收,产品销不动的话,一般两周绝对会退货。因为现在经销商可选择的余地已很多了,所谓的软件也已经很多了。而程序则更多,程序都想变成软件,谁都说自己的是“金子”。但只有经受住用户的检验,才能成为真正的“金子”。
这就是美国为什么在20世纪90年代几乎没有什么新的软件公司产生的原因。只是原来80年代的大的软件公司互相兼并,我吞你,你吃我。但是,写程序的人很多,美国的程序变软件的门槛可能比我们还高,所以很多人写了程序就丢在网上,就形成了共享软件。
2. 共享软件
共享软件是避开商业渠道的一种方法。它避开了商业的门槛,因为这个行业的门槛发展很高以后就轻易进不去了。我写个程序丢在网上,你下载就可以用,这时候程序又等于软件。共享软件是这样产生的,是因为没有办法中的办法。如果说程序直接等于软件的话,谁也不会轻易把程序丢到网上去。
开始做共享软件的人并不认为做它能赚钱,只是后来用的人多了,有人付钱给他了。共享软件使得程序和软件的距离缩短了,但是它与商业软件的距离会进一步拉大。商业软件的功能和所要达到的目标就不是一个人能“玩”得起来的了。这时的软件也已不是几个人、一个小组就能做出来的了。这就是在美国新的软件公司没法产生的原因。比如netscape网景是在1995~1996年产生的新软件公司,但是,两三年后它就不见了。
1.1.1 商业软件门槛的形成
1. 商业软件门槛的形成
商业软件门槛的形成是整个行业发展的必然结果。任何一个行业初始阶段时的门槛都非常低,但是,只要发展到一定的阶段后,它的门槛就必然抬高。比如,现在国内生产小汽车很困难,但在20世纪50年代~60年代的时候,你装4个轮子,再加上柴油机等就形成汽车。那时的莱特兄弟装个螺旋桨,加两个机翼,就能做飞机。整个行业还没有形成的时候,绝对可以这样做,但是,到整个行业形成时,你就做不了了。所有的行业都是这样的。
为什么网站一出来时那么多人去挤着做?这也是因为一开始的时候,看起来门槛非常低,人人都可以做。只要有一个服务器,架根网线,就能做网站。这个行业处于初始阶段时,情况就是这样的。但这个行业形成后,你就轻易地“玩”不了了。
国内的软件发展也是如此。国内的软件自从软件经销商形成以后,这个行业才真正地形成。有没有一个渠道是判断一个行业是否形成的很重要的环节。任何一个行业都会有一个经销渠道,如果渠道形成了,那么这个行业也就形成了。第一名的经销商是1994年~1995年成立的,也就是说,中国软件行业大概也就是在1995年形成的,至今才经历8年时间的发展。
有一种浮躁的思想认为,中国软件产业应该很快就能赶上美国。美国软件行业是上世纪80年代形成的,到现在已经发展了20多年了。中国软件行业才8年,8年才是一个懵懂的小孩,20多岁是一个强壮的青年,那么他们的力量是不对等的。但也要看到,当8岁变成15岁的时候,它真正的能量才会反映出来。
2. 软件门槛对程序员的影响
现在中国软件行业正在形成。所以,现在做一个程序员一定要有耐心,因为现在已经不等于以前了。你一定要把所有的问题搞清楚,然后再去做程序。
对于程序员来说,最好的工作环境是在现有的或者初始要成立的公司里面,这是最容易成功的。个人单枪匹马闯天下已经很困难了。即使现在偶尔做两个共享软件放在网上能成名,但是也已经比较困难了。因为现在做软件的人已经很多了。这也说明软件已经不等于程序了,程序也不等于软件。
程序要变成软件,这中间是一个商业化的过程。没有门槛以前,它没有这个商业过程,现在有这个行业了,它中间就有商业化的过程。这个商业的过程就不是一个人能“玩”的。
如果你开始做某一类软件的时候,别人已经做成了,这时你再决定花力气去做,那么你就要花双倍的力气去赶上别人。
现在的商业软件往往是由很多模块组成的,模块是整个系统的一部分。个人要完整地写一个商业系统几乎是不可能的。软件进入windows平台后,它已经很复杂了,不像在dos的时候,你写两行程序就能卖,做个zip也能卖。事实上,美国的商业编译器也不是一个人能“玩”的。现在你可能觉得它是很简单的,甚至linux还带了一个gcc,且源程序还在。你可以把它改一改,做个vc试一试,看它会有人用吗?它能变成软件吗?即使你再做个界面,它也还是一个gcc,绝对不会成为visual c++那样能商业化的软件。
可见,国外软件行业的门槛要比中国的高很多了。我觉得我们中国即使再去做这样的东西,也没有多大的意义了。这个门槛你是追不过来的。不仅要花双倍的力气,而且在这么短的时间内,你还要完成别人已经完成过的工作,包括别人所做的测试工作。只有这样,才能做到你的软件与别人有竞争力,能与它做比较。
1.1.2 认清自己的发展
如果连以上认识都不清楚,很可能就以为去书店买一本mfc高手速成之类的书,编两个程序就能成为软件高手。就好像这些书是“黄金”,我学两下,学会了vc、mfc,就能做一个软件拿出去卖了。这种想法也不是不行,最后一定能行,但要有耐心,还要有机遇。机遇是从耐心中产生的,越有耐心,就越有机遇。你得非常努力,要花很多的精力,可能还要走很多的弯路。
如果你是从mfc入手的,或是从vb入手的,则如要做出一个真正的能应用个人领域的通用软件,就会走非常多的弯路。直接的捷径绝对不是走这两条路。这两条路看起来很快,而且在很多公司里面确实需要这样的东西,比如说我这家公司就是为另一个家公司做系统集成的,那我就需要这样的东西,我不管你具体怎么实现,我只需要达到这个目标就行了。
任何软件的实现都会有n种方法,即使你是用最差的那种方法实现的,也没有问题,最后它还是能运行。即使有问题,再改一改就是。但是,做通用软件就不行了,通用是一对多,你做出来的软件以后要面向全国,如果将来自由贸易通到香港也好,通到国外也好,整个产品能销到全世界的话,这时候,通用软件所有做的工作就不是这么简单了。所以说,正确的入门方法就很关键。
如果你仅仅只是想混口饭吃,找个工作,可能教你成为mfc的高手之类的书对你就足够了。但是,如果你想做一个很好的软件,不仅能满足你谋一碗饭吃,还能使你扬名,最后你的软件还能成为很多人用,甚至你还想把它作为一个事业去经营,那么这第一步就非常关键。这时就绝对不能找一本mfc或找一本vb的书学两下就行,而是要从最底层开始做起,从最基本做起。
1.2 高手是怎样练成的
1.2.1 高手成长的六个阶段
程序员怎样才能达到编程的最高境界?最高境界绝对不是你去编两行代码,或者是几分钟能写几行代码,或者是用什么所谓的可视化工具产生最少的代码这些工作,这都不是真正的高手境界。即使是这样的高手,那也都是无知者的自封。
我认为,一个程序员的成长可分为如下六个阶段。
第一阶段
此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。
第二阶段
此阶段能精通基于某种平台的接口(例如我们现在常用的win 32的api函数)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。
第三阶段
此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑”。
第四阶级
此阶段能直接在平台上进行比较深层次的开发。基本上,能达到这个层次就可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行vxd或操作系统的内核的修改。
这时已经不再有语言的束缚,语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。一般来说,从第三阶段过渡到第四阶段是比较困难的。为什么会难呢?这就是因为很多人的思想变不过来。
第五阶级
此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段以后,能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是ms word这样的大型软件,只要有充足的时间,也一定会设计出来。
第六阶级
此阶段也是最高的境界,达到“无招胜有招”。这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的。也就是“手中无剑,心中也无剑”。
此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用。这就是真正的大师级的人物。这时,win 32或linux在你眼里是没有什么差别的。
每一个阶段再向上发展时都要按一定的方法。第一、第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习。
要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境。例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段。但是,有些人到达第三个阶段后,常常就很难有境界上的突破了。他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能。其实,这时如果遇到大的或难些的软件,他们往往还是无从下手。
现在我们国家大部分程序员都是在第二、三级之间。他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,完成一些软件的模块。
但是,也还有一大堆处在第一阶段的程序员,他们一般就能玩玩vb,做程序时,去找一堆控件集成一个软件。
现在一种流行的说法是,中国软件人才现在是一个橄榄型的人才结构,有大量的中等水平的程序员,而初级和高级程序员比较少。而我认为,现在中国绝大多数都是初级的程序员,中级程序员很少,高级的就更少了。所以,现在的人才结构是“方塔”形,这是一种断层的不良结构。而真正成熟的软件人才结构应该是平滑的三角形结构。这样,初级、中级、高级程序员才能充分地各施所长。三种人才结构对比如图1.1所示。
图1.1 三种人才结构对比
1.2.2 初级程序员和高级程序员的区别
一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不同的。比如,在初级程序员阶段时,他会觉得vb也能做出应用来,且看起来也不错。
但到了中级程序员时,他可能就不会选择vb了,可能会用mfc,这时,也能做出效果不错的程序。
到高级程序员时,他绝对不是首先选择以上工具,vb也好,vc也好,这些都不是他考虑的问题。这时考虑的绝对是什么才是具有最快效率、最稳定性能的解决问题的方法。
软件和别的产品不同。比如,在软件中要达到某个目标,有n种方法,但是在n种方法中,只有一种方法或两种方法是最好的,其他的都很次。所以,要做一个好的系统,是很需要耐心的。如果没有耐心,就不会有细活,有细活的东西才是好东西。我觉得做软件是这样,做任何事情也是这样的,一定要投入。
程序员到达最高境界的时候,想的就是“我就是程序,程序就是我”。这时候我要做一个软件,不会有自己主观的思路,而是以机器的思路来考虑问题,也就是说,就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序。这一点如果不到比较高的层次是不能明白的。
你设计程序不就是你思考问题,然后按自己的思路去做程序吗?
其实不是的。在我设计这个程序的时候,相当于我“钻”入这个程序里面去了。这时候没有我自己的任何思维,我的所有思维都是这个程序,它这步该怎么走,下步该怎么走,它可能会出现什么情况。我动这个部分的时候,别的部分是否要干扰,也许会动一发而牵全身,它们之间是怎么相互影响的?
也只有到达这个境界,你的程序才能真正地写好,绝对不是做个什么可视化。可视化本身就是“我去设计这个程序”,而真正的程序高手是“我就是程序”,这两种方法绝对是不同的。比如,我要用vb去设计一个程序,和我本身就是一个程序的思维方式,是不一样的。别人也许觉得操作系统很深奥,很复杂,其实,如果你到达高手状态,你就是操作系统,你就能做任何程序。
对待软件要有一个全面的分析方法,光说理论是没有用的。如果你没有经过第一、第二、第三、第四这四个阶段,则永远到达不了高境界。因为空中楼阁的理论没有用,而这些必须是一步一步地去做出来。
一个高级程序员应该具备开放性思维,从里到外的所有的知识都能了解。然后,看到世界最新技术就能马上掌握,马上了解。实际上,技术到达最高的境界后,是没有分别的。任何东西都是相通的,只要你到达这个境界以后,什么问题一看就能明白,一看就能抓住最核心的问题,最根本的根本,而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功。
从程序员本身来说,如果它到达这一步以后,他就已经形成了开阔的思维。他有这种开放性思维的话,他就能做战略决策,这对他将来做任何事情都有好处。事实上,会做程序后,就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质。这时你碰到任何具体的问题,只要给点时间,都能轻而易举地解决。实际上,对开发计算机软件来说,没有什么做不了的软件,所有的软件都能做,只是看你有没有时间,有没有耐心,有没有资金做支撑。
这几年,尤其是这两三年,估计到2005年前,中国软件这个行业里面大的软件公司就能形成。现在就已经在形成,例如用友,它上市后,地位就更加稳固了。其他大的软件企业会在这几年内迅速长大。这时候,包括流通渠道、经销商的渠道也会迅速长大。也就是说,到2005年以后,中国软件这个行业的门槛比现在还要高很多,与美国不会有太大的差别。此时,中国软件才真正体现出它的威力来。如果你是这些威力中的一员,就已经很厉害了。
别人可能知道比尔•盖茨是个谈判的高手,是卖东西的高手,其实,比尔•盖茨从根本上来说是个程序高手,这是他根本中的根本。他对所有的技术都非常敏感,一眼就看到本质,而且他本身也能做程序,时常在看程序。现在他不做董事长,而做首席设计师,这时他就更加接近程序的本质。因为他本身就有很开阔的思维,又深入到技术的本身,所以他就知道技术的方向。这对于一个公司,对他这样的人来说,是非常重要的。
如果他判断错误一步,那公司以后再回头就很难了。计算机的竞争是非常激烈的,不能走错半步。很多公司以前看上去很火,后来就
销声匿迹了,就是因为它走错一步,然后就不行了。为什么它会走错?因为他不了解技术的本质在哪里,技术的发展方向在哪里。
比尔•盖茨因为父母是学法律的,所以他本身就很能“侃”,很有说服力,而他又是做技术的,就非常清楚技术的方向在哪里,所以他才能把方向把握得很准确,公司越来越大。而别的公司只火一阵子,他却火了还会再火。就算微软再庞大,你如果不把握好软件技术的最前沿,一样也会玩完。就像intel时刻把握着cpu的最新技术,才能保证自己是行业老大。技术决定它的将来。
所以,程序员要能达到这样的目标,就要有非常强的耐心和非常好的机遇才有可能。事实上,现在的机会挺好的,2005年以前机会都非常大,以后机会会比较小。但是,如果有耐心的话,你还是会有机会的,机会都是出在耐心里。我记得有句话说“雄心的一半是耐心”,我认为雄心的三分之二都是耐心。如果你越有野心,你就越要有耐心,你的野心才有可能实现。如果你有野心而没有耐心,那都是胡思乱想,别人一眼就能看穿。最后在竞争中,对手一眼就看到你的意图,那你还有什么可竞争的?
1.2.3 程序员是吃青春饭的吗
很多人都认为程序员是三十岁以前的职业,到了三十岁以后,就不应再做程序员了。现在的很多程序员也有这种想法,我觉得这种想法很不对。
在20世纪80年代末到90年代初,那时软件还没有形成行业,程序员不能以此作为谋生的手段时,你必须转行,因为你年轻的时候不用考虑吃饭的问题,天天“玩”都可以,但是以后就不可能了。
据我了解,微软里面的那些高手,几乎都是四五十岁的,而且都是做底层的。他们是上世纪70年代就开始“玩”程序的,所以对于整个计算机,他们是太清楚了。现在有些人主观臆断地希望微软第二天倒闭就好了,但那可能性太小了。因为那些程序员是从cpu是4004的时候开始,玩到现在奔腾iv,没有哪一代东西他们没有经历过。
你知道他们现在正在玩什么吗?现在正在玩64位的cpu。你说你普通的程序员,有这个耐心吗?没有这个耐心,你绝对做不了,你也绝对做不了高手。他为什么能做?因为他不仅是玩过来的,而且他还非常有耐心,每一步技术他都跟得上,所以对他来说,没有任何的难度和压力。
因为计算机技术没有任何时候是突变的。它的今年和去年相差不会很大,但是回过头来看三年以前的情况,和现在的距离就很大。所以说,如果你每年都跟着技术进步的话,你的压力就很小,因为你时刻都能掌握最新的技术。但是,如果你落下来,别说十年,就是三年,你就赶不上了。
如果你一旦赶不上,就会觉得非常吃力;如果你赶不上,你就会迷失方向;如果你迷失了方向,你就觉得计算机没有味道,越做越没劲。当你还只是有个思路的时候,别人的产品都做出来了,因为你的水平跟别人相差太远,人家早就想到的问题,你现在才开始认识。水平越高,他就看得越远,那么他的思维就越开阔;水平越低,想的问题就越窄。
64位cpu是这个十年和下个十年最重要的技术之一,谁抓住这个机会,谁就能抓住未来赚钱的商机。cpu是英特尔设计的,对这一点他肯定清楚。举例来说,如果从64位的角度来看现在的32位,就像从现在的角度去看dos。你说dos很复杂吗?当你在dos年代的时候,你会觉得dos很复杂。你说现在的windows不够复杂吗?windows太复杂了,但是你到了64位的时候再去看windows,就如同现在看dos一样。
整个64位系统的平台和思维方式、思路都比现在更开阔,打个比方说,现在的windows里面能开n个dos窗口,每个dos窗都能运行一个程序。到达64位的时候,操作系统事实上能做到开n个x86,开n个windows 98,然后再开n个windows 95都没有问题,系统能做到这一步,甚至你的系统内开n个windows nt都没有关系。这就是64位和32位的差别。所以,微软的那些“老头”,四、五十岁的那几个做核心的人,现在正在玩这些东西。你说微软的技术它能不先进吗?是linux那几个玩家能搞定的吗?
微软的技术非常雄厚,世界计算机的最新技术绝对集中在这几个人手里。而且这几个人的思维模式非常开阔,谁都没有意识到的东西他早就开始做了。现在64位的cpu都出来一二年了,你说有什么人去做这些应用吗?没有,有的就是那几个unix厂商做好后给自己用的。
所以,追求技术的最高境界的时候,实际上是没有年龄限制的。对我来说,现在都三十三了,我从来没有想过退出这行,我觉得我就能玩下去,一直玩到退休都没有问题。我要时刻保持技术的最前端,这样的话对我来说是不困难的,没有任何累的感觉。
很多人说做程序不是人干的事情,是非人的待遇。这样,他们一旦成立一个公司,做出一点成绩,在辉煌的时候马上就考虑退出。因为他们太苦了,每天晚上熬夜,每天晚上烧了两包烟还不够,屋子里面简直就缺氧了,好像还没有解决问题。
白天睡觉,晚上干活,那当然累死了,这是自己折腾自己。所以,做程序员一定要有一种正常的心态,就是说,你做程序的时候,不要把自己的生活搞得颠三倒四的。如果非得搞得晚上烧好多烟才行,这样你肯定折腾不到三十岁,三十岁以后身体就差了。
事实上,我基本上就没有因为做程序而熬夜的。我只经历过三次熬夜,一次是在学校的时候,1986年刚接触计算机时,一天晚上跟一个同桌在计算机室内玩游戏,研究了半天,搞着搞着就到了天亮,这是第一次。然后在毕业之前,在286上做一个程序。还有一次就是超级解霸上市前,那时公司已吹得很大了,那天晚上没法睡觉。
一般来说,我也是十二点钟睡觉,第二天七点就起了。所以说,只有具有正常的生活、正常的节奏,才有正常的心态来做程序员,这样,你的思路才是正常的,只有正常的东西才能长久。搞疲劳战或者是黑白颠倒,时间长久后就玩不转了,玩着玩着就不想玩了。
㈥ 程序员跨界还能从事哪些你意想不到的职业
当然,我们有权利选择跨界,并尝试任何一个新的领域,可以是与电脑相关的行业,也可以是电脑无关的行业,即使没有了电脑。程序员思维也深深印在我们脑海中,我的看法是程序员的技能,并不一定全部都是从电脑中获取,工作中生活中甚至是与人交际的时候,我们都有可能获取意外的收获,峰回路转更加充实我们的技能体系,适当的改变一下现状或许可以额外得到一些的东西!
3、彻底颠覆运输行业,传统的交通工具,速度终归有极限,科学家们也都在思考一种能够突破物理极限的运输工具,希望能够接近光速,甚至是超越光速,一旦实现又是一个重大突破!如果PDT技术能够实现呢?假如我现在在深圳,我朋友在北京,我泡了一壶碧螺春想跟他分享,我只需要将这杯碧螺春通过我的电脑传输给他就可以了,通过网线传输!传给他之后,他只需要将这杯碧螺春的数据进行实体还原就可以了,传输所需要的耗时,就看我这杯碧螺春的数据量有多大了,以及他的网速有多快!
㈦ 程序员在中国,只能成为程序猿吗,可以改变世界吗
看你有没有能成为改变世界的能力。在世界范围内,真正能改变世界的程序员也是凤毛麟角。
君不见外国的程序员成千上万,除了那几个改变世界的,对世界造成重大影响的,剩下的也都是沦为了程序猿。
不过你要看清,能够改变世界的人的背后都有一个强大的团队,这些团队也是有这些被笑称为程序猿的人组成的。与其说是几个人改变世界,不如说是由这个团队,有许多人一起努力才能成功的。
真正改变世界的就是广大程序猿,那些为众人所知的凤毛麟角,只不过是领头羊而已。
真正把草原吃光的是整个羊群,而不是几只领头羊。
当然,外部因素也很重要,在中国这个大环境下要达到改变世界的程度,有很大困难。中国人讲“木秀于林,风必摧之”,都讲低调。还有其他的困难,比如说专利保护什么的。
但是,你要记住,只要树够强大,够粗壮,你和你的团队够团结,水平够高,就像一句话说的那样“在绝对实力面前,一切阴谋诡计都是笑话”。所以,努力吧,骚年!
㈧ 程序员这份工作未来的发展前景广阔吗
当然是前景广阔,毕竟人类目前的科技发现的进步是飞速的。只是现在可能有点儿趋近于饱和,但是只要人类攻克了某一个技术难关。那么需要程序员就要像雨后春笋一般,争先恐后的冒出来。
就像简简单单写某个程序都有可能成为爆款一样。就更不用说软件产品研发。
其实有我刚刚说的这种想法的人,其实已经犯了一个根本性的错误。
就是把十年后的程序员工作效率等同于现在的程序员效率。
我们想想一个程序员工作了十年,已经对这些业务熟悉的不能再熟悉,
还会是当年那个调试代码调试半天的年轻人么?
如果你说是,只能说明你这十年什么都没学到。只是在浪费青春。
在程序员届一直流传着这样的传说:
有一个七十多岁的程序员,一辈子是一名程序员,却让比尔盖茨敬佩有加。
这个人叫做戴夫·卡特勒(Dave Cutler)。
戴夫·卡特勒今年已经七十四岁了,却依然是一名程序员。
他没有队伍,不做经理,但是他在公司的职位比大部分副总裁还要高。
据说,有一次某一个队伍预测一项工程要数月完成,他看不过去,两天,一个人就完成了...
所以你看,程序员也不一定是青春饭。更多的原因其实是自己懒。
只要对一份工作保持着热情,其实也没有什么青春饭的说法。再老,依旧能做得很好。
㈨ 如何成为一个牛逼的程序员
如果要想成为一个厉害的程序员,涉及到的方面比较多。
首先要了解计算机的组成原理、结构体系,还要熟练掌握多种编程语言,以及常见的算法。
还需要熟悉各种软件知识:网络、图形图像、数据结构、编译原理等
同时熟悉相关的专业知识,这个得看所在行业了。如在电力行业的软件需要对电力调度、保护设备等了如指掌。
这些,需要投入大量的时间进行学习。需要毅力才可以实现,不是说说就行的。
㈩ 问道掌门人|何小鹏:程序员改变世界
[汽车之家行业]?广州亚信是一家“神奇”的公司,“微信之父”张小龙、“UC之父”何小鹏都曾在这里工作。
2004年,程序员何小鹏转身创业者,UC踩中移动互联网风口,十年后被阿里收购。一个程序员的“造富”故事到这里终止。
2014年,小鹏汽车诞生;这些过往,由此成为另一篇故事的序章。
颠覆将分为两个阶段。未来5-10年是“第一阶段”,自动驾驶是这一阶段重点,依靠基础设施、政策支持、技术改进,高级别辅助驾驶落地,解放用户双手;10-15年是“第二阶段”,智能座舱将成为重点,交互体验、应用生态成为产品决定性差异。最终,智能汽车将成为“移动终端、储能单元、数字空间”。
在颠覆到来之前,车企首要任务,是从体系层面做好准备。很多企业不会做、不敢做,小鹏希望给汽车行业做示范,“有了领头羊之后,学习者会非常多”。
“我们希望用数据驱动智能汽车变革,最终创造更美好的出行生活”,成为中国汽车“引领者”,是何小鹏的“野心”。
何小鹏最佩服的企业是华为和特斯拉。前者改变了中国高科技产业,后者改变了全球汽车产业。“程序员”何小鹏也想成为一名改变者,摆在他面前的,是改变中国汽车产业的挑战和机会。
■改变的意义
为什么要改变?除了那些宏大的意义,何小鹏的答案是为了开心。让员工开心,何小鹏的办法给他们发钱;让自己开心,对他来说创业是最佳答案。“找到让自己开心的东西很难,但找到了就很重要”。
“创业意味着探索未知,需要很大的勇气”,张京宇认为,如果不是发自内心热爱,迈出这一步很难,取得成功更难。小鹏离成功还很远,想超越特斯拉,何小鹏预计要10-15年。乔布斯说:“过程就是奖赏”,小鹏这段旅程,对何小鹏来说又何尝不是?(文/汽车之家蒋平平)