系统架构设计

优秀软件工程师必备的素质和习惯

2017-04-09  本文已影响223人  刀客传奇

版本记录

版本号 日期
V1.0 2017.04.08

前言

今天写的比较多,可能是因为这么多年做软件,但是第一次碰到简书这样好的分享平台,说到这里我想到了我的一个同事,别人问他问题总是露出不屑和鄙视的表情,然后就说自己去查,说实话如若不是对老的项目不了解在苦查无果的情况下,谁会第一反应求助别人?原因他可能认为自己是百度出来的?(ps:这是我的内心猜测)。我也喜欢百度这样的公司,但是培养出这样的员工,真是不敢恭维。
  不多说了,进入正题,这一篇就说一下优秀的程序设计师好的习惯吧,共勉。

N个好习惯

1. 持续学习

我把这个列为第一个好习惯,是因为他的重要性无可替代。不管你是名校毕业还是一般院校毕业,不管你是名企就职还是没有名气的企业就职。学习都是必须要做的一件事,因为软件行业变化非常快,如果不学习即使你有好多年的编程经验,还是可能被行业所抛弃,就拿苹果ios系统来说吧,swift出来了已经到3.0了,与2.0相比又有很多新的变化,同时OC也总是弃用一些类和方法,FaceBook等开发的第三方框架也在不断变化,这些都需要进行持续学习。

2. 设计要足够灵活

通常我们设计一个框架,要考虑暴露外边的接口是否完备和灵活,你设计的东西是否可以满足很多不同场景的使用,你的接口参数配置是否灵活的可以满足不同的配置和需求。灵活性就是我们设计软件的时候必须考虑的因素。比如我们在ios设计中,需要设置空间的frame,我们设置成self.button.frame,就要比单纯的给一个数字要好很多。

3. 浏览名人博客

任何行业都有很多技术达人,他们热衷于专研技术写博客,这些人的博客就是我们学习的一个很好的途径。比如我这个行业的有唐巧还有就是王巍都是国内比较出名的ios技术方面的前辈和专家,外国也有很多很好的专家写技术博客,我记得我在唐巧的博客里他就推荐了国内很多专家的技术博客以及国外大牛的技术论坛的地址,这些我们都可以常去看看和学学。

4. 尽量多参加开源项目

github等平台中有很多知名的开源技术的框架,如果你可以的话尽量参与中去,里面都是这个行业的技术大牛,和他们一起完善这个框架,不仅有很大的自豪感而且多看看他们的构建框架和思考问题的角度,你都会收益颇深,我相信你会总感叹:卧槽,这个还可以这么做?这样子时间久了你也变成了他们其中的一位。

5. 学会使用工具

我这里所说的工具是广泛意义上的工具,包括很多,比如说浏览器,工具书,等等。程序员都知道谷歌浏览器要比百度好用的多,我也深有体会,比如我查找问题,在stackOverflow上就有人回答,我用谷歌就直接可以翻译成中文,在百度上就不可以,这只是浅层次的,更深层次的是,谷歌浏览器支持很多好的插件,可以做一些数据库查询等等方面的功能。其他的工具还有很多,就不多举例了,很多时候利用好这些工具都可以很快很好的解决问题。

6. 有时间的话好好学学外语

中国学生经历了几十年的学外语的经历,为什么?还不是因为中国落后,很多先进的技术是美国等西方国家把持着,中国要想学习或者超过它们,第一要学的就是他们的语言。特别是我们软件行业,鲜有十分牛逼的软件不是美国等国家的。而且计算机也是他们发明的,很多国际标准也是以外语为标准的,国际化也是最高的。但是现在社会还是充斥着英语无用论,真的很可悲,外国都在加大英语学习的比重,中国却在降低。可能有人会说,我们做软件编程就会那几个关键字就可以了呗,不是还是一样做的很好嘛?是的,说的没错英语不好也可以设计软件,但是为什么不好好学英语,多读读外国这方面的源码和文章,让您走的更远呢?我就拿我们ios来说,swift刚出来的时候,还没有人把这个语言翻译出来,都是英文的,难道英文不好的就一直在这里等着别人翻译?要知道你在等英文翻译的时候有的人可能已经把源码和API文档看了好几遍了,并且已经能够使用这门语言写项目,修bug了。可是你还能只能姑且等着,这不是落后那还能什么算是落后。

7. 养成写文档的好习惯

文档是一个软件系统的生命力,一个公司的产品再好技术再高,都要把30%的时间用于文档的梳理和书写上。这不是浪费时间,这会有很好的技术继承性。

8. 需求理解能力

程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。

9. 模块化的思想

优秀的软件工程师的思想不能被局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这就是我们平时所说的封装思想。这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。

10. 多了解底层

  虽然很多工作不是非常透彻的了解底层也能做的很好,但是如果你深入的了解底层那就是另外一番天地。知其所以然的工作会让你信心爆满,做事顺畅,也会让你和其他普通的程序员区别开来。从CPU的执行方法,到操作系统的运转,到程序的编译链接,到代码的加载与运行,到程序的调试,最后到实现的功能这一整套的内容,只有做到这样,才能真正提高。作为ios程序员你就要了解每一个方法和类的深入

11. 多帮助他人和团队一起分享成长的乐趣

  好的团队一定是一个共同成长的团队,同事之间相互帮助共同成长。有很多公司就是同事之间都不怎么说话,同事有问题请教的时候就在一边旁观,我以前去过的一个公司,那代码写了据说好几年都没上线,我都不知道是谁写的,后来换了技术团队,换成百度外卖的一批人,那一批人真是人不咋着,让我对百度的印象真是一落千丈,特别那个叫JF似的,每天都很高傲,对别人很傲慢,后台,UI,技术总监他都吵了个遍,啥几把人啊。大家要是碰到这样的团队,还是敬而远之吧。这里所说的分享不仅是和同事分享,大家也可以写技术博客分享,stackOverFlow 和 github都是不错的途径。

后记

  今天就说这么多了,这些都是我的切身经历,欢迎大家批评和补充,我感觉我说的这些如果有人把其中的80%做到极致,那都是那一个行业的技术大牛。现与诸君共勉。

上一篇下一篇

猜你喜欢

热点阅读