算法工程师是怎么花时间思考和写代码的?前端工程师每天都在做什么?后端工程师衡量工作的重要指标有哪些,他们为谁提供服务?我们请来了算法、前端、后端三位工程师,看看他们的日常工作。01推荐算法工程师日常阅读大家好,我是来自淘宝科技的推荐算法工程师。以我电脑记录的app使用时间为准,简单分享一下算法工程师的日常吧~1.Chrome是占用时间最多的应用程序。看点:查看业务数据报表每天来到公司,第一件事就是查看最新的业务数据报表,包括行情数据、AB数据、各个细分维度的数据。了解最新的数据情况可以指导我们接下来的步骤。算法优化是一个不断迭代试错的过程。及时获得反馈并做出调整非常重要。进行数据分析和建模在机器学习领域,garbageingarbageout是指如果输入算法的数据质量不高,得到的结果也不会很好。之前在数据准备过程中不小心出现了样本遍历的问题,导致后面整个模型训练的结果不可靠,后来花了很多时间排错重建数据链路。除了算法使用的数据,数据分析的不合理逻辑也会导致我们采取错误的行动。此类操作可能无效,甚至对业务产生负面影响。重视数据链路可以事半功倍。公司平时编写数据处理代码,通过DataWorks网页定时发布节点,占用了日常工作的大部分时间。业务方案和算法模型的部署和发布推荐算法工程师需要面对线上流量,所有业务逻辑和算法模型从线下到线上都需要经历一个发布过程,一般是先灰度化,然后是小流量,然后逐渐扩展金额,最后是全额。公司中台团队开发了TPP、BE、RTP等平台,算法工程师可以专注于算法和业务本身,工程化工作由平台完成。在这些平台的网页上,我们可以快速完成业务方案和算法模型的发布。学习收费公司内部有个技术分享论坛,可以说是算法工程师的宝库。在这里,来自不同业务线和岗位的同学们分享了他们的实践经验和对前沿技术的解读。每次拜访,他们都会收获颇丰。另外,阅读一些领域相关的论文可以保持对技术的敏感度。如果发现好的idea,可以结合自己的业务场景进行尝试。最后,我也会在github等技术社区查看有没有实用或者有趣的项目,作为技术储备或者直接复用。我也在业余时间维护一些推荐的开源项目。欢迎有兴趣的朋友加入我们学习交流~https://github.com/shenweichen/DeepCTRhttps://github.com/shenweichen/DeepMatch2。DingTalkDingTalk就是大家熟知的钉钉,公司内大家协同工作,每个业务模块的迭代都涉及到产品、运营、开发、算法等不同岗位的同学。有效的沟通对于推进工作非常重要。除了协作,在日常工作中使用公司内部工具时可能会遇到一些问题。这时候还需要和相关问答同学沟通解决。有时候我也看别人交流,看别人在一些群里聊天也是很有收获的。3.PyCharmPyCharm是我常用的PythonIDE,主要用来写各种tf模型代码。可能很多待业同学认为算法工程师的日常就是写模型,调模型。就我而言,写模型代码的时间比较少(这也是得益于公司强大的中台和内部开源代码库)。4、PowerPoint团队内部有共享机制。我们分为两个方向:业务共享和算法共享。截图的那一周恰好是我准备PPT的那一周,所以花了点时间写PPT。除了内部分享,在季末、业绩季末、推广季等时间点,也会在工作总汇报的PPT上投入一些精力。5.IntellijIDEAIntellijIDEA是一个javaIDE。除了算法模型和数据处理之外,整个推荐系统从用户请求到画像获取、召回、排序、重排等模块的环节也需要算法工程师来实现。在公司一般都是通过写java代码来实现的,所以给即将进入推荐算法的同学的建议是除了Python之外,学习java或者cpp!02前端开发工程师的日常石川加入阿里第六年,目前负责集团内用户量最大的页面搭建平台:斑马。用户在淘宝上浏览各种商品活动页面时,中间的很多页面都是通过这个平台发布上线的。我的日常工作主要围绕着淘宝的服务能力建设展开。严格来说,我是一个“围着前端打工”的工程师。或许称其为“运营交付的前端页面解决方案工程师”更为合理。总的来说,我的日常工作可以分为两部分:搭建平台服务,支撑产品建设和技术探索1.搭建平台服务支撑,通俗点说就是答疑解惑,解决技术研发同学和业务运营同学遇到的问题使用平台产品的人,一般基于自己负责的系统环节,或面向业务运营,或面向技术开发。由于我负责的平台比较特殊,这两个部分都有涉及。研发型服务支持一般从业务的技术选型阶段开始介入,提供基于构建体系的专业技术解决方案支持,包括前端基础框架解决方案、页面渲染服务(SSR、CDN等),以及个性化场景数据网关等服务能力会涉及到更多方面,因此需要了解整个技术生态和服务体系。在业务技术端确定相关技术方案后,进入常规的前后端研发流程。在这里,一般只需要帮助解答一些建设领域特有的技术规范问题,直到业务正式发布上线。后续研发方基本进入业务自营阶段。在平台能力和业务需求场景没有太大变化的情况下,我们很少需要长期持续投入的场景。运营服务支持对于运营服务支持,除了一些基本的功能指引外,更多的是实际业务需求场景的问题。这部分对于技术研发来说是比较有挑战的,因为技术同学的逻辑思维惯性比较大,很容易把业务需求过度技术化。面向运营的服务需要切换到一个完全不同的视角去消化理解。从产品工艺层面对用户的实际需求给予相应的支持。同时收集相关信息,最终反馈给后续的产品建设。2.产品搭建和技术探索作为平台产品和技术的负责人,需要参与产品的整体开发规划,到平台内部运营的开发,基础渲染解决方案架构对于最终用户。)stack(money)工程师无疑。产品规划和演变。基于用户的业务场景和需求,构建服务的能力不断演进,让平台上的业务更快地交付上线。同时,斑马作为淘宝构建服务的重要组成部分,也是基础服务与上层业务的桥梁。在此期间,不断对业务能力进行剥离和抽象,推动底层基础设施服务能力的迭代。大白话翻译就是:我是兼职PD~。当然整个项目组的同学都会参与这项工作,因为都是一线技术研发,我们建立了一套基础产品方案评审流程,从基础技术方案的实现到优化产品交互流程,按照Review、研发、发布双周节奏进行。运营平台的架构和开发。这部分工作占用了我大部分时间,也比较复杂,因为需要面向很多业务,需要保证平台架构足够轻,不被业务侵入和具有足够的灵活性和可扩展性。总结几个关键词:Node.js/Midway/Fusion/FlyingIce,基本涵盖了整个平台的技术栈,这些大多是软件工程的基本实践,这里不再赘述。消费端渲染方案探索。这是技术面比较纯,但是关联链接很多的部分。核心目标是让最终用户更快地访问页面。目前主要在大促会场与学员共建,将在双十一等大促活动中通过检验的终极解决方案进行推广,覆盖更多业务。关键词:Rax/Weex(是)/FaaS/EdgeRoutine/CDN3。除了工作还有什么?肝神。每天中午,我都会在去食堂前做半个小时的例行公事。我还可以在非高峰时间获得折扣。无疑是个省钱的大佬(对了,最近好不容易攒了8000原石,想画菱花,结果歪了,秦团长,有救吗=.=);奶宝宝。平日里,我会尽量在6点左右下班回家,我会定期和你一起玩(我不会告诉你我在家里学的二胡,每次开始练习,我都是怕楼上楼下的邻居打来电话),周末如果条件允许,我一般都会去周边。一日游(我住在杭州,基本不去西湖),比较喜欢野外探险。不仅环境好,而且人少,孩子可以更多地接触大自然;扔鱼缸。几年前迷上了草缸,后来买了土缸。缸子虽然不大,但偶尔坐在草缸前看着水草冒泡,倒是挺惬意的。家里的小朋友也很喜欢缸里的小鱼小虾。让我们拍张照片;03后端工程师的日常rosin作为阿里巴巴一名普通的Java开发人员,从工作模块和职责的角度,我想和大家分享一下我的具体工作范围,并从个人经历的角度给新人一些建议。在阿里巴巴,像我这样一个普通的Java开发者的工作时间一般是早上9点到晚上8点。具体工作内容可以分为开发、运维、答疑。对于不同工作职责的学生比例,每项任务的时间比例也不同。在成熟的中间件或运维团队中,问答和运维的时间和工作量更多;而在初创团队中,开发工作量会更多。我的具体工作内容如下——1.开发工作广义上的开发工作内容非常复杂,涉及面广,从最基本的会议讨论环节(如需求评审或设计评审)到狭义的开发环节即代码编码实现到测试上线都是开发工作的一部分。具体来说,开发工作包括以下内容:2.需求评审在项目中,需求分析是最初的工作,也是最重要的工作。在这一步中,开发人员需要与产品经理、测试人员等就项目目标、需求理解、系统原型和术语定义达成一致。3.系统设计了解了项目的目标后,就可以开始做系统设计了,包括技术选型(项目用什么语言和框架,数据持久化用sql/nosql,选择什么数据库),模块拆解细分(大到网关/入口/功能/基础架构的层级设计,小到具体功能之间的耦合拆分设计),详细设计(通过如时序图、类图等来描述关系某个功能或设计与流程之间,定义交互协议的数据格式),设计审查(通过团队内部和外部的审查来查漏补缺,看是否有错误或不合适的地方)设计)。这一步在整个开发工作中起着至关重要的作用。一个好的系统设计可以有效的减少写代码时的思考和工作量。4.代码实现系统或方案设计完成后,可以按照预先定义的流程编写代码并实现。写完之后,要邀请一个以上的同学进行CodeReview,审查代码的质量和逻辑的完整性。5、测试回归对于开发者来说,测试主要是在代码层面和功能实现层面。前者主要是编写单元测试单元测试,在方法或类的维度验证代码的正确性,后者是在函数写完后进行测试。全链路测试从入口开始,伪造流量,看整体效果是否符合预期。通常,这一步也需要专业的测试人员介入。当出现异常问题时,需要进行调试和问题修复。6.功能启动任何功能或系统启动都是复杂的。在引入流量之前,需要对关键业务节点进行监控配置。发布过程中先进行beta灰度,并进行功能验证,确认功能正常,指标监控稳定。开始批量发布(如果是大型系统集群),需要在发布过程中和发布后实时关注监控指标,防止线上出现问题。7、效果验证项目上线后,可以通过服务器端嵌入的日志数据进行过滤统计,检查上线后整体功能是否达到预期目标。8.文档编写文档是开发人员的工作,以上每一个开发步骤都应该记录在项目文档或系统文档中。9.运维工作运维工作包括日常运维,包括系统容器状态管理(重启/更换/扩容/缩减),运维推广(预算申报,计划管理和钻、重保节点配置等)以我自己为例,负责淘宝直播互动消息扩散架构。每次头部主播举办大促活动或大型活动,都需要提前在直播间配置和准备相关信息,并确认容器状态正常,这些都是与系统运维相关的工作。10、答疑工作大家负责的系统应该只是系统环节的一部分。这时候你需要为你的业务方提供解答工作:帮助完成系统接入,帮助排查问题,解答功能细节等。现在这部分工作在阿里巴巴内部已经逐步由自动化的问答排查工具完成,但是难免需要开发商介入解决疑难杂症。11.工作之余的充电阿里巴巴内部有一个技术分享论坛,里面可以看到各种系统设计介绍,疑难问题的排查,或者思维方法等,闲暇的时候会在论坛上学习别人的分享,踩坑记录或成功经验。我们团队也经常有技术分享和文章书籍介绍,比如《领域驱动设计》《重构》《Designing Data-Intensive Application》等,这些必要的收费对于个人能力的提升也是非常重要的。12.对新人的建议一般情况下,新人来到团队后,会有一段时间适应工作环境和内容,团队也会给新人分配一个导师角色(阿里巴巴称之为“师兄”)负责入职后的适应阶段。新人做的第一件事就是熟悉环境,包括与同事的相处方式,公司的技术栈,中间件等等。适配完成后,总督会给你分配一些简单的任务,比如某个模块功能的实现。新人需要实现这样一个任务,包括功能效果的实现,对团队和上下游业务的熟悉程度等等。最后给新人的一些建议就是在工作中多交流。刚入职的时候,对整体的业务和技术栈,甚至包括自己的职责和职责范围等,都会有疑虑,这是很正常的。事情。这个时候多和你的主管或导师沟通,不断明确自己的工作目标和目前的进展,这样新人落地会更顺利。有时新人会在技术实现上遇到困难。在这种情况下,除了自己思考和学习之外,还需要多和同事一起探讨。向资深员工学习也会让你的工作更加顺畅。工程师的日常工作没有那么有活力。大多数时候,它是日复一日的、重复的、枯燥的。因为你有了目标,有了方向,你只需要认真专注,然后心无旁骛地往前走。
