简明现代魔法 -> 互联网时代 -> 用软件版本来描述程序员的层次

用软件版本来描述程序员的层次

2010-07-17

I was thinking about the level of programming abilities lately, as we are starting to interview for an open position. I thought, "Wouldn't it be nice if programmers came in version numbers like software?" This would make it easy to say, I need a version 3 programmer with abilities in languages A, B and C. It's so difficult to say Mid-Level developer, because mid-level is so subjective. Mid between WHO? So here are my thoughts of what the versions for a web programmer might be:

国外开发者博客中有一篇有趣的文章,将程序员按水平像软件版本号那样划分为不同的版本。相对于在招聘时分为初级,中级,高级程序员,直接表明需要某种语言N版本的程序员或许更方便直接。根据作者的观点,可将WEB开发者大致分为以下几个版本:

Alpha

Alpha: Has read some books and has put together some web sites for friends (mostly using Dreamweaver or FrontPage), but the quality is such that you probably would be leery about hiring them professionally until they learn how to hand-code some HTML.

阅读过一些专业书籍,大多数能用Dreamweaver或者FrontPage帮朋友制作一些Web页面。但在他们熟练掌握HTML代码以前,你大概不会雇佣他们成为职业的WEB制作人员。

Beta

Beta: Is getting better at putting together sites and has some skill with HTML; but still uses tables for everything, and knows next to nothing about CSS. Still is intimidated by the thought of dynamic web sites or database.

已经比较擅长整合站点页面了,在HTML技巧方面也有一定造诣,但还是用Tables来制作页面,不了解CSS,在面对动态页面或数据库连接时还是底气不足。

特征:熟练掌握HTML

Pre Version 1 (0.1)

Pre Version 1 (0.1): Just a bit above Beta. Knows HTML and is starting to understand how CSS is supposed to work. Does some with JavaScript, but is still amateurish style. Starting to get into dynamic sites and how to connect to database. Still not someone you'd hire as a web developer for a professional team.

比Beta版的开发者水平要高。熟悉HTML,开始了解CSS是如何运作的,懂一点JavaScript,但还是基于业余水准,逐步开始关心动态站点搭建和数据库连接的知识。这个版本的WEB开发人员还远不能成为雇主眼中的香饽饽。

特征:能独立完成一个静态站点的设计和制作,站点用户体验和HTML组织相对较为合理和美观。

1.0

1.0: Can put together a web site. Will take the most direct route to every problem. Has no concept of scalability, extensibility or what's really going on "under the covers" of their favorite web design tools. Good entry-level developer. Needs lots of help and supervision.

能够基本把控整个站点开发,针对每个问题尽可能的找到最直接的解决办法。但对可测性,可扩展性以及在不同(层)框架下如何选择最合适的WEB设计工具尚无概念。这个版本的WEB开发者有良好的技术基础,需要有进一步的帮助和指导。

特征:能独立完成中小型动态站点的设计、架构、开发,熟练掌握CSS、Javascript、HTML Dom模型、一种数据库技术、一种服务端开发语言,了解数据库设计的三大范式,了解业务领域的建模和分析过程、方法

2.0

2.0: Understands Object-Oriented development. Understands that there is a need for tiered development and separation of concerns. Tends to find more elegant solutions to problems and may, on occasion, use a design pattern, but has no concept of design patterns. Good junior developer. Can be let loose on coding things and may need some help finding a better solution to complicated problems.

懂面向对象的编程语言,理解分层开发的必要性,关注代码分离,对问题寻找更完美的解决方法,偶然也会考虑设计模式的问题,但对此仍然概念不清。属于优秀的初级开发者,能完成较松散的代码开发(相对大型严谨的站点开发而言),在面对较复杂问题寻找解决办法时需要周边人的帮助。

特征:熟练掌握oop/ood的一种以上编程语言,系统地学习过设计模式,了解开发领域的建模和分析过程,熟悉TCP和相关协议(http)的本质,了解WebServer的部署、维护、优化。

3.0

3.0: Starting to understand object-oriented development and design patterns enough to see the use of them. Can even recognize a design pattern when they see one, but may not always be able to see a patterned solution to a problem. Starting to be able to architect solutions that have good separation of concerns and is testable. Knows a few different languages and WHY they are different (i.e. their best uses). Good mid-senior developer. Can easily be trusted to develop a solution and provide guidance to v1 and v2 developers. May still have trouble with more difficult architectural solutions but, with a little guidance, they understand and will remember the decisions they made and WHY for future projects.

开始较为深入的理解面向对象编程和设计模式,了解他们的用途,当看到好的设计模式时能看透其本质,逐步关注分层的架构解决办法和可测试性。理解不同的开发语言并能说出他们的异同(例如各自的优势)。属于优秀的中级别开发者,雇主也确信他们最终能找到问题的解决办法,这个版本的人可以给1.0和2.0的开发者以指导。但他们对架构的理解仍然不够清晰,值得一提的是,只要给予一些指导,他们能很快理解并熟记做出的决定,以及选定方案的优势所在。

特征:熟练掌过OOP/OOD的精髓,能够设计和实现出合理的可重用的类库/框架,熟悉设计模式并能够选择性的应用到工作中,熟悉开发领域的建模和分析过程,能够进行中型系统的技术架构分析和设计。

4.0

4.0: Understands patterns and sees patterns within user stories. Starting to explore methodologies, architectures and approaches to software development. Learning has begun to transcend language and technology. Constructs and deconstructs applications from their requirements in her head. Can see abstractly, how patterns fit together and how different x-driven designs can be applied to different situations. Is a decently versed Polyglot Programmer. Understands the nuances of different systems and methodologies. Good Senior programmer. Will easily be able to help v2 and v3 programmers to push themselves to the next level.

理解模式,重视用户的反馈。着手研究方法论,架构设计和软件开发的最佳入口。头脑中已经形成了超越开发语言,技术架构的整体方案,可根据需求解构程序。能从理论的角度,不同模式如何融合成最佳形态,将多种X-驱动的模式应用到不同的方案中。是精通多语言的高手,理解不同系统和方法论的细微差别,属于高级程序员。这个级别的人能够轻易的辅导2.0和3.0的程序员,将他们推向更高的级别。

特征:熟练开发模式的设计和整合,能够设计出适合团队的开发模式、流程、基础框架,能够进行大型系统的技术架构分析和设计,熟悉分布式计算、分布式存储、负载均衡技术并能合理应用,能够有效地组织一定数量的硬件设备用于系统运作。

5.0

5.0: Thinks in terms of systems. Can still get down into the bowels of any system and rescue it from total code rot, but is much more valuable in making teams cohesive and preventing code rot. Can easily see when a v1-4 programmer might be starting to derail in their designs and can keep a team of developers motivated and excited about creating software solutions. Leads by example. Is always hungry for new and easier ways to accomplish development tasks. Can easily be trusted to run the entire IT department if they are required to. Good Senior Developer or Architect.

从系统的角度考虑问题。对各种系统结构有深入研究,能对整个代码架构中的问题进行改进。在团队粘合性以及代码安全性方面有杰出贡献。对1.0到4.0版本的开发人员出现的问题能及时察觉,让整个团队保持积极性且保持兴奋的状态创建软件解决办法。举例来说,他们总是对新的技术和信息保持饥渴状态,试图用最简便的方案解决开发任务。在整个IT团队中获得信任,属于高级程序员和架构师。

OK. So those are my thoughts. I didn't really edit these or spend a lot of time revising the definitions. Anyone got extras to add? changes to mine? I'd like to make this a group-think project. I know people have been trying to do this from the beginning of time. I have no delusions that this will become an ISO standard for identifying developer competency. But we should at least be thinking about it. What are YOUR versions? I want to challenges dev bloggers to write a blog about THEIR thoughts on developer versioning.

特征:优秀的系统架构师/系统分析师/团队管理者。

那么,您属于哪个版本的程序员呢?

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们