如何为当今(复杂的)Web环境培训初级程序员?


39

目前,我们公司主要在Ruby on Rails Web服务器和大量不同的REST客户端中开发应用程序,从Java的信息亭系统到C / C ++的嵌入式设备(标准Web浏览器的接口除外)。我们需要扩展我们的团队,但由于未能找到优秀的高级程序员,我们决定付出一些努力来培训与公司一起成长的初级程序员。

我们已经给了他们一些Ruby和Rails书籍,并要求他们构建一些玩具程序,但是我现在意识到对于Web编程当前状态的学习曲线有多陡峭。

15年前,当我开始编程时,我仅使用Delphi和Source Safe,并且能够从一开始就生产可用的软件。它们都是简单的工具,很容易探究环境的内部运作。慢慢地,我开始使用第三方框架,切换到CVS,SVN,最后是Git,学习了构成当今Web的内容,例如HTTP,JavaScript,CSS,REST等。今天,即使经过多年的经验,我也不知道关于Ruby on Rails的内部工作原理与过去有关Delphi的工作一样重要,对我而言,这很重要,因此我可以将基本的学习模块与所使用的工具连接起来。

在我看来,我正在招聘的程序员将需要很长时间才能与团队整合并产生有用的东西,因为要使用单一框架(Rails)需要学习很多东西:Ruby,HTML,CSS,JavaScript, REST,测试用例,数据库访问(在框架内神奇地构建了SQL!),MVC,三种不同的程序包管理器(适用于Ubuntu,gem和bundler用于Ruby),ssh,git,Apache和Phusion Passenger进行部署等。

因为这是我第一次直接与初级程序员打交道,所以我感到迷茫。如果选择太多,什么是培训初级程序员采用当今Web开发最佳实践的最佳方法?


8
倒数第二段听起来好像您可能没有注意到过去15年中发生的重要变化:通才程序员实际上已经消失了。要使任何人都知道您所指的所有细节,那么他们必须从事该行业15年。查找/培训专家会非常好,他们非常了解您所列出的一两个要素,并由所需的各种专家组成团队(然后进行交叉培训)。或者,找到像您一样具有15年经验的高级工程师,但这绝非易事。
Jimmy Hoffa 2013年

仅供参考,陡峭的学习曲线意味着您可以真正快速地学习。错误使用不当会使人感到困惑:)
Alternatex

我总是用表达的意思是“难”(英语不是我的母语),但维基百科说,这是不明确的,所以我不知道什么是最好的选择在这里:en.wikipedia.org/wiki/Learning_curve :)
罗慕洛Ceccon

Answers:


39

很多人不会喜欢这个主意,但我会在任何可能的地方提倡:无论编程语言和环境如何,他们是否没有经验,以及是否有来自客户真实错误报告的维护任务尝试确保至少在其时间的30-40%(+)内将他们分配给此类任务。“这里是错误报告,请查看它,解决它。如果您不知道它的全部内容,请与经验丰富的同事进行交流,使用Google搜索,等等。” 关于实际问题的实际工作,没有玩具,至少:不仅是玩具。当然,也要确保有很多经验的人在发布并交付给客户之前先看看他们在做什么。确保新同事从同事和客户那里得到诚实的反馈。请谨慎选择这些任务,以免给他们造成负担,但请记住,有一天您希望它们独立完成工作。

进行错误修复是在学习中的工作,这使他们可以处理实际上已执行并具有一定关联性的代码(否则将没有错误报告),并在许多示例中向他们展示如何做到这一点。

焦点自动放在痛点上。他们将开始学习那些实际上会引起麻烦的细节。这也从一开始就将真正的责任置于他们的肩上,(如果维护本身并没有那么吸引人的话),如果他们做到了使客户/最终用户感到满意的话,这可能会激励他们。年长者会更认真地对待他们所做的事情,因为他们会知道如果事情出错了会带来的影响,这样也将简化与团队的整合,并且也会使他们自动彼此交谈。

重点不是要从一开始就使它们具有生产力(可能看起来像)。关键是要确保他们从一开始就知道自己应该做有价值的事情,并把重点放在最重要的事情上,而无需实际创建列表。

我确实有一些不时地工作的经验,经常有人从大学直接进入他们的新开发人员工作,而我看到的最糟糕的结果通常是当有人要求至少在维护方面没有经验的人进行新的应用程序开发时。只要确保他们总有一个可以迷失的人可以寻求支持。


我做同样的事情。好答案。
罗克兰

我从第一年就开始修复缺陷。当我继续进行其他项目时,我感觉到错误修复使我的工作做得更好,因为我知道该怎么做。
布兰登

8

让我们首先假设您已经雇用了真正有能力的初级程序员。这不一定是一个安全的假设,尤其是因为高级程序员在采访“经验不足的人”时可能会忽略基本的无能。

但是,假设他们有能力,第一步就是将他们送到班级。一星期的课程将花费您$ 2,000- $ 3,000(美国)。但是,它将为他们提供动手实践的经验,并由一名(希望)了解该材料的讲师以及旨在使他们快速入门的课程计划。派人带书和指令来“学习这件事”并没有什么价值可贵,而且可能花费更多(类的成本大约等于浪费程序员一周的时间)。

在他们掌握了基础知识之后,请与他们一起工作。坐在隔壁的办公桌旁,至少要浪费一半的时间来确保他们了解您的业务以及您的处事方式。是的,至少从一开始,它就会降低您的生产力,但从长远来看,这将使您的团队整体上更有生产力。如果您再次考虑成本,那么如果一个大人浪费一个月做错事,那大约等于您工资的半个月。


4

您要求他们执行的玩具应用程序应实现一些基本的CRUD功能,并且每个开发人员都应编写自己的代码。但是您可以在代码审查中讨论该应用程序,并提供提示。如果有可能合理地预期生产力,他们将需要首先了解MVC应用程序的总体体系结构。

从那里,每个开发人员都应该能够自己跳入相关主题,例如Javascript,CSS,DAL,模板生成器,路由等。您可以为他们提供指导,指导他们研究哪些主题(可以基于公司最紧迫的需求),指导他们并监控他们的进度。将开发人员一次转移到简单的项目中,这些简单的项目产生的功能将在您掌握必要的技能时立即推动您的实际开发工作。

您可以将一些经验丰富的开发人员与学徒配对,作为一种指导计划。对于初级开发人员,应该有一些可用的指南,以便他们知道何时可以中断其导师以及持续多长时间。他们的导师可以在开始编写真实代码时监督他们的工作。

如果您可以找到一个非常聪明,有理智的好奇心和自我启动能力的年轻人,那么您会度过一段美好的时光。我已经看到了这个过程的工作;这是我以前的雇主的做法,因为他不想花大笔钱给专家,尽管这更多的是“沉沦或游泳”(没有正式的培训计划)。他最大的挑战是让他们留下足够长的时间以收回他的投资。总是有其他地方更好的薪水的诱惑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.