如下这些文字,是我离开学校进入软件公司,从事软件开发工做1.5年后,来自公司领导的教诲,和同事闲聊时的感悟,在网络上读到的行业思考,亦或是在路上听到的话。这里记录下来,权当是做为一种人生经历,或许对那些还未进入职场的弟弟妹妹们是一种忠告吧。程序员
这些语录我采用关键词、描述和评论的形式,展示在这里。web
Q:你看每一年有那么多软件和计算机专业的毕业生,我以为公司招聘一个程序员仍是挺容易的吧?面试
A:招聘很难,并且是很是的难。你想那么短的时间里,你要去认识和了解他,简历又不可彻底相信。并且即便笔试和面试都表现很是优秀,你知道来了公司之后到底能不能胜任真正的工做任务呢。因此,招聘是一件很是困难的事情。这年头,毕业的学生以为找工做难,而公司又感叹找到一个合适的求职者是多么的困难。数据库
【评论】:招聘难吗?难,难于上青天;找工做难吗,难,衣带渐宽终不悔,为伊消得人憔悴。如何可以找到适合本身的工做?面试前,对公司的业务要了解,对本身的知识和技能要了解,实话实说,把真实的本身交给面试官。让面试官去衡量你和岗位的匹配度。编程
这种员工,通常都面临着赡养父母和教育孩子的任务,所以他们须要一份稳定而有保障的工做来做为支撑。他们也才有可能更安定地完成工做任务。网络
【评论】:员工稳定是一个公司可以长期发展的重要因素。除去加强员工的工做归属感,适当的外界刺激因素也是很重要的。编程语言
Q:华为、百度等公司,人员流动极其频繁,不少员工都是干2~3年后就跳槽走人,难道这些公司没有什么补救措施吗?俗话都说,人员稳定是一个公司可以长期发展的基础。工具
A:像华为、百度这种技术类公司,领导层的主要任务是留住处于公司核心技术层的精英,至于底层的那些技术员工,即便人员流动再频繁,对于公司的战略发展影响不是特别大。学习
【评论】:多么残酷的现实啊。努力的方向,固然是将来可以进入公司的核心技术层。测试
Boss:公司招聘你来,就是但愿你可以给公司带来价值的。不要在工做时间看书和学习,把学习的时间留在工做之外。
【评论】:业余时间才是拉开两我的差距的关键。事实上,天下没有“幸运”这回事。所谓的“幸运”,实际上是机会来临的时候,决不让它溜走,而是紧紧抓住。为了抓住每个机会,就必须作好充足的准备。如何作好准备?为什么毕业2年后就出现分水岭?答案就在天天下班回家后8~10点这两个小时里。看看别人在作什么就明白了。
场景:经理给安排了一个小任务,在web端截取字符串的长度,若是超过限定值则用省略号显示。就是这样一个小任务,我花了几个小时的时间在网络上都没有找到一个合适的解决方案。结果,经理仅用了5分钟就在网上找了3~4个可行的解决方案。
Boss:遇到问题就要从网络上去找解决方案,不要重复造轮子。若是给你安排的任务在网上找不到类似的解决方案,说明你作的这个事情是世界上历来没有人作过的。你以为这个可能吗?
【评论】:网络资源是无限的,关键看你会不会去利用它了。绝对不要去重复造轮子。
Boss:若是一个任务,须要你去重复地作一些操做时,你就应该想办法用工具去优化它,节省宝贵的时间。程序员要想提升,就应该想办法从繁重的“体力劳动”中抽身出来,去干有意义的事情。
Me:我有时候不太信任那些工具,以为仍是本身去作比较放心。
Boss:你去试过这些工具了吗?
Me:没有。
Boss:一件/一个工具,不必定须要帮你完成100%的工做。它只要可以帮助你完成80%的工做,剩下的20%由你本身去完成,就能够节省你很大的工做量了。
【评论】:俗话说,磨刀不误砍柴工。要想提升工做效率,仍是要分析制约本身效率的因素,而后去作一些针对性地改进。要善于利用合适的工具去节省时间。软件毕竟是一项系统工程,不能蛮干。不少程序员,虽然他们工做辛辛苦苦,不辞辛苦,可是工做效率却不高。就是由于他们太勤奋了,而不去动脑筋思考如何更高效地完成工做任务。
Q:为何像GitHub,Stackoverflow,itk,vtk,dcmtk和各类开源项目,绝大部分都是由国外的人完成的呢,他们怎么那么有奉献精神呢?
A:国外的人们工做真的是比较闲的,他们的业余时间很是多。若是他们喜欢编程的话,作点开源项目,让有共同兴趣爱好的人一块儿维护这个项目,也是一种乐趣哦。兴趣是最好的老师。
Q:我工做勤劳,而且下班后还自愿加班。领导看到我这样子,会不会主动给我加薪呢?
A:答案是否认的。你常常加班,只能说明你的能力还不能彻底胜任给你分配的工做任务。那样领导之后再给你分配工做的时候,可能就不会再分配更难和更重大的任务了。你以为这是好事吗?
【评论】:不少人都以为本身加班是好事。但可能领导并非这样想的。换位思考,是一种解决途径。同时,努力提升本身工做时间的效率也是很重要的。
Q:都说编程是一项技术密集型工做,科技含量很高。各类编程语言,如汇编,C,C++,Java,C#,Python,JavaScript,PHP等等,还要掌握操做系统,数据库等知识。那么编程真的是一项很难的工做哦?
A:编程其实并不难。首先计算机是由人发明的,计算机再怎么发达也仍是达不到人的思惟方式。问题的关键是人和计算机的思惟方式是不相同的,所以编程的关键是,你须要把业务逻辑用计算机能理解的语言告诉它,计算机只会作加法和重复性的工做。
Q:若是真的这么简单的话,那么为何仍是有不少人认为编程是一项很难的工做呢?
A:那是由于他们没有学过。人们老是对本身不了解的事情充满好奇。其实,只要学习过,每个人均可以成为程序员的。就像医生,你接受过医学专业的学习和技能的培训,也是能够当医生的。
Boss:像阅读编程技术类的书籍,就要强迫本身在必定时间内读完。不期望第一遍阅读就能彻底读懂,关键是要了解这个语言全部的特性。在之后工做中,再遇到相关特性的时候,再进行深刻理解就能够了。
【评论】:制定一项读书计划时,必定要加入时间限制,不要拖延。没有时间的计划,是永远都完不成的。
Boss:任何一个分配给你的工做任务都要争取在限定的时间内,保质保量地完成。“保质保量”是说你完成的代码要在可以实现需求的状况下尽可能减小bug的发生;“规定时间”是作在完成任务时必定要注意对时间的把控,若是虽完成了任务可是超出了限定时间,那也是应该受到责备的。就像医生给病人作一台要紧的手术,即便你刀口切得再细,缝合得再细致,若是没能在规定时间内把病人救过来,这台手术也是失败的。
【评论】:工做就是一场博弈,你须要时刻在质量和效率上平衡。工做中经过向有经验的人请教是很重要的,二十岁跟对人,三十岁作对事。
Boss:你应该对本身要求更严格一些。当接到一个工做任务时,不能只是想着简单完成任务就能够了,而是应该尽本身最大的努力把它作到完美。一样是写代码,为何人们之间的差距会愈来愈大呢。
【评论】:工做态度是决定一我的能不能很好地完成工做任务的最重要因素。
http://zhang.hu/hire-a-smart-developer/
编程语言只是一种工具,对一个聪明的程序员来讲,用没用过什么工具主要是由他原来的工做须要决定,并不能表明他所有的技能。一我的的聪明程序、对新知识的好奇心、自我驱动意识、为问题找到最佳解决方案的决心,才是他能不能成为一个好程序员的关键。
不要把本身定位为某种语言的程序员,说本身是 Java 程序员,C 程序员,Python 程序员等等。一方面会限制本身的发展,一方面对团队总体的能力提高也不利。几乎全部的语言都有它本身的适用场景,在合适的地方用合适的语言,才能极大的提高生产效率。
正确的作法是,首先要有良好的基础知识,深入的掌握2~3门语言,而后适用于不一样场景的语言要了解概念。基础知识包括各类计算机原理、数据方面的知识,在学校没认真学的,如今有时间也要补充。语言方面好比掌握了 C/Java,那 C++/Python/Bash/Javascript/CSS等均可以了解下概念,至少要理解在一个完整的产品链里,它们分别适用于哪一个环节。
【评论】:软件行业是一个很是强调人的价值的行业,价值就体如今有效地推进产品前进,而语言只是实现这个价值的工具。
Boss:不少程序员老是不肯意把改bug的时间计入本身的工做时间,但实际上,修改bug是程序员一项很是重要的工做。修改bug所花费的时间也是区分一个程序员好坏的重要指标。
【评论】:一个程序员完成功能编码时引发的bug数量,bug的修复数量,修改bug引发新bug的数量,bug修改后又被测试reopened的,对引起bug的缘由分析,对bug优先级的划分等等,都是衡量一个程序员是否优秀的考查点。其实,写程序不难,难的是知道怎样去写;修改bug不困难,难的是要找到bug在哪里。
Boss:在公司工做的时候,若是遇到本身不会的事情必定要及时去问,千万不要不懂装懂,既耽误你的时间,又会对整个项目的进展形成不利影响。分配的工做任务,若是花了2~3个小时,仍然没有找到头绪,要及时找人讨论;任务完成到30%的时候而依然进展不顺时,也要及时找人讨论。此外,当你去问别人问题的时候,问题必定要很是具体和具备针对性,而不要问太宽泛的问题。问问题时,必定要去问比本身水平高的人,而不要去问和本身水平差很少的。
【评论】:要想获得具体的答案,首先你问的问题就必须很是具体。问问题必定要问比本身水平高的人。