从程序代码的命名,咱们就能够看出一我的的水平。最差的命名就是使用中文、拼音、拼音缩写、中英混搭,接下来要么是模仿式命名,要么干脆就随意命名。程序员
模仿式命名典型的就是“××DAL”,说实话,我以为相似于“UserDAL”这样的名字,我以为太不美观了,通常这我就知道这是典型分层架构的模仿者,说明他是有些经验的人了。数据库
随意命名,就是写代码的时候,名字压根就没有意义,好比var list = new List<User>,其实彻底能够写成var users = new List<User>的。想要命名的更有意义,你只须要将每个类、每个方法、每个单词的名字都用你开发时的意思直接描述出来就好了。编程
2网络
模型抽象能力数据结构
模型决定一个系统的可用性、稳定性、易用性、可维护性、可扩展性!多线程
这个模型不是UML建模,而是软件的核心。就是你设计一个软件时,为其所抽象出来的原理性的描述。模型决定一个软件的质量、易用性和扩展性。架构
凡是优秀的软件,都有一个共同特色,就是其模型构建的很是漂亮,固然也有不怎么优秀的软件,模型也很漂亮。好比微软MEF,其模型构建很是的漂亮和优雅。MEF的核心就是组合基元,以下图所示,它简单的定义了动态组合的支持基础,而后一层一层的进行扩展。框架
3异步
谦虚随和分布式
有一个很是有趣的现象,那些懂得尊重别人、比较谦虚的人通过深刻接触后,会发现他们的技术每每都很了不得;而那些说话刻薄无礼,以为这个技术不怎样,那个技术也没什么了不得的,我本身的东西已经挺好的,这样的人水平、经验和见识通常都不怎样。
软件的问题,并非简简单单解决一个技术问题,从技术的角度上看,只要学会了使用技术,那么咱们就已经掌握了技术,所以,单纯的技术是很简单的。
相反的是,,也每每是技术水平通常、经验短缺的程序员意识不到的东西。有很多通常的程序员,大致都是这一类,他们以为软件太简单了,没有什么了不得的。对于什么思想,也不屑一顾,他们已经以为本身掌握了不少真正的技术。
4
异常处理
经过异常处理能够看出一个程序员程序设计的严谨与扎实的基础知识。拿Java开发人员举例,要发现每个方法都有可能须要强制的处理异常和声明这个函数须要处理的异常,这种强制的约束,会强迫开发人员来习惯性的考虑和思考它。
不过,对于大部分人来讲,它处理异常的方式就是简单的使用try { … } catch(Exception anyException) { // 忽略异常 },用这种方式来捕捉全部的异常信息。
这样作的好处就是快,傻。缺点就是一旦出现问题,就不知道问题在哪发生,怎么回事,若是有靠谱的QA还好一些,好比外企,他们都有规范的测试方法和测试流程,一旦发现问题,就会将重现捕捉完整的描述出来给开发者看。
不过,在国内没有严格的测试是很正常的,那么出现问题时,就傻了。客户是绝对不可能把出现问题的方式给你完整的Repro的,一旦出现问题,客户会干的就是急眼,那接下来怎么办?你就老老实实加班,老老实实的去猜去找问题。
当“try { … } catch(Exception anyException) { // 忽略异常 }”这样的代码充斥整个软件系统时,你就能够想象有多可怕,这个软件能稳定就怪了!
关于异常处理,另外一面,就是菜鸟程序员在写代码或者实现功能的时候,通常不考虑反面状况,一个软件按照正常步骤可能能走通,可是一旦出点意外,就麻烦了。如下就是一个典型的代码。
If(*****)
{
// ….do something…
}
这个代码处理了if,可是万一出现else的状况呢?可想而知,系统将会出现没法意料的状况。所以,这也是菜鸟程序员作的系统通常都很是不稳定的一个根源,作程序通常只考虑功能实现,忽略掉意外状况。
5
优雅与美观
菜鸟程序员并非缺少审美,缺少的是优雅和美观的抽象能力。一个好的系统,要作到两点,好用,好看!所以,这绝对不是单单功能上的堆砌。
不少国产软件都深深的烙上了技术人员设计的印子,一看就知道这个软件是出自一个技术人员的设计和实现,一看就知道这个软件的实现过程,这简直是惨不忍睹,不过,小伙伴们,这就是大家的机遇啊。
菜鸟技术人员开发功能的时候,通常都是从实现的角度进行堆砌,怎么简单,怎么来。不会去仔细分析,用户在操做这个功能的时候,到底还会作什么事情,各个功能之间怎么进行有机结合来完整的进行结合。相反,一些技术比较好的程序员每每都要直面客户,常常被客户骂,骂着骂着,也有点觉悟了。
固然,也有一些程序员由于自尊,直接不干了。不过,我以为厉害的程序员基本都有用户意识,也但愿本身的软件能有很好的评价,甚至可以影响社会。好用,好看,是软件可以被广泛采用的前提,所以,咱们须要学会抽象优雅。
6
基础扎实
技术知识决定一我的能作的技术的层次。基础的知识有计算机组成原理、计算机操做系统、网络原理、数据库原理、计算机图形学、编译原理、数据结构、离散数学、人工智能等等很高深的理论知识。
在这些基础知识之上,就是软件开发语言、类库、框架,面向过程、面向对象、面向服务等编程思想,架构思想等等。
这些知识不必定会影响你如今的工做,但必定会影响到你的格局,那格局确定也会影响到你自身的发展。我碰到过有些理论不好的人,但技术在公司内也是有些影响力的,所以,他们对技术原理就很不屑,甚至为本身不懂太多理论而擅长实战而沾沾自喜。
这些人会对那些懂理论,但动手能力通常的人显示出由内而外的鄙夷,可是他们殊不知道那些既有基础知识,也有动手能力的高手作出的东西是怎样的。就像不少人都想不通,那些技术天才是如何开发出一个数据库、操做系统这样的软件。
所以,若是你已经发觉本身基础不够扎实,那么仍是有空就修炼修炼本身的内功吧!
7
文档与表达能力
不少技术人员都写不了文档。不过,坦白的讲,若是要得到更好的报酬,文档是绝对关键的因素。没有文档就没有沟通,就没有交易。有人提了,“文档是第一辈子产力”,这是很是有道理的。
文档的类型有不少,针对的对象也各不相同。不一样的人,对文档的理解能力也是彻底不同的。所以,你的文档必须适应于你的目标。这个对于搞技术的人太难,他以为还不如写代码来得快。
表达能力决定了你所作的技术的影响范围,决定了你的影响力,决定你的威信。所以,也绝对的影响到你的报酬。由于这个能力而影响到你的报酬,你可能会内心以为亏,但没有办法,这是硬伤。
这可不只仅是我只是不擅长写文档,但我擅长于搞技术这么简单。若是哪一天,有一个擅长忽悠,技术不如你的人,爬到你的上面而且领导你,那也是该的。千万不要去怪别人擅长忽悠,而是要想办法来弥补本身的硬伤。
8
积极的心态
技术好的人,通常人都坏不到哪去。很简单的一句话,想要技术好,就要投入时间,有时间投入到技术,那么就没有时间投入到其它方面,特别是消极的坑蒙拐骗,所以,技术人员通常也都比较靠谱。
积极的心态,不只仅对于技术,对于生活也是如此。一旦有了积极的心态,那么菜鸟到高手的过程,仅仅是时间的问题!
9
以为软件不值钱
程序员都特别烦的就是作一个软件和一些水平不怎么高的技术人员谈费用的问题。只要是想要作好,没有哪个事情是简单的。凡是靠良心和能力谋生的,都是依靠自身的实力来获取合适的报酬,咱们每个人都须要有收入。
可是,咱们很难改变一些技术人员认为软件不值钱的想法,他们的理论是,这个功能放我身上,我一天就搞定了,凭什么你要那么多钱?
但是,我们的作法同样吗?一个功能的实现方法有不少种,就像我说的数据采集。若是你的数据采集实现没有如下“一、二、3”这些辅助的功能,后台的实现要简单的多。
若是没有指令重试,没有多线程,没有异步刷新,没有7×24小时稳定运行,没有采集数据丢失,没有指令优先级排列,没有多线程和分布式集群采集,没有支持1天1GB数据采集等等这些非功能性的需求。
那么这个软件会更简单,我也见过有人用一个控制台,用一个单线程,显示的信息都是彻底看不懂的二进制数字,运行一会CPU就100%,内存不断升高的采集软件。这个也算得上是采集软件。
不过,菜鸟程序员通常都会按照本身的作事方法来对软件进行评估,若是没有好的经验,通常都会认为软件很不值钱。事实上,作好看的、好用的软件很是难,作好看、好用、还要好维护以扩展的软件那就是难上加难。
软件是一个充满智慧结晶的劳动成果,若是说的高尚一点,有些软件时无价的。