程序员进技术团队一定要做的7件事

阅读 14
收藏
2018-05-15
原文链接:zhuanlan.zhihu.com

每一个web开发人员在职业生涯初期都会进入开发团队。如何让自己工作更高效,并成为团队其他成员希望合作的人?这里有你需要掌握的7个技能,相信以下内容对正在求职的你也有很大帮助。

技能1:学习发起GitHub pull请求&代码审查

和独立完成工作不同,当作为技术团队的其中一员时,整个团队的责任是确保项目中都是高质量、经过测试和没有bug的代码。

一个好的技术团队都会在代码修改前进行代码评审,以确保代码质量达到要求。这项评审工作一般是由没有参与编写代码的人来完成的,他们需要检查提议添加的代码并进行逐行修改,还要寻找可能存在的问题。

在新代码进入主分支之前请求代码审查被称为“pull请求”,好的技术团队不会允许没有经过pull请求的代码进入项目。

由于经常需要代码审查,GitHub提供的高级功能可以让团队轻松执行审查工作。

以下是Firehose项目的一名学生的GitHub pull请求的示例:

你可以看到指导老师是如何在特定代码行上使用内联代码注释功能来帮助学生更好地组织代码。

无论你是想为开源项目做贡献还是在技术团队中工作,你都应该具备以下技能:

  • 创建新的pull请求,并向团队提交代码更改
  • 观察别人的代码,记下你认为可能被忽略的东西
  • 回应其他人对自己代码的关注

对代码的反馈作出回应对你成为一个高效的开发人员至关重要。通过回应GitHub上的反馈,你能收获许多,成长为一个更强大的开发人员。

技能2:学会拆分问题

每个团队成员都能使代码数量成倍增长,为了让所有参与项目的人都能获得回报,大任务可以分成许多并行处理的小任务。

举个例子,如果你自己在做一个BlackJack游戏,你的任务就是实现以下内容:

  • 创建一个BlackJack游戏

如果你有一个团队来构建这个BlackJack游戏,同样的项目可以被分成许多小块,每个成员可以同步执行。

  • 为web应用程序创建一个登录页面
  • 为拥有MailChimp账号的用户储存电子邮件
  • 在代码中构建一副牌的代表
  • 支持用户登录和退出
  • 优化移动端页面

通过分解任务,团队可以分步骤地完成最终目标。

即使是在专业领域,大多数项目也很难全部完成,因为对现有的应用程序经常需要添加的附加功能。尚未构建的功能列表估计要花一年或更多的时间才能完成。

因为技术团队经常处理这些工作,而且这是个长期的过程,所以需要一步一个脚印地去做。

技能3:实施测试驱动(Test-Driven)的开发

在团队中工作,你需要拥有一个强大的测试套件,不要自己一个人完成全部的编码工作。这是因为项目可能会积累大量的代码,比如10000行或者更多,并且可能会非常复杂。面对这些代码,对于之前没有直接参与应用程序编码工作的人,很难了解到每个细节。

在构建功能时编写测试能够避免其他团队成员(或将来的自己)以无法预测的方式破坏应用程序 。

整个测试套件花费超过10-20分钟的时间运行一个复杂的项目是很正常的现象。专业的web开发人员经常使用“持续集成”工具来帮助运行测试套件,这些集成工具会自动为每个pull请求进行测试。

技能4:积极沟通避免合并冲突(merge conflicts)

当两个团队成员试图进行相互矛盾或冲突的变更时,就会发生合并冲突。作为一个团队,良好的沟通可以帮助避免冲突。

这里有一个可能导致合并冲突的场景:

Marco和你正在做同样的项目(Firehose项目的着陆页),此时页面标题是:“你的软件生涯从这里开始”。

如果你把标题改成 “你的软件生涯从今天开始”,而Marco改成“在这里开始你的软件生涯”,你们最终会出现一个合并冲突。简而言之,你们中的其中一个将不能把代码更改发送到GitHub,直到你们把这个问题解决了。

在这个例子中,如果Marco和你能更好地沟通标题的更改问题,你们完全可以避免这种合并冲突。 在很多情况下,特别是在处理复杂的项目时,出现冲突在所难免。学习如何保持冷静并与其他团队成员积极沟通,充分了解他们的思考过程,解决冲突最终实现自己和团队的目标,这些只有通过团队共同编码才能得到锻炼。

技能5:利用会议分享信息

由于技术团队成员之间的沟通非常重要,大多数团队都会经常举行会议,俗称“stand-ups”,即“站立”会议。

在会议期间,技术团队的成员一般会分享以下方面的信息:

  • 上次会议后做了什么?
  • 在下次会议前要完成什么?

会议的时间为10-15分钟,团队中的每个人都需要在会议中分享信息。为了加快会议的进度,成员们会把重点放在最重要的议题上。通过让每个成员花1-2分钟的时间谈论他正在做的事情,可以让其他团队成员帮助发现一些潜在问题,成员们也能少走弯路。

技能6:通过结对编程(Pair Programming)提供建设性的反馈

有时候你在做项目时,会发现自己要处理非常复杂的问题。这个时候与另一个团队成员一起合作是非常必要的。

与另一个队友一起协作解决困难的编码问题,这个过程称为结对编程。在结对编程期间,团队的一名成员将坐在键盘后面,编写代码并“驱动”交互。另一个人会在他旁边观察编码过程并提供实时反馈。

结对编程可以帮助自己提升能力。刚开始的时候新手可能会怯于在别人面前写代码,因为他们会根据为根据代码提供反馈意见。以协作的方式指出其他人代码中存在的潜在问题也是一项需要学习的技能。

技能7:学会在不断变化的环境中工作

在技术团队中工作的最大挑战是,你需要跳出舒适的环境,进入一个大家都在拼命写复杂代码的环境,还不能让自己在这个过程中被压垮。

在团队中工作,并且每天都有许多代码行快速变化,始终专注于你所分配的任务是很重要的。不管代码如何发展,你都要相信你的团队。你需要经常更新代码以确保你使用的是最新代码。


那么,这些技术团队的技能将如何帮助你拿offer呢?

在技术面试过程中经常会出现关于团队合作的问题。招聘经理对你在团队中面临的挑战以及如何克服这些挑战尤其感兴趣。作为开发人员和技术团队成员,你的答案和经历能够给他们一个真实、有价值的参考。

如果你被要求描述你在团队合作中遇到过的挑战,至少证明招聘经理对你是感兴趣的。但如果你说你从未出现过任何合作上的问题,那么评估你你的人可能会觉得你要么没有经验,要么没说实话。

相反,你介绍了具体的合作经验,清楚地了解与其他团队成员沟通的重要性以及如何在出现问题时克服困难,这将非常打动招聘经理。

你应该将团队项目的目标牢记于心,集中精力在小组项目中尽可能多地学习。

作者:Ken Mazaika

翻译:sugarain

原文链接:blog.thefirehoseproject.com/posts/7-key…

评论