Tag: 软件工程师

我在亚马逊AWS云On Call的体验

从2020年到2021年,我在亚马逊(AWS云)担任软件开发工程师(SDE)。有人说SDE代表”Someone Does Everything”(什么都做的人),这相当准确。在亚马逊,每位SDE软件工程师都负责从设计、编码到测试的所有工作,还需要定期轮值紧急响应任务。大多数亚马逊团队由6-8名工程师和一名软件开发经理(SDM)组成,遵循“两个披萨团队” (Two Pizza Team)的原则。 每位SDE软件工程师通常每6-7周需要轮值一次Oncall(紧急响应任务),持续一整周24/7待命。在此期间,你需要处理和解决业务上出错的问题(比如服务器宕机,原因可能:程序出错崩溃、硬盘空间不足、CPU温度过高等)。为此,你需要在手机上安装紧急响应软件(Pong),以接收与团队产品相关的警报。当警报响起时,你必须在15分钟内确认工单。如果没有及时确认,问题会逐级上报,甚至可能报告到CEO姐夫贝佐斯 Jeff Bezos,这可能会对你的绩效评估产生负面影响。 我听说有个软件工程师下班后和同事到酒吧里喝两杯,然后警报响了,他淡定的拿起笔记本就处理起来了。 亚马逊的理念是你拥有自己的代码/You own your code。这意味着即使在半夜,警报响了,你也得爬起来解决问题。你的首要任务是恢复服务/Mitigation,其次是调查原因和解决。如果警报在凌晨3点响起,您可以临时重启服务器来解决问题,详细调查可以第二天起床后再进行。如果你在半夜被警报唤醒,第二天可以多休息,不用担心早晨的站会(敏捷开发每天都有例会)。 程序也需要Oncall就会促使他们尽可能的写出高质量的代码,避免BUG日后找麻烦。 这里顺便说一下,我在亚马逊S3的那个组,敏捷开发是2周一个短跑(Sprint),轮到oncall的工程师需要专注于Oncall DevOps,相当于是一个任务(多少点我忘记了),如果不太需要处理警报,则可以适当做一些其它开发任务。对我来说,压力最大的是在Oncall完的第二周,需要写报告,并在每周大会上给大家讲每个警报的原因和处理方案。 这个Oncall非常让人有压力,但它们有效地训练了软件工程师的DevOps技能。由于高灵敏度设置,新产品往往会生成更多警报。亚马逊以其99.99%的服务水平协议(SLA)而自豪,这要归功于SDE的紧急响应文化。 以下是我在2021年担任亚马逊SDE期间最后一次轮值时收到的警报示例。警报声可能非常刺耳,类似空袭警报,不过也有一些不那么刺耳甚至更愉快的铃声可供选择。当时这声音简直是恶梦。 我在Oncall那周,我媳妇都不愿意和我睡,因为大晚上的被警报吵醒是件很吓人并且让人很不爽的事情。当我离开亚马逊来到微软剑桥研究院后,立马压力就小很多,而且人也开心很多,朋友圈状态都比较频繁了。 其实,我感觉Oncall这事不讨好的一个很大原因是在英国Oncall是不额外给钱的,都属于本职工作的一部分。而据说在德国,Oncall是会有额外经济补偿的,在金钱的加持下,我感觉这事的体验感肯定天壤之别。 英文:The Experience of On-call (Paging) for Amazon Software …

数据和软件工程师职责区别

近几年随着大数据机器学习的流行,除了传统的软件工程师延申出了一些和数据科学/人工智能/机器学习相关的职业:数据工程师、数据科学家、机器学习工程师、软件工程师、数据分析师。 这些职位在数据和软件工程领域中都很受欢迎,每个职位都有其特定的职责和技能需求。以下是对这些职位的简单描述和它们之间的区别: 数据工程师 Data Engineer 工作职责: 设计、构建、整合、维护大数据平台和数据管道。确保数据可以在大规模和高速地在不同系统之间流动。 技能和工具: Hadoop, Spark, Kafka, Airflow, SQL, NoSQL数据库等。 数据科学家 Data Scientist 工作职责: 利用统计学、机器学习和其他高级技术来分析和解释数据,从而获得洞察力并做出预测。 技能和工具: Python, R编程, TensorFlow, PyTorch, Scikit-learn, 数据建模,统计分析。 数据分析师 Data Analyst …

儿子问我软件工程师的工作体验是怎么样的?

儿子问我软件工程师(Software Engineer)都是做什么的, 他很好奇我的工作内容, 我简单的说就是写代码+调试=解决问题. 正好那天是周五下午, 娃在上Papworth上钢琴课, 我一般都在车里剪视频利用起这个碎片时间. 我抱着笔记本在车里工作, 从年初就在忙一个大的改动, 忙了有两个多月, 终于差不多了, 两同事代码审核(Code Review)都通过了就差一些小改动, 所以我在车里还在努力, 根据收到的建议提交了代码 (Push commits), 终于得到了approved, 就等着 Azure DevOps 的 pipeline 编译代码然后跑单元测试+集成测试(还有七七八八的检查: 代码覆盖 Coverage, 静态代码检测 Static Code …

我的面试谷哥GOOGLE伦敦SRE的经验和教训

今年疫情, 接到了谷哥和FB的面试邀请, 想着试试现在的水平如何便欣然接受. 每年都面试, 并不是说一定要换工作, 这是一个很好的让你在人才市场中保持竞争力, 查看自己不足, 检验你坚持刷题的一个好方法: 阶段性刷题的考核和目标. 谷哥(Google, 狗家 或被称为G家)是很多软件工程师梦寐以求的公司, 可能是媒体宣传他们家的福利有多么多么好: 有免费的员工餐厅, 有各种娱乐休闲的活动, 给的工资还高. 我5年前接到过面试邀请(当时问了一道队列+哈希表的题), 可惜当时水平太差连第一面45分钟的 coding 都没过. 再后来这几年一直投, 甚至去年找朋友内推都没法过简历关. 据统计: Google 面试成功率不到 0.2%(1000人不到2人), 难度甚至比上哈佛更大. 第一面要过一般是要BUG FREE而且不能卡. …

说说软件工程师的职位头衔(Title)和级别

我现在在GE做软件工程师, 职位头衔是 Staff Software Engineer 翻译过来是 资深软件工程师. 我见过的软件工程师的职位(Software Engineer) 有以下几种: Software Engineer Intern: 软件工程师实习生. GE剑桥每年都会有十几个从大学过来的实习生, 会被分到不同的组, 然后由不同的大牛带, 一般是12个月, 每年都会有迎新和欢送实习生的会, 很是温馨. 有了在大厂的实习工作经验对于以后再找工作(转正)很有帮助. (Junior) Software Engineer: 初级软件工程师, 一般头衔不会加 Junior, 就是 Software …

离伦敦脸书/Meta最近的一次: 记FACEBOOK伦敦终面经历

每次面试没通过就会有一个面试经历分享, 哎. 不过这次FACEBOOK伦敦终面的收获还是挺多的. FB简历筛选 记得是五月份左右的时候在LINKEDIN上看到FACEBOOK伦敦的招聘广告, 于是就投了, 当时不抱希望的, 因为我听说像FACEBOOK, GOOGLE这种顶级互联网IT公司每周收到的简历有数千封, 所以很有可能就直接被过滤掉了. FB的人才库(talent)世界大公司排名能前5. 大公司都有自己的猎头, 也就是 Technical Recruiter, TR的水平是相当高的, 很多猎头都有计算机背景, 并且读了心理学等, 所以看简历和HR是不一样的. 很多HR看简历就是过滤关键字…… 投了简历很快就接到FB猎头的联系了, 第一轮有一个电话, 只是互相聊了了解一下. 这里说一下FB很大, 猎头负责的阶段也不一样, 比如这个联系我的猎头了解情况后就把我介绍给另一个FB的猎头负责安排第一轮技术面试, 然后通过后又介绍给另一个FB猎头, 有点类似接力棒. FACEBOOK第一轮技术面 …