自我认识不清的开发者
在工作的几年里,我发现作为开发人员普遍存在自我认识不清的情况,出现这种情况的原因主要是不了解做为一个开发人员所应该具有的各种能力。在抛开计算机语言、数据结构及算法和操作系统网络数据库等层面的情况下(因为这些在具备兴趣这个要素时自然会主动的去学好),那么我认为做为开发人员所需要的要素:
- 兴趣;
- 理解能力;
- 学习能力。
以上是一些基本的要素,是能够把程序写好、解决问题的要素,但要想成为更高级的开发者,还需要:
- 成为一个有思想、会思考的人;
- 智商;
- 分析能力。
如果你研究过PetShop,你可能可以模仿它并用到你们自己的项目里,可能做出来的东西也不错,但不代表你就是一个有思想、会思考的人,仅仅只能说是你的学习能力不错。
一个有思想、会思考的人往往是一个严格要求自己的人,还常常是一个懒惰的人,因为他不想去做重复的劳动,他总是想尽办法去让一切变的触手可及,确切说是一个有自己的思想、用自己方式思考的人,但现实中很多开发人员只会模仿。
因为这点这个世界才有了那么多了不起的企业,那么多了不起的语言、平台、框架,还有那么多了不起的软件以及了不起的人,等等。有了自己的思想后,智商和分析能力会让你能够实现你的思想。
如果还要加点什么要素的话,我想就是毅力、敢于表达和善于表达自己的思想。
- 自我认识不清的开发者
可以这么说,很多做开发的根本不适合做开发,不少有两年以上开发经验的人,按理他应该比刚毕业没有开发经验的学生要有更多的能力,但事实是这两年他不仅把上学时学的数据结构等知识丢掉以外,他还没能把他现在工作中用的主打语言弄透,稍微复杂点的功能就实现不了,只知道使用现成的东西,更加糟糕的是这些年他没能在脑子里留下任何东西,对面向对象设计都没能掌握,却在纠结于设计上(包括架构)是用工厂模式好还是策略模式好。
开发软件是一个很辛苦的工作,客户愿意使用软件,当然是这个软件能够解决他们工作中的问题,而不是把他们的工作变的更繁琐,如何让软件操作起来更简单,这是一门学问,而不像我们平时遇到的增删改查这么简单。很多开发人员“一山望着一山高”,他发现别的公司的待遇比他现在获得的高,他就觉得他也应该获得更高的待遇,或者想跳槽,他不去想想同样做为开发者,个体的差异有多大,可能以他的能力目前仅仅只能做做增删改查的工作,而他却希望获得其他人做复杂工作所得到的待遇。
不过这也不是指所有人,有些刚毕业的学生有很强的能力和潜力,他完全达到了上面说的基本要素,而且他工作很积极,代码产生错误的可能性更小,甚至比有几年工作经验的同事更有能力并且做的更多的工作,而他获得的待遇相比之下很少,这个时候我很支持他为自己去争取更多或者跳槽。另外如果具有上面说的高级开发人员的能力,同时在目前的情况下无法获得更多,那么跳槽是最好的选择。
我很支持跳槽,跳槽是优化我们这个行业资源分配、让每个人在合适的企业和合适的岗位贡献他的能力的最好方式。
说完对开发人员的看法,以后要说下作为软件开发的企业和头头应该要具有的能力。
我想做什么,我最擅长做什么,我现在、将来应该要做什么?这个是很多人都喜欢问自己甚至问别人的一个问题。
一、学会开始思考并初步认识自己
我始终相信每个人都在思考,甚至思考的主题都有些类似,如学业、工作、薪水、家庭、人生目标、个人爱好、文娱活动等。因此,我认为要认识自己的第一步,就是不断的思考上述的一些主题,而在思考的过程中,你应该可以总结出你的学习能力、技术能力,你的处事能力、应变能力,你的忍耐力、持久力,你的想象力与表现力,你的交际能力,你的家庭背景、兴趣爱好、发展潜力等。你可以尝试参照身边的同龄人或者你认为可以作为比较的人,并把这些选项进行更细致的对比,你就会更加的了解自己了。
自我认识有个比较书面的解释:
自我认识是指一个人对自己的生理、社会、心理等方面的意识,属于自我意识的认识范畴.它包括自我观察、自我图式、自我概念、自我评价等。
因此,一个人如果要认识自己,那么首先就是要判断出自己在生理、社会等方面的一些表现情况,只是这个太抽象、太缺乏可操作性了。而根据我自己的经验和我上面的说法,我们可以针对自己的职业类型进行初步的划分并对自己给出一个基本的评价,如一个计算机软件的从业人员,我大致设计了一套自我评价标准:
大类 |
子类 |
分值 |
|
学业/工作 |
计算机科学 |
程序设计语言 |
|
数据结构与算法 |
|||
操作系统/数据库 |
|||
组成原理/编译原理 |
|||
高数/线代/离散…… |
|||
其他计算机基础学科 |
|||
软件工程 |
需求调研 |
||
需求分析 |
|||
概要设计 |
|||
详细设计 |
|||
系统编码 |
|||
系统测试 |
|||
系统发布 |
|||
系统维护/升级 |
|||
项目管理 |
计划管理 |
||
成本管理 |
|||
质量管理 |
|||
进度控制 |
|||
范围控制 |
|||
开发规范 |
|||
学业/工作 |
行业知识 |
互联网 |
|
企业管理行业 |
|||
金融、房地产、电信… |
|||
GIS等 |
|||
其他学科 |
外语 |
||
心理学 |
|||
管理学 |
|||
经济学等 |
|||
家庭 |
与女友(老婆)关系…… |
||
与父母关系…… |
|||
…… |
|||
职业目标 |
技术人才 |
程序员、高程、架构师……等 |
|
技术管理人才 |
项目经理、部门经理、研发经理、技术总监…… |
||
老板 |
|||
…… |
其他职业等 |
||
个人爱好/文娱活动 |
运动 |
打球、跑步、健身、游泳等 |
|
娱乐 |
唱歌、跳舞。 |
||
餐饮 |
中餐、西餐…… |
||
休闲 |
喝茶、钓鱼等 |
||
分享 |
博客、围脖、讲座等 |
||
个人性格与能力 |
持久力 |
是否经常能坚持完成时间持续较长的任务 |
|
忍耐力/判断力 |
是否能冷静处理一些意外、突发事件 |
||
抗压力 |
面对各种打击与重压时 |
||
沟通能力 |
是否经常能通过口头或书面解决一些人的问题 |
||
协调能力 |
是否经常能把一些责任人联系在一起,共同为目标努力 |
||
交际能力 |
是否能游刃有余的和朋友、同事、家人、陌生人进行交谈、交往等 |
||
一些自然属性 |
家庭经济状况 |
富有、中等、贫穷等 |
|
兄弟姐妹的情况 |
经济、政治情况等 |
||
自身的容貌、身高等 |
帅气?漂亮?肌肉男?…… |
二、学会开始改造自己
通过了解了自己之后,那么就可以有针对性的同时根据当前环境进行对症下药,解决目前最需要解决的问题,并进行持之以恒的付出,不断改造自己,直到自己满意为止。其实在不断改造自己的过程中,就是在不断的进行设定目标、实现目标、完成目标的过程。老子说:“知人者智,自知者明。胜人者力,自胜者强。”也就说如果没有自知,也就没有自胜,也就没有办法去改变自己,战胜自己。如果说自己了解自己算难的话,那么要实现自我改造那就是难上加难。当然我自己也还远远未达到完全了解自己的程度,也就远未达到自己全部改造自己的程度,但是以我的经验是我们可以从一个小方向来慢慢进行改造,然后由点及面,由表及里,正所谓星星之火,可以燎原了。举个例子,如在开发技能上,假如我水平还可以,但是我沟通能力差,那么我就可以尝试去多沟通,利用各种能利用的机会(如公司聚会、一些日常会议、讲座等)去锻炼我的沟通能力、表达能力等;再者如我觉得个人计算机基础实力不行,那么就可以设定一个计划去补补一些基础知识,如数据结构与算法、组成原理等;现在很多朋友都在补习英语,也相当于是在提升自己、改变自己了。
另外我想说说计划的制定与执行,计划是需要花时间来进行制定的,要切合实际,同时又要有足够的挑战性,还要给自己一些余地,这其中的滋味就只有每个人自己去尝试才知道了,同时计划又重在执行,而且做出来的计划还要不断去调整,只有这样,在能完成的过程中,既有动力也能不断给予自己以信心。
三、珍惜时间,不要放弃
都说有志者,事竟成,这里的志既包括目标(志气),更包括意志。如果一个人不断在做我上述所说的2点事情,并经过一段时间的努力后,如半年、一年甚至几年后,我想应该就会发生质的变化了,这个时候大多数人都会开始认为你“智商高,分析能力强,是一个有思想、会思考的人”,但是其实一路走过来的你自己最清楚,智商其实都相差不大,只是你明白了学会认识自己并不断改变自己同时永远没有放弃而已!