程序员 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. 管理生 ...
随机推荐
- Linux设置开机服务自动启动
[root@localhost ~]# chkconfig --list 显示开机可以自动启动的服务[root@localhost ~]# chkconfig --add *** 添加开机自 ...
- openwrt uci
UCI: Unified Configuration Interface 通用配置接口,主要用于集中控制openwrt的配置文件. 1.uci使用的配置文件一般放置在设备上的/etc/config目录 ...
- LeetCode OJ 199. Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...
- (转) 三个nginx配置问题的解决方案
今天开启了nginx的error_log,发现了三个配置问题: 问题一: 2011/07/18 17:04:37 [warn] 2422#0: *171505004 an upstream respo ...
- 几种访问其他域swf文件,或本地浏览器运行环境【安全沙箱】冲突解决方法
声明: 几种方法都源自网络,我只负责汇总一下子,因为来自多方转载,也找不到初始出处了,需要的可以随意收藏,物尽其用,蛮好^_^ 对于类似的出错信息:SecurityError: Error #2148 ...
- PureMVC 框架总结收录
PureMVC框架的目标很明确,就是把程序分为低耦合的三层:Model.View和Controller. 通过使用PureMVC后,我们的代码将集中分为以下几个部分:Façade.Command.Me ...
- 状态转移的最短路 隐式图搜索 UVA 658
紫书365 题目大意:给你n个全都是bug的东西,然后每次可以修复,给你修复前后的状态,问最后如果能把bug全都修复,最少需要多少时间. 思路:从最初状态开始,然后枚举bug即可. 表示priorit ...
- windowSoftInputMode键盘把输入框挡住了
android:windowSoftInputMode="stateHidden|adjustResize" >
- SQL SERVER中强制类型转换cast和convert的区别
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的, 只是语法不同. cast一般更容易使用,convert的优点是可以格式化日期和数值. 代码 select CO ...
- arcconf
arcconf create 1 logicaldrive max volume 0 31 noprompt 创建 Logical Drive, 这里 0 31 就是之前记录的 Channel, De ...