程序员 10Tips
理解技术债务
技术债务就像信用卡一样,会有很高的利息率,时间越长,修复所花的代价就越大,程序员对这个要有深刻的认识。同时团队应该培养一种保证设计质量的文化,应当鼓励重构、同时也应当鼓励其它有关代码质量的实践,在开发时间中应当专门抽出一部分以解决技术债务。如果没有合适的照料,代码会变得越来越复杂难懂,最后没人想碰它。
保持对原理的好奇心
不仅知道怎么用,还知道是什么原因。比如你做Android, 可以了解一下他的事件分发机制是什么样的,它的Measure/Layout是怎么work的,有时间读一读它的源代码, 看看他的原生控件是怎么实现的. 学iOS,了解一下它的内存管理,autorelease是怎么工作的,runtime是怎么工作的, runloop的原理是什么。做Server开发,可以了解一下Nginx为什么性能好,Redis的工作原理如何,有时间也可以读读其源代码。 做前端,也可以读一读 Angular 或 React 的源代码。
专注
程序员的工作效率可以相差很大,其中区别很大的一点就是是否专注,就像线程切换一样,恢复上下文有很高的代价。建议合理安排好自己的时间,尽量在上午/下午留大块的专注时间来做设计和编程,关掉IM/邮件/微信, 把面试/会议等安排在大块时间之外, 同时也建议可以尝试一下番茄工作法。
同理心
写代码时要有同理心,考虑一个有少量上下文甚至完全不了解上下文的另外一个程序员他会怎么样读这个代码,这样自然就知道怎么写出可读性好的代码,该怎么命名,什么地方该加注释。 考虑以后维护代码的这个人就是你自己,这样在偷懒做一些临时的workaround时就会三思。 交付给测试人员时也要有同理心,有没有做基本的质量保证,有没有跟测试沟通改动可能的影响范围,让测试人员可以更有针对性的测试。
谋定而后动
好的程序员不是拿到需求就开始写代码,而是先考虑清楚。 需求是否合理,是否能解决用户的问题,逻辑上是否有模糊或不完备的地方。 然后考虑设计的问题,流程图是什么样的,类图是什么样的,接口是什么样的,对架构和模块的影响是什么样的,考虑清楚后才开始写代码。
架构思维/全局思维
理解整体架构是什么样的,你开发的模块在架构中的层次,新增的改动会不会对架构有污染,是否需要调整架构,所开发的模块可否抽象成通用模块 或者可否复用已有模块,或则重构已有模块达到可复用目的。
设计语言
掌握适当的设计语言,比如 Plantuml 或 Visio,或者是一些设计模式,知道如何以简单清晰的方式去跟其他程序员描述和沟通你的设计和架构,大家理解一致了,才能更有效率的合作。
追求代码质量
代码质量是程序员的立足之本,在这一点上,要有精益求精的“匠心”。 我看到很多普通程序员做了不少项目后水平提升仍然不明显,无它,对代码质量没有精益求精的精神。 代码规范,健壮性,可读性,可维护性,无重复代码等等,都要精益求精。
代码审查
代码审查是保证代码和工程质量的最有效手段,优秀的公司(比如Facebook, Google)和优秀的团队(比如我们,欢迎关注团队公众号 mtydevs)都非常重视代码审查。如果你还不能认识到它的重要性,可以查看这里
自动化
好的程序员都应该有自动化思维和工具思维,都应该会一门脚本语言,有自己的工具库。我们应该通过工具及自动化来改善我们的工作效率,以及避免一些人为的失误。
程序员 10Tips的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 传播正能量——做一个快乐的程序员
引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波
注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- 程序员必须要知道的Hadoop的一些事实
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
- [转载]一个标准java程序员的进阶过程
第一阶段:Java程序员 技术名称 内 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...
- 【读书】PHP程序员要读的书目(不断完善中)
本文地址 分享提纲: 1. PHP 2. Linux 3. Apache/Nginx 4. Mysql 5.设计模式/架构 6. 缓存并发 7. 其他语言 8. 代码基础 9. 大前端 10. 管理生 ...
随机推荐
- Chapter 1 First Sight——28
"Which one is the boy with the reddish brown hair?" 那个红褐色头发的男孩是谁? I asked. I peeked at him ...
- mysql 注册登陆表单并且操纵元素
<?php error_reporting(E_ALL^E_DEPRECATED^E_NOTICE); header("content-type:text/html;c ...
- 第3章 Java语言基础----成员变量与局部变量
在对局部变量进行赋值时,不能对非静态字段age进行静态引用,图1错误,加上static后图二正确,图3与图4类似,如下图所示: 图1图2 图3图4 2.成员变量times在类中定义,局部变量times ...
- TCP/IP,http,socket,长连接,短连接——小结。
来源:http://blog.chinaunix.net/uid-9622484-id-3392992.html TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. ...
- jquery多级下拉菜单
var menu = new Click('#menu',{target:'p',parent:'li',contr:'ul',way:0}); /* 参数说明: target : 点击事件发生在该元 ...
- Google Gson的使用方法
用法1:从网络获取到json字符串之后,假如该字符串为data, Gson gson = new Gson(); HomeBean json = gson.fromJson(data, HomeBea ...
- hosts.deny 和hosts.allow 配置不生效
需求:需要用hosts.deny限制用户通过ssh登录 在/etc/hosts.deny中加入 sshd: all 在/etc/hosts.allow中加入 sshd:all #拒绝所有的ip链接ss ...
- SQL 优化案例 1
create or replace procedure SP_GET_NEWEST_CAPTCHA( v_ACCOUNT_ID in VARCHAR2, --接收短信的手机号 v_Tail_num i ...
- 1.2 sikuli API
sikuli API网站:http://nightly.sikuli.de/docs/index.html eclipse中如果要用到相应的 sikuli 功能,可以查看API ,然后import相应 ...
- oracle的row_number()和rownum
row_number() 函数和rownum的介绍: 1.row_number() 方法的格式: row_number()over([partition by col1] order by col2) ...