程序员 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. 管理生 ...
随机推荐
- Windows 8/7下还原系统默认扩展名打开方式类型
在百度知道上如果你搜“改回选错的打开方式”,看到的大多数都是XP系统的方法,不管是批处理还是别的方法,但适用于Windows 8/7的只有修改注册表的方法. 因为Windows 7你也就根本找不到[工 ...
- Centos7下安装numpy+matplotlib+scipy
摘自:http://litchiware.github.io/centos/2015/07/05/centos7%E4%B8%8B%E5%AE%89%E8%A3%85numpy+matplotlib+ ...
- JavaScript性能优化技巧之函数节流
函数节流技术的主要思路是,通过一个定时器,阻断连续重复的函数调用.对于我们自己内部使用的函数,这通常意义不大,也不推荐使用这个技术,它可能会丢失对某些数据的处理.但是对于在用户界面调用的函数,却非常有 ...
- webstrom管理git
先写一段 webstrom文件名变色:1.绿色的文件添加 2.蓝色的原有文件修改 如果出现““No such file or directory”或类似的语句,说明缺少ssh的key.那么我们就得创建 ...
- string 转 int,int 转 string
string str="12345"; int b=atoi(str.c_str()); 可以配合atof,转为double char buf[10]; sprintf(buf, ...
- Laravel中使用Redis
安装PHP PRedis PRedis是laravel访问redis的扩展包,只需要下载原码即可,不需要安装PHP扩展(如php-redis.so).但在这之前需要了解一个composer,因为lar ...
- 线段树 或者 并查集 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C
http://codeforces.com/contest/722/problem/C 题目大意:给你一个串,每次删除串中的一个pos,问剩下的串中,连续的最大和是多少. 思路一:正方向考虑问题,那么 ...
- 要想提高PHP的编程效率,你必须遵守的原则
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说 ...
- Anton and Chess
Anton and Chess time limit per test 4 seconds memory limit per test 256 megabytes input standard inp ...
- VS2010+PCL+openni配置
PCL中文论坛:http://www.pclcn.org/bbs/forum.php 1.安装 pcl 的完全安装包可以到: http://pointclouds.org/downloads/wind ...