如何成为软件工程师的团队合作者
In my first software engineering role at an eCommerce brand, I often secretly worked on tasks outside of my core responsibilities. And many times I felt isolated from my teammates.
在电子商务品牌的第一个软件工程职位中,我经常秘密地从事核心职责以外的任务。 很多时候,我感到与队友隔绝。
Therefore, when I was invited to participate in a project-based course to better my communication skills, I jumped at the opportunity.
因此,当我被邀请参加一个基于项目的课程以提高我的沟通技巧时,我抓住了这个机会。
For the program, I was assigned to a team with two other engineers and a team lead to build a full stack application using React, Python, and Flask. Now that the course is over, I thought I'd share the lessons I learned about how to be a better team player.
对于该程序,我被分配了一个由其他两名工程师组成的团队,一个团队负责人使用React,Python和Flask构建了一个完整的堆栈应用程序。 既然课程结束了,我想我应该分享从中学到的如何成为更好的团队合作者的经验教训。
第1课:不要低估项目的潜在难度 (Lesson 1: Do not underestimate a project’s potential difficulty level)
Since the course was meant for entry-level engineers, I figured I would have a leg up as I already had some professional Node.js experience. Granted, our tech stack would be using a Python Flask backend, but I figured Python and Flask would not be too hard to pick up.
由于该课程是为入门级工程师准备的,因此我认为我已经有了一定的经验,因为我已经拥有一些专业的Node.js经验。 当然,我们的技术堆栈将使用Python Flask后端,但我认为Python和Flask不会太难。
On the first day of our project, we were shown what we would be building. Wow, I suddenly felt very unprepared. Our project was significantly more challenging than I had expected.
在项目的第一天,向我们展示了我们将要构建的内容。 哇,我突然感到非常准备不足。 我们的项目比我预期的要困难得多。
My other two teammates seemed to pick up the material easily. At the end of our first week I was our team’s least contributing member.
我的另外两个队友似乎很容易拿起材料。 在第一周结束时,我是我们团队贡献最少的成员。
I knew React quite well, so our front end was not too difficult for me. But our backend was using PostgresSQL and Python, neither of which I knew well. It quickly became clear that the tasks expected of us would be particularly challenging for someone with little Python experience.
我非常了解React,所以我们的前端对我来说并不困难。 但是我们的后端使用的是PostgresSQL和Python,我都不熟悉。 很快就变得很清楚,对于那些没有Python经验的人来说,我们期望的任务将特别具有挑战性。
第2课:请求反馈正在进行的工作 (Lesson 2: Request feedback on work in progress)
Initially, I often found myself wasting time doing unnecessary work. For instance, one time I was creating an editable user profile form, not realizing that my teammate was in the middle of building a reusable Material UI dialog component that I could have used.
最初,我经常发现自己浪费时间做不必要的工作。 例如,有一次我创建了一个可编辑的用户个人资料表单,却没有意识到我的队友正在构建一个本可以使用的可重用的Material UI对话框组件。
Another time I spent time reading a tutorial on how to get the identity of an authenticated user, not realizing that my teammate had already figured it out.
还有一次我花时间阅读有关如何获取经过身份验证的用户身份的教程,但没有意识到我的队友已经知道了这一点。
Realizing how much time I was spending doing unnecessary work, I started posting in our Slack message board what I was working on and requesting feedback. My teammates were quick to respond. By having my colleagues give input on my unfinished designs, I was able to avoid duplicating work.
意识到我花了多少时间做不必要的工作后,我开始在Slack留言板上发布我正在做的事情并要求反馈。 我的队友React很快。 通过让我的同事对未完成的设计提供意见,我避免了重复工作。
第3课:时间紧迫,应优先考虑避免学习的内容 (Lesson 3: When pressed for time, prioritize what to avoid learning)
Given that I struggled to keep up with the workload, I needed to better prioritize my time. Whenever someone created a new feature, they would create a Git Pull Request (PR) to ask for the code to be reviewed. At first, I reviewed every PR and gave each of them my full attention. However, this soon proved impractical.
鉴于我努力跟上工作量,因此我需要更好地安排时间的优先级。 每当有人创建新功能时,他们都会创建一个Git Pull Request(PR)来请求代码进行审查。 首先,我审查了每个PR,并给予了我充分的关注。 但是,这很快被证明是不切实际的。
I remember spending lots of time reviewing the PR to add cookies and tokens for authentication. To do a proper review, I first read lots of background info on security issues such as cookies, local storage, and cross site scripting attacks. When I finished all that reading I read through the PR, only to find all the code made sense and there was nothing for me to comment on.
我记得我花了很多时间来审查PR,以添加cookie和令牌进行身份验证。 为了进行适当的审查,我首先阅读了许多有关安全性问题的背景信息,例如Cookie,本地存储和跨站点脚本攻击。 当我完成所有阅读后,我通读了PR,结果发现所有代码都有意义,没有什么可评论的。
In hindsight, given how far behind I was with my own tasks, I should have ignored much of the cookie documentation and instead done just a rapid PR review to save time.
事后看来,考虑到我的工作远远落后于我,我应该忽略很多cookie文档,而只是进行快速的PR审查以节省时间。
Gaining an in-depth knowledge of the inner workings of our cookie authentication was of little use to my overall productivity. In contrast, other PRs such as the one which set up React Context to pass state through our app directly affected nearly every feature that I worked on.
深入了解我们的cookie身份验证的内部工作原理对我的整体生产力没有多大用处。 相比之下,其他PR(例如将React Context设置为通过我们的应用传递状态的PR)直接影响了我开发的几乎所有功能。
Prioritizing gaining a deep understanding of that PR would have been a far more valuable use of my time.
优先获得对PR的深刻理解将是我宝贵的时间。
第4课:通过逐块构建新功能 (Lesson 4: Build new features by going from chunk to chunk)
To get more organized, I had to learn how to skim through technical documentation. I called a senior engineering friend of mine, Sean Ellison-Chen, and asked his process for tackling a new feature that requires a technology that is brand new to him.
为了使工作更有条理,我必须学习如何浏览技术文档。 我给我的高级工程朋友Sean Ellison-Chen打电话,并询问了他处理新功能的过程,该功能需要对他来说是全新的技术。
He explained that he first tries to understand at most 70% of what is going on, and then immediately starts building the feature in chunks. Each chunk gets committed to git.
他解释说,他首先尝试了解最多70%的情况,然后立即开始按块构建功能。 每个块都提交给git。
For example, let’s say he needs to set up web sockets, he might set up a basic skeleton structure for web sockets, commit it to git, then work on the next chunk of setting up the correct socket events and so on.
例如,假设他需要设置Web套接字,他可能会为Web套接字设置基本的框架结构,将其提交给git,然后进行下一个设置正确的套接字事件的工作,依此类推。
By working in chunks, he ensures a smooth progression from tackling the bare minimums to eventually having a fully functioning feature.
通过分块工作,他确保了从解决最低要求到最终具有功能全面的平稳过渡。
第5课:要求团队负责人提供反馈 (Lesson 5: Request feedback from your team lead)
Midway through the program, I received feedback from our team lead, Shums Kassam. I was told to ask for help more, to skim through documentation, and to leverage my teammates.
在计划进行中,我收到了团队负责人Shums Kassam的反馈。 我被告知要寻求更多帮助,浏览文档并利用我的队友。
I took the advice to heart and upped the amount of times I posted in our message board. I started having video calls with teammates to review features I was building. I skimmed faster through the technical documentation and avoided the less critical areas. By implementing these changes, my rate of contributions sped up.
我深信该建议,并增加了在留言板上发布的次数。 我开始与队友进行视频通话,以查看我正在构建的功能。 我快速浏览了技术文档,并避开了关键区域。 通过实施这些更改,我的捐款速度加快了。
第6课:避免在要求可能会发生变化的任务上做得完美 (Lesson 6: Avoid doing a perfect job on tasks whose requirements might change)
By sheer luck, I learned the importance of procrastinating on tasks whose requirements might change.
靠运气,我了解了拖延要求可能会改变的任务的重要性。
One of my first tasks was building a front-end form that lets users change their profile info. When I submitted my code for review, I was told the form’s appearance needed to be fixed as some of the input lengths did not match.
我的首要任务之一是建立一个前端表单,使用户可以更改其个人资料信息。 当我提交代码进行审查时,由于某些输入长度不匹配,我被告知需要修复表单的外观。
Normally, I would have spent the 45 minutes to fix it right then and there. But I was far behind in my contributions, so instead I just commented a “todo” about matching the input lengths and merged my code.
通常,我会花45分钟的时间在那里修复它。 但是我的贡献远远落在后面,所以我只说了关于匹配输入长度并合并代码的“待办事项”。
A week later, a teammate pointed out it would be a better user experience to combine the separate ‘street’, ‘city’, ‘state’, and ‘country’ inputs into a single ‘address’ input. When he simplified the inputs, my commented out “todo” was no longer applicable.
一周后,一个队友指出,将单独的“街道”,“城市”,“州”和“国家”输入组合为单个“地址”输入将是更好的用户体验。 当他简化输入时,我的注释“待办事项”不再适用。
By procrastinating with working on the form, I had saved myself from doing unnecessary work.
通过拖延处理表格,我避免了自己做不必要的工作。
第7课:轻松提交未重构的代码 (Lesson 7: Be comfortable submitting non-refactored code)
Near the end of our project, our team was rushing to finish all our features prior to a fixed date when we would present our project to an audience. We planned to have all features submitted well in advance to give us enough time to practice and rehearse.
在项目接近尾声时,我们的团队急于在固定日期之前完成所有功能,以便向观众展示项目。 我们计划提前提交所有功能,以便给我们足够的时间进行练习和排练。
But I ended up submitting my final feature with barely an hour to our demo and we had to rush to add it in. Though our presentation went well, I was troubled that I submitted the feature so late as it severely reduced our team’s ability to rehearse our demo in advance.
但是我最终只花了一个小时就向演示文稿提交了我的最终功能,因此我们不得不急于添加它。尽管我们的演示进行得很顺利,但我却感到很晚才提交了功能,因为它严重降低了我们团队的排练能力提前进行演示。
In hindsight I realize that instead of submitting optimized and clean code, I could have saved at least two hours of time by simply adding comments about refactoring later.
事后看来,我意识到不用提交优化和简洁的代码,而是可以通过简单地添加有关稍后重构的注释来节省至少两个小时的时间。
Over the past few months, I learned many lessons about how to be a better team player. Most importantly, I learned that teamwork is a skill that can be improved just like any other.
在过去的几个月中,我学到了很多关于如何成为更好的团队合作者的经验教训。 最重要的是,我了解到团队合作是一项可以像其他任何方式一样得到提高的技能。
The program I participated in was run by Hatchways, a company that helps software engineers get their first jobs. At the time of this writing they service engineers and companies in North America. If you're an employer looking to hire interns or entry-level engineers see Hatchways - Employers.
我参加的程序是由Hatchways运营的,该公司帮助软件工程师获得第一份工作。 在撰写本文时,他们为北美的工程师和公司提供服务。 如果您是想雇用实习生或入门级工程师的雇主,请参阅《 海奇威雇主》 。
I am from New York city and am currently looking for a new software engineering position. Here is my resume. My email is siegel.moshes@gmail.com
我来自纽约,目前正在寻找新的软件工程职位。 这是我的简历 。 我的电子邮件是siegel.moshes@gmail.com
翻译自: https://www.freecodecamp.org/news/how-to-be-a-team-player/
相关文章:

HTML转义字符
转自地址:http://blog.csdn.net/wusuopubupt/article/details/8817826 by wusuopubupt No.文字表記10進表記16進表記文字 Comment001""""" quotation mark APL quote002&&"&" ampersand003<&l…

制作模拟器和真机通用静态库
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况。 为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要。现在有两个版本的静态库libSQ…

使用静态URL片段 URL路由 精通ASP-NET-MVC-5-弗瑞曼
转载于:https://www.cnblogs.com/ganmk--jy/p/5570718.html

sql算术运算符_SQL运算符教程–按位,比较,算术和逻辑运算符查询示例
sql算术运算符At its core, the internet and all its applications are just data.互联网及其所有应用程序的核心只是数据。 Every email, tweet, selfie, bank transaction, and more is just data sitting in a database somewhere.每封电子邮件,推文࿰…

python 之socket 网络编程
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,…

(转)使用 Spring缓存抽象 支持 EhCache 和 Redis 混合部署
背景:最近项目组在开发本地缓存,其中用到了redis和ehcache,但是在使用注解过程中发现两者会出现冲突,这里给出解决两者冲突的具体方案。 spring-ehcache.xml配置: <?xml version"1.0" encoding"UTF…

终端SVN常用命令
svn help 帮助 svn checkout path 从服务器checkout文件到本地(path是服务器上的目录,简写svn co path) svn add file_name 往代码库添加新的文件 svn commit -m "xxx" 提交添加的文件,或者本地做的修改到服务器端(“xxx”内为提交说明…

程序员怎么赚更多的钱_自由职业技巧:如何感到更加自信和赚更多钱
程序员怎么赚更多的钱Over my 10 years as a freelance developer, many fellow freelancers have asked me for advice. How can they make freelancing work for them?在我作为自由开发者的10年中,许多自由职业者都向我寻求建议。 他们如何让他们从事自由职业&am…

RedHat 7.0及CentOS 7.0禁止Ping的三种方法
作者:荒原之梦原文链接:http://zhaokaifeng.com/?p538前言: “Ping”属于ICMP协议(即“Internet控制报文协议”),而ICMP协议是TCP/IP协议的一个子协议,工作在网际层。ICMP协议主要用于传输网络…

关于sql 增删改
1.更改数据库的名称 --更改数据库的名称,逗号前面是之前的,后面是改成的名 sp_renamedb student,xuesheng 2.表中有数据的情况下再添加列、删除列 --后来添加列,只能默认可以为空值 altear table shuiguo add [int] varchar(10) --int加上中括…

使用version遇到的那些坑
公司代码管理使用的SVN, 所以就用到了SVN工具version 公司没给买正版的version, 遇到各种崩溃, 各种坑 1. 更新项目时遇到网络不稳定的情况, 更新失败, 项目中的某个文件就莫名其妙的被锁定了 !!! 如果只是更新一个文件还好说, unlock一下就好了,但是如果你是一个文件夹全部…

docker手册_Docker手册
docker手册The concept of containerization itself is pretty old, but the emergence of the Docker Engine in 2013 has made it much easier to containerize your applications. 容器化本身的概念还很老,但是Docker Engine在2013年的出现使容器化应用程序变得更…

MongoDB修改器的使用1
为什么要使用修改器? 通常我们只会修改文档的一部分,这时候更新整个文档就显得很麻烦,通常是通过原子性的更新修改器来完成。 1."$set"修改器 "$set"用来指定某个字段,如果不存在,则创建。这对部…

4GL之Non-SCROLLING CURSOR
在4gl中CURSOR可以说是每一个程序中都会有的,而CURSOR又分为三种SCROLLING CURSOR、Non-SCROLLING CURSOR、LOCKING CURSOR。 Non-SCROLLING CURSOR的聲明有兩種,一種是先定義好sql語句到一個變量里: DECLARE cursor名 CURSOR FROM 變量…
项目总结三--波纹视图
波纹视图的使用 代码在github:https://github.com/wyon0313/YGMoireAnimation

vlookup示例_VLOOKUP示例–如何在Excel中执行VLOOKUP
vlookup示例Microsoft Excel includes a variety of different functions that help users with calculations of any kind. The functionality of Excel is so comprehensive that average users dont even take advantage of most utilities.Microsoft Excel包括各种不同的功…

MySQL--从库启动复制报错1236
链接:http://blog.csdn.net/yumushui/article/details/42742461 今天在搭建一个MySQL master-slave集群时,执行了change master命令,然后又 start slave 启动slave服务,结果查看salve状态就出现错误了: mysql> show slave stat…

使用Script元素发送JSONP请求
// 根据指定URL发送一个JSONP请求 //然后把解析得到的相应数据传递给回调函数 //在URL中添加一个名为jsonp的查询参数,用于指定该请求的回调函数的名称 function getJSONP(url, callback){//为本次请求创建一个唯一的回调函数名称var cbnum "cb"getJSONP.counter;va…

iOS 崩溃记录
dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/AEECAAFB-F14A-43AA-9FB8-8388CAC40122/DouLiao.app/DouLiao Reason: image not found 原因应该是iOS系统版本太…

以太坊Geth几种同步模式
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 以太坊Geth几种同步模式 同步模式分类 –fast Enable fast syncing through state downloads –light Enable light client mode –s…

[转]Membership 到 .NET4.5 之 ASP.NET Identity
本文转自:http://www.cnblogs.com/jesse2013/p/membership-part3.html 我们前面已经讨论过了如何在一个网站中集成最基本的Membership功能,然后深入学习了Membership的架构设计。正所谓从实践从来,到实践从去,在我们把Membership的…

js填充select下拉框并选择默认值
/* 使用json数组填充下拉框并复选 *//* 初始化下拉框数据 */ var jsonStr { "data": [] }; for (var str in JsonStr.data) {jsonStr.data.push({ "value": JsonStr.data[str].value, "text": JsonStr.data[str].text }); }/* 调用BandSelectOb…

关于curl使用记录
因经常需要排除线上用户问题,查看用户数据请求结果,使用到curl命令,但是总是忘记,在此做下记录。 curl post请求命令行如下: curl -d "param0value0¶m1value1" "url"

智能合约部署及调用
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 智能合约部署及调用 以太坊区块链技术2.0版本对于行业应用的开发最主要特性就是实现了智能合约,本质上讲智能合约是由事件驱…

POP到指定的界面
int index (int)[[self.navigationController viewControllers]indexOfObject:self]; [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:(index -2)] animated:YES];

js markdown chart flow
http://knsv.github.io/mermaid/#example-of-a-marked-renderer转载于:https://www.cnblogs.com/studyNT/p/5584399.html

使用Remix编译和部署以太坊智能合约
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络…

Java之Array(数组)说明
代码说明: 1 package array;2 3 import java.util.ArrayList;4 import java.util.Arrays;5 import java.util.List;6 7 /**8 * Array使用说明:9 * 内容: 10 * 1、Array实例化; 11 * 2、Array与ArrayList转换; 12 …

创建操作/删除多行数据的UITableView的细节
首先注意需要重写-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 这里需要注意的是返回的结果应该是 return UITableViewCel…

每天进步一点点——Linux
http://blog.csdn.net/cywosp/article/category/443566/1转载于:https://www.cnblogs.com/zengkefu/p/5586780.html