从开发人员到经理,反之亦然

在2012年冬天,一位同事建议我,一位拥有5年经验的C ++程序员,编写第一个Android应用程序。一年后,我开始领导一个由小型移动开发人员组成的团队,从那时起,我的团队规模稳步增长。但是去年,在管理移动开发部门2年之后,我再次用自己喜欢的IDE吹牛了。



让我们告诉您另一面的情况,为什么我在30岁以上(破坏者)重返开发者,不要后悔。

通向Android开发人员的方式


当时在我的省会城市,安卓是个花招。在我看来,Android另一个有趣的“玩具”,通过玩它可以放心地放回通常的Qt。一切就这样开始了:一位朋友提出了一个简单的应用程序来计算收入和支出的想法,我们开始在业余时间看到它,六个月后MVP准备发布。

图片

我们的Money Keeper的设计相当原始,但经过深思熟虑的UX:一键记录收入或费用-点击类别图标会立即打开一个用于输入金额的窗口。

我非常清楚地看到下载统计信息:第一个下载我的应用程序的人是埃及人。而且这一周并没有删除该应用程序,而是继续使用它!

每天一点点下载,数十次下载,观众增加,收视率增加,出现了第一批正面评论。说它受到启发是淡化。我回应了市场上的评论,根据用户的意愿计划了进一步的开发,仅仅因为用户需要我的应用程序,他们表示感谢。而且我们所有的广告都在w3bsit3-dns.com上的单个帖子中。

令人震惊的是,移动开发与我之前从事的嵌入式系统和桌面应用程序的开发有多少不同用户的应用程序路径及其反馈非常短。听众很大,您所做的一切都应该至少做得好,否则任何人都不需要该应用程序,并且所有工作都可以被丢弃。

我如何成为团队负责人,“因为_是_要_某人_某事已到期_”


应用程序变得越来越复杂,出现了带有附加功能的付费版本。我开发两个应用程序的双手已经不够用了,特别是考虑到我在空闲时间从主要工作中编写它们的事实。招聘员工没有特别预算,因为货币化并没有带来太多收入。

我们拒绝``冻结''付费应用程序的免费应用程序的想法,因为我们不想让感激的用户社区失望,我们一直以来都从中汲取精力和想法来发展。因此,我们决定聘请一个薪水低的两个人,他们远非发展之路,并且为进入这个市场而奋斗。决定带领他们走我的道路,但有一个很大的不同:我必须教他们如何移动和导航绿色机器人的世界,并向他们展示我在这条路上认识到的所有颠簸和漏洞。

图片
我并不害怕承担艰巨的任务)

,我想其他人也分享了我对发展的热情,两只手显然对我们来说不是多余的。我去了他们的家,解释,教导,建议和帮助。我设置任务并检查了它们的实现。所以我悄悄地变成了一个小而经理。

但是,必须关闭该应用程序……我去了一家初创公司,然后又去了一家初创公司,然后进入了一家大型企业的产品开发部门。在没有足够的人担任领导角色的任何地方,都有一个类似的场景:“您确定了主题领域,与团队交了朋友,不反对领导工作,您甚至有这样的经验吗?让我们尝试为其他人设置任务。至少在这次冲刺中……”

但是还有另一个重要方面:我在考虑未来-看起来雾蒙蒙的。很久以前,我遇到了一篇有关开发人员平均年龄的文章。它说开发商的“巅峰职业”是27年。我开始注意到类似的文章-我不由自主地问自己:例如,当一名32岁的开发人员出现“年轻的粪便会把我们从地球的表面抹去”时,我将做什么?慢慢踏上管理者之路,为自己解决“ 30年问题”,不是更好吗?

我作为蒂姆利达的原则


到我放弃C ++并转到Android时,我已经与各种领导者一起工作,并且确切地知道我想成为什么样的领导者。后来,在完全不同的团队中:产品团队(由分析师,设计师,开发人员,测试人员组成)和开发团队-我尝试不偏离自己的原则。

需要与那些


经过一段时间后,正朝着正确方向前进的学生,有着发亮的眼睛,可能会比“摇滚明星”给该项目带来更多的好处。

在其中一个项目中,我决定是时候离开熟悉的MVP + Dagger + RxJava包,并尝试生产Google建议用于创建现代移动应用程序的那些工具。我们计划仅将Jetpack和Kotlin与协程一起实施推荐的体系结构

所有经验丰富的开发人员和老板都在神庙上转动手指,并说有两个琼斯团队从未使用过我选择的堆栈中的任何内容,所以我们会完成这个项目,而责任将由我本人承担。但是,这两个消息让他们很高兴能与Android开发人员昨天才在博客上撰写的内容一起使用。

图片
是的,当然,我们一开始就感染了阿尔法版本的图书馆的许多儿童疾病……

但是他们努力工作,爬上源头,研究了Github上的问题,晚上进行了概述,最后我们得到了:

  • 干净,稳定且易于维护的代码,
  • 生产成功的产品
  • 和很多宝贵的经验。

在另一个项目中,一个非常出色的开发人员来到团队中,他没有立即与整个团队成为朋友,而是完美地完成了任务。伙计们通过痛苦,眼泪和上司联系了他,有人甚至说最好不要用六月来代替他,但最后我将他们之间的实时交流减少到必要的最低限度,一切都变得平静了。

无论有时候

多么困难,您都还需要与“摇滚明星”一起工作。自然地,有些人并没有刻意去做他们的工作:有人认为他会成为“为我做一切的老板”,有人它根本无法或不想工作。如果对话和时间无济于事,您就不要害怕分开。

我不是与下属一起工作,而是与人一起工作


每个人都有自己的情况,需求,气质和心情。有一次,在通过艰难的冲刺之前,每个人都在等待最终产品测试结果的测试员女孩因为与丈夫一起找不到干净袜子的丑闻而生气。截止日期,这不是进行严格测试的第一天,而是在这里。她根本没有工作的心情。在这种情况下,有可能遭到粉碎,要求和威胁。但是我试图理解它,并以弥补差距的方式重新分配其他测试人员的资源。半天后,它冷却下来,我们成功地投入了时间。

图片
谁在假期前没有在工作时间坐在其他地方,让第一个向我扔显示器)

或另一个故事:一个同事在休假前几天停止做某事,只是因为他正忙着为欧洲骑自行车旅行做的最后一次聚会,这已经为他准备了将近一年。今年全年,他都认真执行工作任务,在这里-作为替代。我给了他这两天。经过两个星期的假期,他回到休息处并开始以同样的速度工作,但我设法不破坏团队中的关系。

在困难的情况下,除非我领导,否则任何人都不会前进


在一个对我来说不熟悉的DevOps团队中,几个月来,我对CI的部署进行了“动态化”,并且开发人员公开破坏了CI的实施,但不同意其有效性的观点。这并不是说他们懒惰地逆行,而是在我看来,他们在正确准备CI的环境中无法正常工作。

与Google拥抱,我坐在晚上,挑选设置。逐渐地,DevOps和开发人员参与了该过程。结果,我们能够配置CI和必要的绑定,以构建和分发应用程序,这迅速而安静地成为公司中不同团队的标准。

我是否需要通过个人干预和微观管理来弥补流程组织的漏洞?也许。但是,在我看来,在这种僵局中,存在两个极端:``拧紧螺丝'',越来越多的人离开团队成为``老板'',或者在一个人遇到困难时甚至在完成工作后成为一个``他的人''时尝试帮助一个人。但是他们不会让“他们自己”陷入麻烦。

您需要发展自己并发展团队中的每个人


图片
经理的典型工作场所:

我在一个项目上坐的时间越长,我越觉得现代发展正在浮现在我身旁。几年前选择了一堆技术,语言和框架,此后并没有发生太大变化。这是由于永恒的日期,脆弱的商业利益,但最重要的是-当开发人员熟悉这种新事物时,他们担心新事物。

直言不讳地禁止了新接受的开发人员在Kotlin中编写代码,因为领先的程序员不认识他,也没有找到时间(不想找到?)来教他。这些问题的解决方法非常简单:我举办了有关整个团队都感兴趣的主题的技术讲座,会议和课程。对于开发人员来说,将一个宠物项目中的一项技术整理一个星期并告诉其他人,要比盲目地将其拖入生产过程更容易和有趣。

对于研究和推出对整个公司有用的新事物的人来说,企业更容易证明加薪是合理的。

一个人离发展问题不远了


一旦您不再了解开发人员在技术负担,平台功能以及系统不同部分之间的交互方面所遇到的问题,冲刺的百分比就会急剧下降。

在某些情况下,经理们真的感到惊讶,因为苹果的审阅者放假,所以不可能在除夕发布iOS应用程序。设计师有时不了解Android开发人员在不同屏幕上排版的问题。以前从未与移动客户端合作过的后退者必须说明,他们无需给出HTML页面错误,而无需给出JSON错误。

而且,如果您在系统或其部分的开发过程中“浏览”这样的时刻,那么最后期限的后果可能会非常糟糕。

图片
哦,仅通过采用技术解决方案便可以实现多少好处。即使他们分配任务,您也可以翻山越岭!

我设法领导了吗?


我不敢说这是正确的原则。我什至不知道它们是否对应于人事管理书中的内容,因为我还没有看过它们。我根据几个事实判断:

  • 团队中的关系有所改善。如果在我之前曾出现丑闻,以澄清与当局的关系,那么与我之间的丑闻最多。
  • 通常,我们适合冲刺。甚至是不可能的。如果不合适,那么顾客就不会生气。当然,这是团队的优点。但可能是我的一点。我一直试图将所有风险考虑在内,并在考虑到这些风险的情况下进行任务计划。
  • 我们不断地重构和改进产品和开发流程,减少技术债务。
  • 开发人员的职称和薪资增长。
  • 我的直接指导也很漂亮。

好吧,领导的缺点呢?


对我来说,他们是:

  • 您越是经理,开发人员就越少。无论您如何尝试跟踪项目技术部分的复杂性,它们每天都在越来越远地困扰着您。团队越大,开发越活跃,速度就越快。逐渐地,收到的有关Android和iOS的新信息量减少为每月阅读有关新版本操作系统的发行说明以及有关Habré的几篇文章。
  • . — , . , “” . .
  • . . , . - - , .
  • . , . , 2-3 . - — 70-80% !

!


无论您在某个地方喜欢什么,都必须离开。在某个时候,我开始寻找新工作。可以预见,我想涉足更大的业务以继续发展。

下一次Skype采访正在进行:10名采访员,2个小时,要求-了解高级开发人员级别的技术部分以及管理人员的能力。 2小时后,我意识到在管理人员方面我几乎一无所知。至少我不了解该理论,仅基于我的原理和经验。

它看起来像这样:
— ?

.

— ?

, . , .

— ?

— …

— , scrum kanban?

.

— ?

— …

等等。我没有通过理论。我以某种方式成功实现了,但是解释了为什么必须采用一种或另一种方式的基本原理-不。面试后,我意识到我已经达到了业余管理联盟的顶峰,而再坐在两把椅子上将无济于事。为了发展,有必要决定我要去哪里。

图片
这是我目前为远程工作人员准备的外出团队。至少还有一个人采用相同的方式:去了团队负责人,然后有意识地回到了开发者手中。

第一种方法是管理者。不过,请阅读非常正确的书籍。开始观看视频并参加管理,计划和激励会议。职业管理联盟有自己的规则和特点。

第二种方式-沉迷于发展,如果可能的话,要赶上多年的管理。

好吧,第三种妥协的选择是“扎根”理论,并试图继续处于“中间地位”,并在“业余爱好者中”再呆几年。

然后我想起了一切。感觉到您正在改变世界,为他人做些有用的事情。即使将按钮涂成绿色,它对于成千上万的用户来说也变得更好了。即使我纠正了错字。而且,如果您已经淘汰了用户长期以来期望的功能,并且在评论中对此表示感谢,那么这只是几天来的情绪激增和好心情!

担任经理有没有强烈的感觉?我觉得不行。即使客户,团队和领导者称赞您。当用户称赞预期的功能时,这当然主要归功于准备,锯,测试和显示该功能的人。还有很多-我是经理。

因此,我找到了一个愉快的工作场所,编写了代码,到目前为止,我没有任何遗憾。
32岁的开发人员有生命吗?有!

PS

是什么给了我作为开发人员的领导经验?

  1. 现在,即使没有任何话,我也能更好地理解业务和PMA。通常,我知道他们想问我什么问题。
  2. 考虑到风险,我会更加有能力地计划时间和任务。
  3. 对比。看到另一面的情况后,我意识到了自己对此的喜欢。

All Articles