对于程序员而言,技术过关当然是非常重要的这是硬实力。然而只会技术也是不荇的毕竟大多数的程序员还是要与人打交道,软实力也是不可或缺的怎样才能算合格,我认为有以下几点:
计算机领域是一个快速更噺换代的领域每隔一段时间都会有新的语言、框架、思想产生,追随每一个新技术很累但仔细想想,事实上并没有那么多新东西很哆新东西只不过是已有技术的封装、或者借鉴的其他领域的技术。
比如缓存数据库redis、memcached其基本思想不就是操作系统中的缓存吗;分布式存儲中的分片与复制集,不就是文件系统中RAID的扩展吗;还有Google的MapReduce框架不就是来源于函数式编程语言的map reduce吗。掌握好计算机基础知识能够更本質的看待新技术。
磨刀不误砍柴工打造好自己的工具集非常重要。
开发中会用到大量的工具不管是编辑器、调试工具还是监控工具。夶家都喜欢争论哪个IDE更好然而这并没有多大意义,关键在于能够熟练的使用自己喜欢的工具掌握各种快捷键,高度自定义这样能够夶大提高工作效率。
强调程序员必备的两个工具浏览器和VPN。后者大家都懂的不多说,主要是有了后者才能发挥浏览器的威力浏览器夶家天天都在用,但是如何高效的使用比如在指定网站搜索、通过标题、url过滤、选择合适的关键字 还是值得研究一下。
不得不承认在軟件创新领域,国内还是落后于国外的新的技术、一手的资料都是英文的。当新技术被广泛应用之前我们在百度搜到翻译要么是machine translated,要麼错误百出
看翻译的最大问题取决于翻译者本身的水平,即使翻译水平都很高但同一个单次往往有不同的翻译,导致看文章的时候会囿困惑最好还是直接看英文原文。大多数原文除去专业词汇、还是比较好理解的,而且我发现很多牛逼的项目,都有非常通俗易懂嘚文档
代码是写给机器执行的,同时也是给人阅读与维护的维护者可能是别人、也可能是几个月后的样子。良好的代码规范必要的、清晰的注释可以让自己少被问候祖宗十八代。
对于代码风格网上争议也很多,最重要的是保持项目内的统一做为技术负责人,一定偠在项目开启之初就顶号规范当大量代码被堆出来之后就很难统一了,然后做好新人的review
程序员这个职业,相比其他职业可能还是要姩轻许多。特别是在国内最老的一批程序员好多都转管理了,再过10年20年我们会怎么样呢,没人知道
前段时间华为35岁程序员被离职的倳情,给我们敲响了警钟悲哀之余,只有尽力学习了拼不过体力就拼能力与经验吧。
学习这个事情说起来就复杂了两点很重要:基礎、学以致用。
合格的程序员解决的是问题而不是实现某个解决方案。产品经理的某个需求可能只是某个问题的解决方案他认为这个方法可以解决他的问题,于是把解决方案当成了需求而不是真正的问题。程序员应该主动沟通多问几个为什么,了解真正的问题也許能有更好的解决方案。
产品经理经常改需求这是程序员最头疼的事情作为程序员应该也站在PM的角度思考,帮助PM分析出本质的需求这吔许可以减少需求的变更。当然前提是得干一行爱一行,需要对业务有一定的了解
写代码的时候先想清楚了再下笔,而不是先写出一堆代码然后在开始修bug。
修bug的时候多看看上下文,搞明白为什么出bug修改这个bug可能带来的影响,然后再修改反面教材有两种:第一种隨便改改就把代码改好了,但自己心里并不清楚为什么这样修改就修好了撞运气,也许还有其他同样的bug也发现不了另一种就是,头痛醫头脚痛医脚不仔细评估修改的影响,这样往往会引入新的问题
程序员成长的一个办法就是修bug,修别人用不了的bug但前提是搞清楚bug的緣由,这样才能避免类似的错误有所收获。
不是巧如舌簧、也不是忽悠达人需要的只是耐心倾听,然后清晰表达自己的意见
现在的軟件开发,已经不再是单打独斗的年代大多数的软件、产品都需要多人、多部门的协作。而交流、沟通是非常耗时耗力的沟通之前,先想好目标组织好语言,尽量不要发散、不要跑题对事不对人。对于重要的事情保留沟通记录,最好有邮件免得说不清。
沟通是門复杂的艺术最基本是听明白、说清楚。
作为一个程序员要被PM怼、要被交互怼、要被QA怼,再变态的需求都可能有QA给你提的BUG可能也不屬于你。而且还有猪一样的队友(自己在别人眼里何尝不是这样呢)和下属。不管谁是谁非发脾气、吵架都一点用没有,吵完还是得解决问题
有怒火也得等个几秒再发作,也许这几秒理智思考一下就能解决问题。
能力与责任心谁更重要呢都重要。如果一个新人有培养的潜力那么责任心就更重要。两个人第一个技术能力很强,但责任心很差对项目的事情也不上心。第二个能力差些但责任心強,是自己的问题一定负责到底即使自己不能解决也能主动询求帮助。
我感觉前者对项目的危害更大特别是项目紧要时期,因为能力強的人一般负责的是比较复杂、困难的功能别人上手也需要时间,这个时候如果摞担子bug也不修,那么就很为难了
不负责任的典型表現就是扯皮、甩锅:这不是我的bug、不关我的事。有协作的地方更容易出现问题比如前端与后端、各个部门之间。如果不清楚到时是谁的問题不妨主动一点,帮助排查
作为程序员,总有一些工作是以前没有做过的也许来自产品人员的需求,也许来自项目自发的优化峩见过一些程序员,在面临未知的问题、挑战时总是习惯于说:不会、没办法、不可能,这样的程序员就算不上合格的程序员
事实上,这样的程序员是给自己过早地留好退路事实上问题可能并没有想象得那么困难,也许经过一番探索就能解决如果习惯于对未知说不,那么在别人看来就是能力不行影响个人形象与声誉,而且总是待在自己的舒适区也不利于自我成长
当然,也不是说要盲目自信急於拍胸脯保证一定能解决,这样往往是坑自己
所以,面对新的需求谨慎对待,既不轻易否决也不随意承诺而是再理清需要先去研究┅下,评估是否能完成需要的资源与时间。