优秀程序员必须知道的七点

来源:互联网 发布:淘宝权哪个平台直播 编辑:程序博客网 时间:2024/04/30 10:53
引子:作为程序员,我们经常很困惑:到底自己适不适合做程序员,要怎样才能成为一名好的程序员,为什么别人会对我们有这样的看法,我们真的都是一群很自傲内向的人么?
 
一、一定要保持健康积极的心态,多与别人交流和沟通
      很多人认为,程序员不需要很有口才,甚至不需要很会沟通,似乎程序员在他们眼里就是一群成天只会和电脑打交道的呆瓜。只有面对显示器,双手放在键盘上的时候,才能看见程序员的魅力。这实在是上天和我们开的一个天大的玩笑,诚然当你每天的工作就是让cpu按人的指令做事情时,你哪还有更多的时间和别人闲聊呢,我们要反复地测试,反复地寻找bug,反复地熟练技能。。。所以请原谅我们少了一些和朋友同事甚至是和亲人的沟通,这实在是没有办法的事。但这并不意味着,我们就是一群不会交流和沟通的呆瓜。计算机再厉害,运算能力再强,那也始终是人思想的产物,更何况更多的时候是我们教计算机思考,而不是计算机折磨我们!技术在不断更新,IT行业每天都在发生日新月异的变化,这些变化的最终目的始终是人们为了满足自己的需求,iphone、Google、mp3、canon。。。围绕着以人的需求所进行的软件开发、黑客攻击、数据库集成。。。这些始终需要以人的思维习惯和行为准则为参照,而计算机开发活动中不可或缺的一环就是需求分析,这个过程需要大量地和用户进行沟通和交流。即使只是项目组中负责技术部分的开发成员,他设计程序时也要清楚地知道客户的需求,他同样需要和上级和同事不断交流和沟通,否则他的工作在团队中很可能是没有价值的。因为他做的东西,不符合要求。
     当然,沟通和交流的重要性远不止于此,每个人都需要交流和沟通,因为人是社会的一部分,而社会是由许许多多的人组成的。
 
二、学会甄别、筛选和整合信息
     信息时代的来临,让我们无所适从。试想,你现在几乎可以生活在虚拟的网络世界,而不用与任何人进行实际的交流,网络购物,网络新闻,网络游戏,网络聊天。。。还有什么事情不能在网上做呢?作为一名程序员,注定每天都要和这些东西打交道,究竟该对网络有一个什么样的认识?实际上我们面对的网络就是一个庞大的信息库,我们需要了解什么信息,只要通过网络,它就会提供给我们,只是信息不一定真实有效,需要我们自己去甄别真伪。信息也有可能是零碎的,不符合我们的要求,需要我们自己去整合。这时候,就需要有能迅速辨别真伪、整合信息的能力,因为如果我们没有这种能力,势必会在这个过程中耗费大量的时间,这往往是得不偿失的。试想,你搜到某条信息花了半个小时,而这条信息你可能只需要打个电话问一下某个朋友,几十秒就可以搞定了,你难道不懊恼吗?能迅速从一大堆信息中找到自己最想要的那一条,应该以此为目标。
 
三、学会克制自己,抵制诱惑
      网游的出现一度让不少青少年沉溺其中、深受其害,家长们也因此视网络为毒瘤,禁止自己的小孩上网,甚至不让他们沾一点点和网络有关的边。这似乎不是妥当的做法,青少年本身对周围的事物(特别是不熟悉、不知道、不了解的)怀有强烈的好奇心,一味采取封闭保守的措施,很难起到根治的作用。事实上,许多青少年之所以会走上这条不归路,很大程度上还是要归结到家庭教育的缺失上来,因为网游这种东西说白了就是让孩子的某种心理得到了满足,而这种满足是父母没有给的或者甚至可以说是因为种种原因父母没法给的。同样的道理,对于程序员来说,这同样关系到自己的切身利益,现在网络上有的东西实在太多了,如果稍微抵制不住诱惑,很可能就会一失足成千古恨。所以,一定要对网络有个清醒的认识。能克制自己、抵制诱惑。
 
四、充分利用时间,用效率来衡量水平
      我们经常有这种感觉,在网上泡着的时候,很容易半个小时,一个小时就过去了。这是什么原因呢,玩游戏过了头?还是因为琳琅满目的新闻看不过来?还是足球赛太好看了?还是一心想把某部电视剧看完。。。这都是危险的信号。你一定要充分地认识到,网络它归根结底也只是生活的一部分,你利用它一样也需要用时间来进行规划,比如你需要查找某份资料,可能网络中有相关的信息。然后你开始找,但是找了几分钟后,你发现大部分并不是你想要的,这时候你可能会一直不停地找下去(因为结果实在太多了,谁知道下一个结果是不是就是你想要的呢),然后你就忘了时间。同样看新闻也是,你可能经常被许多新闻标题所吸引,你不停地打开新的页面,仔细地读每句话。。。似乎你感兴趣的东西永远都读不完。。。好了,如果你真的是这种感觉,那么你不妨让这种状态持续一段时间(当然不要太长了,一个星期或者半个月就好了),一段时间之后,你再来好好想想,这段时间里你究竟收获了什么,想想究竟在网络上的时间自己究竟是怎么度过的,时间都跑哪儿去了,到底这样做有没有意义,有多大的意义。
     然后你自然就明白了,其实网络只是比一般的事物多了一点神秘的色彩,它本身就是那样,它容易迷惑人,容易伪装,容易让你难觉察到真相。这样之后,你应该明白:你在网络上的时间也应该是需要规划的,如果你试过几种办法都没找到自己想要的信息,那就别找了,为什么不打电话问问自己的朋友呢,老师也行,专家就更好了,或者你还可以去图书馆看看,去那里其实比去网上找更靠谱。还有新闻,看个大概就可以了,除非你真的对某个明星很感冒,一直关注,那天又恰好有他的报道,那就看看也无妨。否则,你很容易被媒体记者们精心杜撰的新闻标题吸引,掉进点击的陷阱里,难以自拔。还有电视,你为什么会想一口气把它看完呢,你真的有充足的时间么,你需要这样做么,每天看一点不是更好?
 
五、开阔视野,培养思维的广度和深度
      程序员很容易被自己的思维限制住,这是个很切合实际的话题。我们经常会积累做事情的经验,然后依靠经验不断完善自己做事情的方法,但是往往也是这些经验害了我们。事物总是在不断变化,你的经验迟早有一天一文不值,既然这样为什么不从一开始就培养自己用更宽广的视野来观察、判断、分析和解决事情的能力呢?没有什么事情是完全能在你的掌控之中的,你只是在不断用自己见识过的、经历过的和曾经在脑子里储存好的信息来应对当前发生在你身上的事情。当然,如果你视野够宽阔、思维的空间足够大,应付眼前的事情自然绰绰有余。但是,如果你固守成规,只是利用经验在做事情,那么迟早有一天,你会发现你已经out了。
       所以眼光要更远一点,程序员也可以多了解点历史,多了解点政治、经济之类的,甚至可以培养自己优秀的语言表达能力和写作能力。其实,用代码和计算机交流,和用语言和人交流多多少少也是相通的。
 
六、在合适的时间和场合扮演不同的角色
      我们很难想象自己能每天在电脑前做事情超过6个小时,那其实是一种煎熬,只是手在不停地动。当然脑子也在动,但是下肢和上半身很少有机会动,因为脑袋一般是对这电脑不动的。这样的角色,你能想象你要坚持几年或者十几年,甚至是你的后半生么?
      我要提醒每一个程序员,你决不能让这种状态持续的时间过长,除非你只是将自己定位为一个蓝领程序员,就是只是不停地做重复的模块,写相同功能的代码。。。那样,你会很快厌倦这份工作,没有挑战,没有激情。
      只要你还有学习的能力,就应该提升自己的能力,扮演更高级的角色。项目经理为什么比新手更值钱?因为他不仅能干新手能干的事情,还能干新手不会干的,甚至能干一般程序员干不了的。比如管理团队,洽谈合作,评估项目风险等等。软件开发是一个复杂的活动,技术和商业不是相互分离的,而是密切联系的。
      因此,当你上升到某个比原来更高的能力层级之后,你所扮演的角色也会相应地发生变化。比如老板要你带新人,比如老板让你负责大项目中的某个模块,比如老板要你和同事协同完成某个项目中的某个模块。。。
      角色不同,自然待遇也不一样,你可能不需要再那么辛苦地每天工作8小时甚至更长时间了。因为你已经具备工作能力了,只要花几个小时,就能完成某项任务。只要每天按时上班,项目就会按进度走。。。这时,才真正表示,你已经具备了团队协作能力了。
 
七、一定要有职业道德
      经常有人炫耀自己的代码多有价值,拿出来卖;有人甚至不遗余力地搜集别人的代码,偷梁换柱,声称这是他们自己的成果。还有人不厌其烦地,拿自己积累的程序,去解答一些教师布置给学生的题目。。。
      每个从艰难中走过来的程序员,都知道所有自己收获的东西,一定是经过自己思考和总结得到的。这中间需要大量的实践,因为人强加给计算机的意图有时并不会像我们想象中的那样。毕竟计算机理解语句的方式和人不一样。真正的程序员不会幻想依靠代码来挣钱,尽管他们的实际工作大部分时间都是在写代码。永远记住,代码不是价值的全部体现。实际上,程序员体现的还是自己的能力--优秀的逻辑思维能力。代码始终是死的,人的思维才是活的。先有优秀的思维,然后才有优美的代码。事实上,软件的价值中最重要的一点也正是,我们可以根据不同的需求写出不同的代码,来满足人们的需求。而人们的需求几乎每时每刻都在发生变化,即使在一段时间内人们习惯了某一种方式,仍然有人(设计师最喜欢干这事)不断提出新的事物来让人们知道、理解、直到接受,最后成为流行。iphone不就是最典型的例子么?
      有职业道德,不仅是对自己的尊重,同时也是对别人的尊重,甚至是对整个行业的尊重。就像斯诺克一样,一张台球桌,两个绅士人,是战斗,更像是人生。
原创粉丝点击