近期同一分部另一个项目组的一位程序员被 “主动离职” 了,虽然我未曾与这个程序员共事过,然则听过一两次他的内部分享,感觉技术还是挺厉害的。后来与一个信息灵通的同事聊天,才晓得真正的原由是老大觉得 A 难以沟通,搞得其他程序、QA 都怨声载道。工作这些年,身边的好多同事来了又走了,主动或被动,这不禁让我思考什么样的程序员算得上合格的程序员。
虽然大众都自叫作 “码农”、“IT 民工”,但我相信,这仅仅是自嘲或自黑,大都数程序员应该还是认可自己的这个职业的,当然,我算不上一个优秀的程序员,由于我都不曾在开源社区贡献过代码、亦不精通白板算法、对技术亦不狂热、不 geek。我的目的是做一个合格的程序员:把本职工作做好,对得起自己的薪水,在生活与工作平衡,996 什么的我是难以接受的。
针对程序员而言,技术过关当然是非常要紧的,这是硬实力。然而只会技术亦是不行的,毕竟大都数的程序员还是要与人打交道,软实力亦是不可或缺的。怎么样才可算合格,我认为有以下几点:
1扎实的基本
计算机行业是一个快速更新换代的行业,每隔一段时间都会有新的语言、框架、思想产生,追随每一个新技术很累。但仔细想想,事实上并无那样多新东西。非常多新东西只不外是已有技术的封装、或借鉴的其他行业的技术。例如缓存数据库 redis、memcached,其基本思想不便是操作系统中的缓存吗;分布式存储中的分片与复制集,不便是文件系统中 RAID 的扩展吗;还有 Google 的 MapReduce 框架,不便是源自于函数式编程语言的 map reduce 吗。把握好计算机基本知识,能够更本质的看待新技术。
2善用工具
磨刀不误砍柴工,打造好自己的工具集非常要紧。
研发中会用到海量的工具,不管是编辑器、调试工具还是监控工具。大众都爱好争论哪个 IDE 更好,然而这并无多大道理,关键在于能够熟悉的运用自己爱好的工具,把握各样快捷键,高度自定义,这般能够大大加强工作效率。况且针对平常中重复的操作,最好脚本自动化。
另一,强调程序员必须的两个工具,那便是浏览器和 VPN。后者大众都懂的,不多说,重点是有了后者才可发挥浏览器的威力。浏览器大众天天都在用,然则怎样有效的运用,例如在指定网站搜索、经过标题、url 过滤、选取合适的关键字 还是值得科研一下,针对程序员,要运用好浏览器,那还得具备下一个能力:英语。
3过得去的英语
不得不承认,在软件创新行业,国内还是落后于国外的,新的技术、一手的资料都是英文的。当新技术被广泛应用之前,咱们在百度搜到翻译要么是 machine translated,要么错误百出。看翻译的最大问题取决于翻译者本身的水平,即使翻译水平都很高,但同一个单次常常有区别的翻译,引起看文案的时候会有困惑,最好还是直接看英文原文。大都数原文,除去专业词汇、还是比较好理解的,况且,我发掘非常多牛逼的项目,都有非常通俗易懂的文档。
4良好的编码习惯
代码是写给设备执行的,同期亦是给人阅读与守护的。守护者可能是别人、亦可能是几个月后的样子。良好的代码规范,必要的、清晰的注释能够让自己少被问候祖宗十八代。
针对代码风格,网上争议亦非常多,最要紧的是保持项目内的统一。做为技术负责人,必定要在项目开启之初就顶号规范,当海量代码被堆出来之后就很难统一了,而后做好新人的 review。
5保持学习
程序员这个职业,相比其他职业,可能还是要青年许多。尤其是在国内,最老的一批程序员好多都转管理了,再过 10 年 20 年,咱们会怎么样呢,没人晓得。前段时间华为 35 岁程序员被离职的事情,给咱们敲响了警钟,悲哀之余,仅有尽力学习了,拼不外体力就拼能力与经验吧
学习这个事情说起来就繁杂了,我觉得两点很要紧:基本、学导致用。
6独立思考
合格的程序员处理的是问题,而不是实现某个处理方法。制品经理(尤其是晓得一点技术的制品经理)的某个需求可能只是某个问题的处理方法,他认为这个办法能够处理他的问题,于是把处理方法当成为了需求,而不是真正的问题。程序员应该主动沟通,多问几个为何,认识真正的问题,亦许能有更好的处理方法。
之前就有这么个例子,给到的需求:为每一个用户(用户有独一的 id 标示)生成一个独一的邀请码,同期亦要为将来一段时间可能增多的用户预生成邀请码,保留到数据库。而真正的需求是老用户分享自己的邀请码,倘若新用户运用了该邀请码,则老用户得到相应奖励。而我提出的方法很简单,直接用户的独一 id 生成可逆的邀请码,这般就基本没没需数据库存储。
制品经理经常改需求这是程序员最头疼的事情,做为程序员应该亦站在 PM 的方向思考,帮忙 PM 分析出本质的需求,这亦许能够减少需求的变更。当然,前提是得干一行爱一行,必须对业务有必定的认识。
7先思考后行动
写代码的时候先想清楚了再下笔,而不是先写出一堆代码,而后在起始修 bug。
修 bug 的时候,多瞧瞧上下文,搞明白为何出 bug,修改这个 bug 可能带来的影响,而后再修改。反面教材有两种:第1种随便改改就把代码改好了,但自己心里并不清楚为何这般修改就修好了,撞运气,亦许还有其他一样的 bug 亦发掘不了。另一种便是,头痛医头脚痛医脚,不仔细评定修改的影响,这般常常会引入新的问题。
程序员成长的一个办法便是修 bug,修别人用不了的 bug,但前提是搞清楚 bug 的缘由,这般才可避免类似的错误,有所收获。
8顺畅沟通
不是巧如舌簧、亦不是忽悠达人。必须的只是耐心倾听,而后清晰表达自己的意见。
此刻的软件研发,已然再也不是单打独斗的年代,大都数的软件、制品都必须多人、多分部的协作。而交流、沟通是非常耗时耗力的。沟通之前,先想好目的,组织好语言,尽可能不要发散、不要跑题,对事不对人。针对要紧的事情,保存沟通记录,最好有邮件,免得说不清。返回外链论坛:www.fok120.com,查看更加多
责任编辑:网友投稿
|