首先,一点背景和隐喻

在中世纪时期,学徒将在车间工作,并由高级工匠(旅人)或大师级工匠亲自指导。 学徒有责任学习,观察大师和其他所有人的工作,质疑一切并尽可能多地练习。 这不同于老师负责教学的师生关系。 这是学徒必须推动自己的发展。

在师傅的指导下,学徒将每天学习和完善他的技能。 随着时间的流逝,主人将达到他的极限,因为他可以教徒弟,而两者之间的知识和技能差距将不再那么大。 然后,船长会公开承认该学徒为专业人士,可以独自承担工作,并以与交付自己相同的质量交付该交付。 此时,该大师将以自己的声誉而行,因为他是训练学徒的人,现在正在证明自己的能力。

这将是毕业点。 现在,学徒已准备好开始自己的旅程,成为一名熟练工。 作为旅行家,他会流连于各个城镇,为不同的大师工作并向他们学习,直到他被所有这些大师和其他工匠认可为大师。 然后,他将准备开设自己的商店,并开始指导其他旅行者和学徒。

回到现在

从现在开始,我将使用导师/受训者,而不是硕士/学徒。 主要原因是您不需要成为高级工匠来指导某人。 您也无需成为学徒即可获得导师。 除此之外,每个开发人员都有不同的专业领域。 他们在某些领域可能非常资深,而在其他领域则完全无知。 众所周知,软件开发并不像中世纪的铁匠铺那样有限。

导师的角色

决定指导某人是一项重大责任。 指导者的角色不仅仅可以通过电话获得,还可以在这里和那里回答一些问题。 尽管这可能非常有帮助,但是指导者的作用远不止于此。 指导者有责任使受指导者成为一名优秀的专业人员,包括技术和个人方面。 指导者不仅会教受训者特定的框架或技术,还将教受训者如何成为专业的软件开发人员,包括道德和行为准则。 从技术角度来看,导师将尽最大努力教授他所知道的一切。 如果他们不能一起工作,则预期导师将保留正式时间与受训者一起工作。 从个人的角度来看,导师应在其职业生涯(旅程)中帮助受训者,提供一些指导,建议,开门或展示自己已经打开的门,将其介绍给自己的专业圈子以及其他由导师判断的事物这对受训者可能很重要。

受训者的角色

期望受训者尽其所能向导师学习。 受训者必须心胸开阔,能够接受批评,能够倾听,并且在使知识永续方面非常积极。 练习是关键。 希望该受训者尽可能多地练习,使他或她自己每天都变得更好。 人们也希望月经会产生一些东西。 指导者可以衡量其进度并可能确定需要改进的地方。 除了给受训者带来直接好处外,这也是让指导者兴奋地寻求帮助的最佳方法。 导师必须表现出热情和学习的明确愿望,否则导师可能会失去兴趣并浪费时间。

得失

导师有机会永久保留他们的知识,因为他们需要组织思想来教导某人。 导师还需要努力学习和练习,以不断养活他的受训者,这显然是一件好事。 他们将以良好的基础,道德和专业精神,获得帮助开发人员发展职业的满意之举。 他们将尽自己的一份力量提高我们行业的水平,培训下一代,这本身就是一个非常崇高的事业。 但是有牺牲,主要的是时间。 导师应将时间用于他们的受训者。 如果导师和受训者每天都在一起工作,那么他们不需要太多时间在外面工作。 但是,如果他们不这样做,则导师需要明确说明,他们需要找到并为其受训者预留时间,最好是定期进行。

学员有机会作为专业软件开发人员加快开发速度。 他们受益于多年来导师的经验,从而缩短了学习某些知识的时间,并避免犯同样的错误。 他们还有一个值得信任的人,他们可以对所经历的事情(技术问题,经理的问题,流程,官僚作风,截止日期,估计等)提供不同的看法。 没有任何科学证据来支持我,我敢说,只要双方都保持正确的态度,并且有足够的时间在一起,那么受训者就可以在两年内学到导师在十年中学到的知识。 这使受训者的职业生涯有了巨大的开端。 从受训者的角度来看,时间永远不应被称为牺牲。 至少可以说,当某人免费获得大量知识和帮助,从而可能节省自己的职业生涯时,抱怨时间(或缺乏时间)将是非常短视的。

相互尊重

导师和受训者都应相互尊重。 为了建立健康和繁荣的关系,双方都必须作出承诺。 这种承诺是相互尊重。 导师对与导师的定期互动和时间投入表示尊重。 这位受训者对自己的卓越表现和进步表示敬意。 对于那些要与家人和朋友相处以帮助他的人来说,这是受训者所能做的最低工作。

到目前为止,我已经给出了一些背景历史,并且根据软件Craft.io原则描述了指导者和受指导者的角色和职责。 现在,我将讨论与关系本身相关的其他一些方面。 请记住,这里的重点是工作以外的指导。 让我们从头开始。

我们如何找到导师或受训者?

这可能是最难回答的问题。 我可以考虑三种可能性(无特定顺序):

  1. 尝试找到每天与您合作的人。 这将使方法更容易。
  2. 通过用户组和社区。 如果您是用户组或社区的活跃成员,则将有机会结识很多人,并可能找到所需的导师或受训者。
  3. 通过指示:朋友可以向某人推荐/介绍您。

选择一名导师

尽管不是规则,但通常在Software Craftsmanship中,由受指导者选择指导者,或者至少开始对话。 实习生需要对他想走的道路有一个想法。 例如,他可能想了解更多有关移动开发的知识,担任顾问,在高性能低延迟系统中工作,了解游戏开发,改进他的自动化测试技术,或者在最佳情况下,只是学习如何成为一个更好的开发者。 无论受训者的志向是什么,受训者都需要确保他的未来导师是能够提供他或她正在寻找的知识的人。

不幸的是,这说起来容易做起来难。 取决于受训者在其职业生涯中所处的位置,他可能不完全知道自己想要什么。 他甚至可能不知道自己有什么选择。 尽管优秀的开发人员就是优秀的开发人员,并且软件开发的基础和原则始终适用,但是我们都知道,在不同类型的系统中使用的技能集可能会有很大差异。 一个经验丰富的开发人员花了他的大部分职业时间进行网络开发,并成为用户体验方面的专家,可能需要一段时间才能在没有GUI的完全服务器端异步应用程序中表现良好。 在高度依赖算法且不使用任何数据库的应用程序上工作可能与开发移动客户端应用程序完全不同。 在咨询公司工作的方式与在银行或创业公司工作的方式可能完全不同。

这些是开发人员在其职业生涯的早期阶段可能甚至一无所知的事情。 如果您正处于职业生涯的现阶段,最好的建议是您纯粹专注于成为一名出色的开发人员并学习基础知识。 诸如测试驱动开发,干净的代码,重构,面向对象的原理,不同的语言和范例之类的东西。 一旦有了这些,您将更容易选择下一步。

选择一名导师并非易事。 也许一位导师将无法教授受训者想知道的一切。 受训者应该专注于下一步,而不是专注于整个职业生涯中想要学习的一切。 一旦有新的机会和选择出现,受训者可能会经常改变主意。 他们应该保持选择立场,并随着时间的流逝选择其他导师。

选择一名实习生

导师在接受受训者之前应该问自己:我能为这个人奉献时间吗? 我真的可以帮助他或她的职业吗? 如果答案是肯定的,那就太好了。

在受训者中寻找的第一件事是激情。 由于导师会分配时间帮助某人,因此他们应确保该人应得的帮助。 确保受训者致力于改善自己。

指导者需要决定的另一件事是他们未来的受指导者应该具有什么样的资历水平。 一些导师更愿意选择应届毕业生,其他人则更喜欢具有一,两年经验的大三学生,而另一些人则更愿意获得长者或即将成为长者的受训者。

选择一名实习生是非常个人的事情,不同的辅导员会有完全不同的标准。 如果导师已经认识了受训者,则比这容易得多。 当导师不认识受训者时,我可以建议一些可以组合或独立使用的选项:

  • 介绍信:导师可以要求受训者提供迄今为止的职业概况(不是简历)。 在此摘要中,受指导者将描述他的工作,他认为自己的职业,所学到的东西,提供(如果有的话)链接到他的公共资料的链接,例如github帐户,twitter,博客,Web /移动应用程序和最重要的是,他对导师的期望。
  • 编码挑战:指导者可以在考虑说和接受受指导者之前进行挑战。 例如,受训者需要使用他的首选语言编写一个简单的博客或Wiki应用程序,并将其部署在某个地方(heroku,cloudbees,Google App Engine,Amazon Beanstalk等),并且代码应该是公开的(例如github)。 或者可能更简单一些,例如使用两种不同的语言或类似的方法来解决一些kata。
  • 博客:Mentee如果没有博客,则应创建一个博客,并发布一些与他自己正在学习的内容相关的帖子。

导师,如果走这条路,应该根据他对受训者的资历水平提出挑战。 一旦指导者对潜在的受指导者的初步努力感到满意,他就可以决定是否接受该受指导者。

指导常见的误解

导师并不比受训者好 。 通常,指导者将在被指导者选择指导的领域中拥有更多的知识和经验。 但是,与其他领域的导师相比,受训者可以轻松拥有更多的知识。 受训者不应期望导师能够解决所有问题,并且导师也不应天真地认为受训者一无所知。 导师和受训者都有技能和局限性,这两个部分都需要理解。

导师不应该再年轻几年 。 对于导师来说,这可能令人沮丧。 人们是不同的,导师如果不对准备加入的那种受训者更加开放,就会错过他们。 没有理由如此严格。 指导具有不同个性,可能略有不同野心的人可以极大地丰富导师和受训者。 但是,重要的是,两者必须具有相同的价值观和原则。

受训者不应期望导师会改变他们的生活 。 指导者将在那里为受指导者提供指导和教导他们所知道的知识,但是由受指导者决定如何处理。 导师应该尽自己的一份力量去改善自己,而不是认为导师会为他们提供帮助。 受指导者要照顾自己的职业。

一起走(或至少走一部分路)

一旦建立了导师与受训者之间的关系,可以公平地说他们将一起旅行。 每个软件工匠都在通向掌握的个人旅程。 他们都在走很长的路 。 导师和受训者都将在彼此共享旅程的同时学习。

在指导期间应该做哪些指导者和受指导者?

好吧,这取决于指导类型。 通常,他们期望编写代码,大量代码。 理想情况下,他们应该一起构建一些东西,在编写代码方面,受训者应该是最活跃的。 指导者应尽可能与受训者配对编程,并检查其代码。

同意创建应用程序可能是最好的选择,因为这不仅涉及编写代码,而且还考虑需求,能够确定优先级,定义开发过程,部署策略,生产环境以及与软件相关的所有其他方面现实生活中的项目。

在katas上工作也是有效的。 对于受训者来说,这是一种简单快捷的方法来学习基本技能。 当受训者对TDD,命名,重构,编程语言范例等基础知识感兴趣时,可以使用此方法。但是,在学习了使用kata的一些基本技能之后,他们应该着眼于做一些更大的事情来真正模仿他们将在其专业环境中工作的应用程序。

建立目标并跟踪进度

建立目标绝对是指导中的好习惯。 它使导师和受训者专注于他们想要实现的目标。 努力实现目标永远是学习和学习某些东西的最佳方法。 目标应该是可以实现的,并且可以用来激励和指导人们提出的建议,而不应被视为一个艰巨的最后期限。 但是,它们应尽可能具体,例如,编写具有功能X,Yand Z的应用程序,并将其部署到生产环境中,或使用TDD进行许多分类,编写博客帖子,阅读书籍,提交补丁以打开源项目,或双方同意的任何内容。

跟踪进度很重要,以便导师和受训者都能看到他们的进展情况以及受训者的发展情况。 跟踪进度完全与反馈有关。 反馈回路越短越好。 它也是触发有关改进和改进的对话的好工具。

指导应该持续多长时间?

不幸的是,这是另一个没有确切答案的问题。 这将在很大程度上取决于指导的类型,受指导者想要向指导者学习多少以及指导者必须提供多少。

有人说这应该是一生的承诺,有人说应该持续2至5年,有人说可以短短几个月。 一些指导是从非常技术性和特定性的事物开始的,例如学习语言的基础知识或测试学科。 但是,它们可以演变到整个项目生命周期,甚至可以演变成长期的职业建议,人脉关系,书籍和会议的帮助等。

我个人绝不会尝试对此进行定义。 享受旅程,让时间告诉您指导何时终止。

它如何以及何时终止?

对于大多数关系而言,导师和受训者都需要以不同的方式继续他们的旅程。 这并不意味着他们再也不会彼此交谈或不喜欢彼此。 这仅意味着他们需要继续前进,向他人学习或向他人学习。 此外,我们都会改变下一步的思路,我们需要对此做出反应。

重要的一点是,无论谁愿意终止关系,终止都应该是明确的。 这两部分都应该清楚地知道指导已经结束。

专业,声誉和公众认可

软件Craft.io完全是关于专业性的 ,几乎不谈论声誉就不可能谈论专业性。

在整个指导期间,重要的是,指导者应宣传其受训者的进度。 导师应该公开认识受训者掌握的所有技能,这将有助于受训者建立自己的声誉。 但是,导师还需要意识到,每当他们为某人提供担保时,他们也会将自己的声誉传给别人。 人们也希望导师能够认可他们的导师所学的所有东西。 这种相互认可是可能有助于双方建立声誉的事情之一。

提高标准

导师制是软件Craft.io的核心,对于开发人员而言,这可能是我们提高行业门槛的最有效方法之一。 彼此分享我们的知识和经验将帮助我们从错误和成功中学习。

我们可能只花了很少的时间就可以向某人教很多东西。 通过这种方式,受训者可以在更短的时间内吸收大量知识,从而使他们加班后的职业比她在职业生涯中拥有的任何导师都更加完善。

无论我们的资历水平如何,或者如果我们正在接受其他人的指导,如果我们都承担着指导某人的责任,那么我们所有人都将帮助提高我们的行业标准。

参考: JCG合作伙伴提供的 软件技巧指导-第1部分 , 软件技巧指导-第2部分和软件技巧指导-第3部分   制作软件博客上的Sandro Mancuso。

翻译自: https://www.javacodegeeks.com/2012/03/mentorship-in-software-craftsmanship.html

软件Craft.io指导相关推荐

  1. code craft_评估您作为产品设计师的Craft.io技能

    code craft 重点 (Top highlight) When we think about design skills, craft skills easily come to mind. T ...

  2. code craft_以Craft.io为先—关于我们行业的实践职业道路的系列

    code craft 重点 (Top highlight) For the past two decades, digital product design / UX has been shiftin ...

  3. 给大家介绍下,这是我的流程图软件 —— draw.io

    前言 之前推了一篇文章<十张图带大家看懂 ES 原理 !明白为什么说:ES 是准实时的!>,很多小伙伴都比较好奇在文章中的图是用的什么画图软件?看那么明显的手绘风格,当然是手画的啦!(开玩 ...

  4. 医用计算机软件属于,分类界定 I 征求《医用辅助决策软件分类界定指导原则》(征求意见稿)...

    原标题:分类界定 I 征求<医用辅助决策软件分类界定指导原则>(征求意见稿) ▲关于征求<医用辅助决策软件分类界定指导原则>(征求意见稿)意见的通知(图源:标管中心) 按照国家 ...

  5. 软件设计概念-指导原则|Aspects|设计元素

    软件设计概念 软件设计概念 设计过程的任务集 软件设计的指导原则 设计基本理念 模块化设计原则 信息隐藏原则 步进式的细化原则 功能独立原则 重构原则 Aspects 设计元素 数据元素 架构元素 接 ...

  6. max图像io错误_解决3dmax软件出现IO error错误异常的有效方法

    3dmax出现IO error错误该怎么办?大家在使用3dmax软件时有没有遇到过出现IO error错误异常的情况,本文小编将要和大家分享解决3dmax软件出现IO error错误异常的有效方法.有 ...

  7. code craft_软件,美学和Craft.io:Java,Lisp和敏捷如何塑造和反映其文化

    code craft 重要要点 软件行业在建筑和构造上标榜自己的风格,但很少讨论美学 美学不仅关注事物的外观以及它们是否取悦我们:它还可以关注社会的基本方面以及它们的表达方式,就像约翰·鲁斯金(Joh ...

  8. 流程图软件draw.io

    工作中经常需要梳理一些流程图,时序图.以前用微软Visio绘制流程图(当然不是正版Visio).后来为了响应国家号召,改用processon(proceson.com)进行绘制流程图.Processo ...

  9. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

    文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...

  10. RHEL 5下iSCSI Initiator软件安装配置指导

    RHEL 5已开始在内核中加入了对iSCSI的支持,使用的 iSCSIInitiator软件是Open-iSCSI Initiator,支持万兆网卡,其配置方式与RHEL 4及更早的RedHat Li ...

最新文章

  1. 拟牛顿法-DFP算法举例与matlab代码实现(转载+整理)
  2. Leetcode: Single Number
  3. ssl1746-商务旅行【tarjan,LCA】
  4. R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块
  5. 这个没去大厂的程序猿,用 4 年时间证明自己做对了!
  6. Android PopupWindow系列 (一) —— popupWindow基本使用方略
  7. Path variable [contentHash:8] not implemented in this context: styles.[contentHash:8].css
  8. bzoj 3209: 花神的数论题 喵哈哈村的秘境探险(四)
  9. Nginx 配置 SSL 证书 + 搭建 HTTPS 网站
  10. 《移动平台开发实践》第1周作业
  11. 容斥原理+简单博弈论(找个时间补充一下sg,希望我记得)
  12. Kafka配置JAAS
  13. 嵌入式研发人员的核心竞争力浅谈
  14. 股票实时数据如何分析?
  15. linux笔记本设置开机自动禁用触摸板
  16. 基于Android的班级同学录校友录系统app
  17. js阻止事件的默认行为发生的三种方式
  18. 【解题笔记】编程初学者入门训练
  19. Bootstrap字体图标
  20. WiFi beacon时槽

热门文章

  1. Make sure that `gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'` succeeds before...
  2. msfvenom生成后门程序及利用
  3. python习题练习1224
  4. cs系统的服务器地址,《反恐精英CS》服务器地址
  5. MySql必知必会学习
  6. 标志设计|标识设计|商标设计|logo设计|的起源
  7. WAP技术与应用(转)
  8. Raspberry Pi 4B SSH、VNC及串口连接配置
  9. SpringMVC整合activiti Modeler
  10. 了解BigDecimal常用坑,不迷路