在开发实习之前我不知道的四件事

你好!我叫Daniel,是一名自学成才的程序员。



我想从事很长一段时间的开发,但是,经常发生的是,我并不真正相信自己。我相信我的火车早已一去不复返了,大脑不再是精通这一困难职业的人。幸运的是,我被说服了,而且他们给了我证明自己的机会,并在开发部门实习。它是如此随意而简单地发生,一开始我简直不敢相信。在我看来,每时每刻,现在每个人都终于明白我是一个愚昧无知的人,挥手告别。但这没有发生,他们继续支持我,我尽力不让任何人失望。



我是后端部门的实习生,负责跟踪产品,同时我在自己的技术集成部门工作(至今已有6个月)。团队中的主要语言是Python我自己教他去实习。当然,基本上,互联网上的手册和视频都是如此。







我的基础很小-我用C语言编写了多个培训项目,但总的来说,我不能说当我被接受实习时,我至少是一位经验丰富的编码员。从这种不起眼的经历的高度,我想向您介绍一些我一开始不知道或几乎不知道的事情。



与Git合作



当一个人第一次实习时,他会想像Git是什么(否则他根本就不会被接受),但是他对他们如何与他一起团队合作一无所知。我们都一次在GitHub上创建了一个帐户,并愉快地将第一行代码提交给master分支,感觉就像是真正的专家。因此,这不是大型项目的最佳方法。



在团队开发中,根据批准的git-flow进行与Git的合作。例如,我们有两个分支:开发和掌握。除团队负责人外,没有人可以将代码上传到master分支,因为团队必须确保那里存在可以在部署期间销毁产品的工作代码。对此的责任将落在团队领导的肩膀上,没有人想让团队领导生气。





为防止此类情况,请进行团队审查。每个开发人员都在其自己的分支中处理任务,并且在工作结束时将合并请求放置到developer分支中。团队负责人已经将合并请求放在master分支中,并对其所有者的代码质量负责。因此,可以保证最终在生产中使用的代码的纯度,并且可以减少浇灌会破坏项目工作的风险。



要点:如果您想更好地为团队合作做准备,请阅读git-flow并开始通过分支将新的提交添加到您的宠物项目中。


代码架构很重要



当我参加实习时,希望我被告知应该做些什么,考虑到一些小的功能或单元测试,我将在团队的监督下进行工作。



但是,结果却有所不同。不,没有人指示我做一些超级复杂的事情,但是我分配了一个微型项目(里程碑)进行监视(Python + Prometheus + Grafana),这是我在实习期间必须做的。此外,我本人必须考虑架构,将项目分解为任务,然后将其移至看板阶段。这很令人兴奋,但是非常正确。这种方法使我的策展人和我自己可以清楚地了解我的问题并开始解决它们。



老实说,我的第一个决定没有成功。还有第二个。我执行的任务太大,多次将其退回积压,构建了失败的体系结构,无法考虑细微差别。





但是,目前,大多数项目已经实施,并且我越来越意识到我的代码如何影响项目的其余部分。是兴奋的。我阅读了几篇有关干净架构的文章,研究了抽象类,学习了如何首先计划接口,然后才开始实施。我不能说我已经解决了所有问题,但是我绝对理解“任何问题都可以通过引入额外的抽象级别来解决,除了过多的抽象级别的问题之外”。而且我还学习了如何正确评估自己的力量(但这并不准确)。

: . , , . , Netflix, . , .




在我们公司中,所有服务都在容器中启动。因此,每个开发人员都应该了解同一个Docker的工作原理,如何编写简单的Dockerfile或通过Docker Compose提高服务水平



对于只为自己和在计算机上写东西的人,很难理解为什么需要容器化。但是,在大型项目中,有必要确保代码不受环境影响而工作。再过一会儿,当您了解了基础知识之后,便会发现它的便捷性。您不需要在您的环境中安装依赖项,也不需要漫长而困难的项目启动。您只需编写几个配置就可以运行测试或分离专业人士和开发者。





相同的建议可以包括使用IDE。在开始实习之前,我只用Emacs编写了所有程序,但是当我开始工作时,我决定切换到一个更高级的工具,最后我并不后悔。在某些地方,我仍然更喜欢使用控制台(例如,通过省略所有容器更为方便docker stop $(docker ps -qa)),但除此之外,我要感谢Git GUI和PyCharm中的技巧。

结论:了解Docker。尝试在容器中运行代码。尝试使用适合您的语言的IDE,看看它可以为您做什么。

文档和测试与代码一样重要



我的策展人曾经说过,测试是第二个开发人员的文档。这是非常正确的,因为如果缺少实际的文档,则可以随时进行测试并查看预期的行为。



在实习之前,我使用了UnitTest和PyTest,但这只是培训的一部分。和模拟,例如,一点都没有用,因为我的项目是不那么复杂的,这是需要更换的数据(当然,或者我的测试是如此糟糕)。





我建议所有新手开发人员针对项目中发生的所有逻辑编写测试。即使您认为这种行为很明显,也最好谨慎行事。毕竟,当另一个人编写使用您的代码的函数时,有可能他不会详细介绍,正是您的失败测试使项目免于麻烦。



为了进一步降低风险,请编写清晰的文档。在Admitad中,没有文档的方法或功能将提出问题供审查。两周后,没有人愿意浪费时间尝试再次找出别人的代码。这只是对同事的尊重。



另外,我会说我们也用Python详细注释类型,但是如果您使用强类型语言编写,则此注释不适合您。(在这方面,使用像Flake8这样的短绒棉很有帮助)。

结论:注意测试和文档。从常规的Git自述文件开始-描述如何运行该项目,其功能以及您的期望。尝试编写用于关键方法和功能的测试,或者更好的是,使Docker Compose运行所有测试。

你有什么经验?



对于成熟的开发人员,我的建议似乎微不足道且显而易见。我完全了解您,但是起初我严重缺乏系统知识。我敢肯定,许多自己掌握专业知识的人都会遇到这个问题。



因此,我鼓励您分享在行业的头几个月(或几年)之后所学到的经验和观察。在职业初期,您会给自己什么建议?您会建议开发哪些技能?我和其他自学成才的人都可能需要您的提示,请随时发表评论。



All Articles