在大学里,我喜欢编码。 现在,它已成为日常工作。 如何返回前保险丝?



反思是一件奇怪的事情。 如果它基于多年的经验,那就更有趣了。 在第一人称视角下,通过Parallels RAS Igor Marnat开发总监的嘴巴讲述了程序员命运的故事。 好好享受
“如果你不前进,那么你就不会停滞不前。 世界正在前进,但你却没有。 因此,您正向后退!” © (某人非常聪明)


题词

对我来说,尽管我已经进行了20多年的开发,但编程尚未成为日常工作。 我认为这是由于我在保险丝最终耗尽之前采取了某些措施。

如果编程已成为您的烦事,那么也许我的经验对您会有所帮助。 想要改变吗? 至少需要进行一些更改(深思熟虑,不是吗?)。 我们必须搬到某个地方。 现在,在不同的时间,我尝试向内移动,向侧面移动并在宽度上移动。

深度运动


我们工作的特点是,每个开发人员都必须在以下两个方面都是专家–编程本身以及他为之创建软件的主题领域。 开发人员对这两个领域的了解越深入,他将能够解决越有趣的任务。 任务越有趣且越大,结果越明显。

大多数程序员的动力来自马斯洛金字塔的上层—认知,自我实现以及对尊重的需求。 为此,首先必须使他们的工作成果引人注目。 其次,这个结果应该看到光,人们应该使用它。 很明显,结果的可见性与结果的大小,值,权重密切相关。

在电信软件的开发过程中,我投入了大量时间和精力来研究新的主题领域:通用处理器和DSP的设备,内存,存储系统,网络协议,信令类型,信号处理算法,总的来说,很多有趣的事情电话,电路,网络等事物。

用了几年时间(在此期间,我每天工作超过八个小时)。 五年后,我在架构师级别工作,参与了新电话交换机的软件结构及其组件的体系结构的创建。 我写了更少的代码,为团队制定了规范,检查了复杂的代码,使用了一些关键组件,协议和驱动程序。 对设备的每个组件,其工作原理,与其余组件的通信都有很好的了解,可以使您开发产品架构,通信协议,外部接口。

显然,任何软件产品都是整个团队工作的结果,但是根据我对项目的参与程度,我感到自己参与的不是创建单个组件,而是整个产品。 同时,您获得了无与伦比的动力,同时也承担了更多的责任。

通常,程序员对工作领域的投入越深,他对上下文的了解就越多,视野越广,他的工作就越有趣。
这不仅适用于产品组件的内部布置。 您越了解用户,他们如何使用产品,为什么(而不是其他)原因,他们有什么问题,如何安排竞争对手的产品,您的工作就会越有意思。

这一切都很容易学习-您需要与支持,测试,实施团队以及产品的最终用户进行更多的交流。 如果可以建立工作互动,为他们解决一些问题,参加联合工作,那通常是超级好。

顺便说一句,还有关于工作流本身的组织的另一种评论,尤其是由最初来自Google的DevOps哲学以及称为SRE的开发和运营方法所遵循。 有必要努力消除开发,实施和支持团队之间的分离,以及朝着协作的方向发展。

为了以防万一,我注意到在大多数开放源代码社区中,RFC,带有动物的封面书,制造商的文档以及信函都使用英语作为标准的交流手段。 翻译中的信息较少,它经常被扭曲并且几乎总是迟到。 许多制造商根本不打扰翻译文档。 因此,至少对于想要开发的开发人员来说,具有英语阅读能力是相当基本的卫生要求。

横向运动


在许多方面,程序员对他的工作的兴趣取决于他对所从事的学科领域的兴趣。 例如,您可能对财务应用程序感到无聊,但是在此类应用程序的基础结构上工作将很有趣。

在开发用于电话的嵌入式软件的同时,我还开发了一个用于收集信息和向用户计费的分布式系统-这是一个完全不同的世界,其他语言和其他平台。 接下来-部署,配置和测试的自动化,这是第三世界,一切都不同了。

也许为了振兴您的兴趣,您应该与同事或老板交谈,看看附近的团队在做什么。 即使距平常的活动仅一小步之遥,也会对您的工作产生很大的影响,使您对事物有不同的看法。 俗话说,位置决定视角

广度运动


当我进入电话领域时,事实证明,我没有时间将足够的时间和精力投入到我从事的其他项目上。 解决方案很明显-我开始做更多的工作。 但这并没有太大的规模。 经过一段时间的晚上和周末的长时间工作,我不再需要工作了,没有时间生活了。 我的老板和我决定在我们的团队中再聘请一名程序员。 我很冒昧地进行了几次面试(这是我人生中的第一场面试,另一头在桌子的另一头),并且意识到把一个聪明的人带到我的团队中并不像看起来那样容易。

如何在短时间内了解陌生人? 如何评价他的专业水平和个人素质? 这些个人素质通常对他们很重要吗? 还是专业很重要? 录用时需要注意什么? 以及您到底如何转动它? 现在,所有这些似乎都显而易见,但是当我为我聘请第一位工程师时,对我来说这是一个真正的黑暗森林。

和往常一样,我从Google开始。 我找到了乔尔·斯波斯基(Joel Spolsky)的几篇文章,将它们吞下,阅读了他所引用的书,然后从这些书中链接,然后进行了更系统的研究,因此逐渐进入了一个新的主题领域-项目管理,团队,开发过程本身的管理。

像任何其他生产过程一样,软件开发过程也具有自己的研究人员,开发历史,最佳实践和组织方法。 它与开发,最佳工程实践直接相关的许多方面还很年轻。

例如,敏捷出现的时间相对较短,不到20年前,CI大约是三十年代,是Frederick Brooks的经典著作约五十年。 与团队管理,心理学,动力,整个组织的过程管理,沟通的组织有关的其他方面是通用的,它们来自多年前的其他主题领域,并且完全适用于开发领域。

我阅读了很多有关团队管理的文献。 在我看来,这个主题在美国和日本得到了最彻底和深入的研究。 除了有关开发,工程,管理的经典书籍之外,我还会推荐苏联和俄罗斯的飞机设计师和火箭设计师的书籍。 此外,NASA,NAVY,Toyota-这些组织和公司在优化流程方面投入了大量资金,为经理们举行了内部会议,有关这些材料的信息可以从网络上获得,并且有许多有趣的艺术书籍及其相关内容。 此外,除了有关这些公司建立的管理流程的出色信息外,阅读有关汽车,飞机,导弹,轮船及其发展的信息也非常有趣。

通常,提高您在管理领域的能力的范围是巨大的,任务也有很大不同。 您可以从组织自己的工作开始,通过引入最佳工程实践(例如单元测试,代码审查,持续集成和持续交付),您可以停下来。 而且最好不要停止:)

结论


实践表明,如果您开始主动朝着上述方向中的至少一个方向移动,一段时间后将不可避免地发生另一种移动-沿着层次阶梯。 如果有这样的愿望,那么这也是一个非常有趣的选择。 这里的主要目的是不要忘记要维护的组织工作与技术工作之间的必要平衡。

软件开发是一生的马拉松。 总是有最后期限,最后期限,所有时间您都需要多推一些。 为了节省精力和动力,保护自己免受倦怠的困扰,您必须进行切换,抬起头来超越常规,环顾四周,并从侧面看待自己和您的工作。 定期使用剧院,音乐,音乐会,好书和电影是必不可少的。 还是夏天的住所。 或远足。 通常,除了工作之外,还有其他事情。 否则,在两三年后,无论如何工作将不再是一件乐事。

至于工作,没有人会比自己更好地照顾自己的动力和职业。 老实说,并不是没有人在乎更好,而是没有人在乎。 有关专业,相关领域,会议,与同事的交流,三文特技术的书籍-如您所知,这是一种生活。

如果您觉得该改变了,可以从一些小步骤开始。 为此,您不需要上级的许可,预算或大型组织的工作。 我写的所有步骤,都是由一个两到十人的团队在一个小公司中进行的。

几本好书,很多渴望和一点动静都可以带来很大的不同。 祝你好运

Z.Y. 在评论中分享您的经验和生活技巧。 不幸的是,伊戈尔(Igor)尚未在哈布雷(Habré)上,我正在下载业力,以便可以邀请他。 同时,如果出现这种情况,我将把您的问题转给他。 感谢您的关注。

Source: https://habr.com/ru/post/zh-CN430994/


All Articles