技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 查看专题: 程序员
    经常有小(我 20 岁左右的)朋友问我,作为一个程序员该怎样提高自己。每个人的经历不同,所处环境不错,其实这个问题很难具体回答。不如好好写一篇总结,以后就不必每封 email 都重新写一次了。 纵观我近 30 年的编程生涯,在每个时期,我看到的东西都不同。想必再过 10 年还会有变迁。我只能写写当下眼界所及之处。 引我爱上编程,并乐此不疲的学习,是“我能写出更高效的代码”这种乐趣。如果一个人在学习编程开始,不努力让自己的代码变得更高效,发现不了优化的乐趣,我想他很难爱上编程。Don Knuth 说,Premature optimization is the root of all evil ,这句话背后的道理,不必一开始就强行接受。evil 最能蛊惑人心,但是我们需要它引入门。
    最近面了多个软件工程师,别看工作经验好几年,看起来好像能“干活”,但是竟然冒泡排序都不会写!这样的行业状况,一旦经济危机爆发,程序员群体估计要仆街。技术当然是成功的关键,但是经济状况出问题的话,行业的价值重估肯定让很多人痛苦不堪。
    前些天看到了老板的二十年前的文章《程序人生》,深有感触,于是也萌发了写一写的想法,看看二十年后,自己的认识是否会有所改变,当然了,即便作为职业码农近十年,很多观点依然不能构成一种完整且保证正确的人生观。
    上班编码,加班编码,回到家倒头就睡。别人给结婚同事包红包,他们却从来不用,因为很可能明天就跳槽不在同一家公司了。结婚前衣服都是妈给买,结婚后媳妇包办,自己从没买过衣服,因为不知道该去哪儿买什么牌子。但是他依旧被广大程序员羡慕着,因为……哥们儿成功脱单了呀。
    记我那些可怕的职业经历.
    我刚刚工作的时候,面试官曾经跟我说:好好干两年,可以迅速从程序员成长为工程师。当时我觉得太诧异了,从很多招聘启示来看,“程序员”不就等于“工程师”吗,只是“工程师”更好听一些而已。等我工作久了,才知道“程序员”和“工程师”真的是不一样的——程序员只写程序,工程师写能在现实世界中创造价值的程序。 可惜,很多软件开发人员未必清楚两者的差别,甚至做了很久也只算程序员而不算严格意义上的工程师。所以我就自己的观察和经验,谈谈程序员和工程师的差别。 第一,工程师不写黑箱程序。 “程序=数据结构+算法”,这个著名的公式大家都知道,不幸的是,它不适合描述工程领域或者现实世界的程序。有很多程序,数据结构和算法都写得很棒,功能足够强大,系统足够复杂,但是——它很难调试,一跑起来就无法停止,而且谁也不知道程序现在到底在干什么,里面发生了什么。
     趁年初跳槽人数多,公司想多捞一些员工进来,一直激励员工内部推荐,我也尝试着收集一些简历内推之,但是没什么收获。沮丧之余,越来越感觉到当前互联网行业人才的青黄不接。 一方面是社招太难,特别是对于当前火热的移动开发和Web开发,稍微有一年经验以上的熟练工都是供不应求的情况。各个企业简直就是"跪求候选人给企业一个面试他(她)的机会"。 另一方面又是大学生校招找工作难(本文说的是互联网相关专业的大学生),个人认为原因主要有两个:一个是很多大学生在校期间沉迷游戏,荒废学习,导致自己技能点不强,找工作难。另一个则是因为学习上走了一些误区,很努力但是最后才发现当前社会形势所需的不相符。在此主要谈谈后者。主要是个人一路走来的一些经验之谈,希望能帮到一些人。
    程序员有三大件:椅子、桌子、键盘,由于Macbook的触摸板实在是太好用了,鼠标倒变得不那么关键、乃至有必要。 以前在猎豹工作的时候,公司统一配的都是金卓B-ham,淘宝上大概1K4。现在不少公司招聘,人体工程学椅子常常也会成为一个福利。程序员每天对着电脑,敲代码的时候又常常忘记时间,一把好的椅子、一副好的键盘,对于腰肩、手腕的健康就至关重要了。键盘嘛,HHKB已经泛滥,我的机械键盘是大学的时候买的凯酷87红轴,300多块钱,一直没坏,感觉还行,就一直用到现在也不想换了,这块键盘可以说是记录了我敲过的无数的代码和文章,都有点感情了。 对于桌子,V2EX上的年度晒桌面,也可以看出这个群体,对于「物,聚」的一种癖好。
    低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看不到本质. 所以, 低级程序员总结出的一切东西, 你都可以大胆的忽略. 所以, 我们来听听高级程序认为自己与低级程序员的区别是什么. 高级程序员之所以高级, 在于他们认识到代码 bug 是不可避免的, 有千万种理由可以导致 bug, 但他们可以在设计和逻辑上保证(追求)滴水不漏, 并用逻辑的百分之百准确性还减少代码 bug. 没错, 严谨的逻辑能力是高级程序员区别于低级程序员的最主要原因.
    程序员的发展,长期以来都是大家关心的问题。通常程序员的发展有两大方向,深度和广度。深度发展,就是精深自己的本事,研习新潮尖端的技术乃至学会“屠龙之术”,以绝招打遍天下;广度发展,就是拓宽自己的技能种类,比如学会更多的语言,以完成更多种类的任务。除去这两大方向,其它能选的发展方向似乎就只有“改行”了。
    多数人知道王小波是小说家,部分人分不清财经作家吴晓波和小说家王小波是不是一回事儿。却很少有人知道王小波可以算的上中国早期的程序员,在90年代初的时候因为国内应用软件缺乏,爱捣鼓东西的王小波利用闲暇时间学习了汇编和C语言,编了中文编辑器和输入法。中文编辑器和输入法任何一个都是大牛级的GEEK才会去尝试的东西,比如求伯君。王小波通过卖软件还挣了些钱,当时很多中观村的老板要拉他入伙,当然写代码这种来钱快的活对屌丝王小波还是有吸引力的,所幸他还是拒绝了人家。
    我曾经说过,程序员不是一般的人,是具有某种超能里的人。但问题是,程序员往往意识不到自己的这种特异功能,在他们的眼里,会认为自己很普通,跟常人一样,所以,程序员能做到的事情,其他人——比如他们的客户/软件用户——也应该很容易做到。但事实上,由于大部分人——绝大部分人(包括软件开发公司的客户/购买软件的用户)——都是电脑小白(对电脑知识/计算机知识/软件知识知之甚少的人)。
    我有一个朋友,他在一家小公司工作,这家公司最近换了经理。老经理由于资深程序员的辞职且无法招到替补而被派去顶替空缺的开发角色。而新经理缺乏管理程序员的经验。事实上,他们公司的任何一个资深程序员都可以随时拍屁股走人,而且在一个星期里就能找到一个比现在高出30-40%工资的新工作。
    我收集了很多编程语录,基本上都跟程序员的生活有关。这些语录涉及软件开发,代码维护,调试纠错,软件bug,系统设计、文档,代码质量,测试和软件开发团队管理等方面。下面的这59条语录虽然很搞笑,但却真实无比。只有程序员才能理解这些编程语句里的真正内涵。闲言少叙,开始吧…
    如果第一次运行不成功,那就叫它1.0版吧。
    以下内容来自于Stack Overflow的一个问答中,此问题的答案整理的非常的详细,且颇具启发性,整理出来和大家一起分享。
    多张图,让你了解程序员内心深处的闷骚的幽默。
    一个程序员解决问题的能力,如果粗略来分,会有哪些等级?
    我认识到一个非常有悖常理的现象,优秀的程序员都是即懒又傻的。因为懒,他才会写出各种各样的工具来替自己干活。因为懒,他才会想办法避免去写无聊重复的代码——因此避免的代码的冗余,消减了维护的成本,使重构变得容易。
    程序员最害怕什么?根据对程序员讨论组里一些帖子回复情况的不完全统计,我发现了一些程序员最害怕的事。这里,按害怕程度的倒序排列(跟据每个帖子回复数和每个回答的支持数),下面是对“程序员最害怕的是什么”这个问题的前五大答案。
[ 共62篇文章 ][ 第1页/共4页 ][ 1 ][ 2 ][ 3 ][ 4 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1