首页 > 编程语言 >程序员必看!从菜鸟到专家你要这么做,8年互联网老兵爆肝总结

程序员必看!从菜鸟到专家你要这么做,8年互联网老兵爆肝总结

时间:2024-10-14 19:32:51浏览次数:1  
标签:必看 工程师 菜鸟 代码 爆肝 技术 程序员 文档 研发

“互联网行业工作8年多,在国内Top互联网大厂B(ytedance)AT中的两家待过。喜欢研究计算机基础原理,有移动端全栈(包括Android & iOS & 鸿蒙等)开发经验,对逆向和网络安全有一定经验。”

不管是在校大学生,还是初入职场的菜鸟,抑或是在互联网行业打拼多年的老码农,相信这篇文章都能对你有所帮助。这是我工作多年以来总结的经验,都是亲身经历的,只有自己经历过的才会有切身的体会,没有花拳绣腿,没有虚头巴脑的东西。

虽然工作多年,依然对这个行业充满敬畏,深知持续在这个行业发展的不易。从初出茅庐不怕虎的愣头青,到棱角磨去、锋芒不在、按部就班的工作,经历了很多,心态也变化了很多。

不管如何,都希望自己不忘初心,砥砺前行。苍穹不负少年意,岁月不枉赶路人。

回归主题,下面我会根据自己的经验,说一下程序员如何成长,如何面对激烈的竞争环境和行业日新月异的技术革新,保持自己的竞争力,在这个行业长久的发展下去。

从大的方面来看,主要有三点:硬实力、软素质和打造个人影响力。下面我一一介绍。

  1. 硬实力

硬实力即工程师编码解决问题的能力,是对我们的基础要求,是立命之本。硬实力包括不限于:技术栈、编程语言、技术方案设计、代码架构设计、编码实现、单元测试、CR、性能优化、代码重构、问题定位、计算机底层原理、工具使用、技术规划等。

1.1 享受编程的乐趣,不断提升编码能力

兴趣是最好的老师,只有热爱才是最长久的告白。我相信每个选择互联网研发的同学,都是热爱编程、享受编程的。不管工作多久,这份初心都希望能保持不变;对于还没有工作的在校生,选择这个行业最重要的因素也是你是否热爱编程。

明确自己的技术栈,不断深耕。互联网研发岗位也有很多工种,包括:前端、服务端、移动端(Android & iOS & 鸿蒙 & 跨平台)、机器学习、大数据、大模型、人工智能、安全、测试、运维等等。不同的工种有自己的技术栈,工作前几年一定要在自己的领域深耕下去,保证自己有一个专长。我的经验是当你对一个领域研究很深入后,学习其它的知识很容易触类旁通,举一反三。相反,什么都会,什么都不精,履历是很难有亮点的。

另外,对于编程语言,不同的技术栈都有适合的语言,语言只是我们解决问题的工具,没有绝对的好坏之分,不同的场景选择不同的语言。随着新技术的不断发展,语言也在不断升级迭代,会有很多新的特性,在开发效率、安全性、性能等方面都会提升,还是需要积极学习,主动拥抱。

比如,移动端Android的Kotlin(对比java),以及iOS的swift(对比OC),都是更好的编程语言选择,支持了非常多的新语言特性。近几年,Rust 语言以其高安全性、高性能、跨平台等优势,已连续多年被评为程序员最受欢迎的编程语言,在一些底层系统开发、跨平台开发中展露头角,非常值得学习。

互联网行业新技术层出不穷,发展很快,我们不能一直待在自己的舒适区。要不断学习、多尝试、积极拥抱变化、拥抱新技术。

1.2 重视技术方案

作为一个研发工程师,每天最重要的事情就是实现需求。保证一个需求顺利交付最关键的是技术方案,一个技术选型合理、考虑周全的技术方案才能保证需求顺利落地。从我个人的经验来看,很多时候技术方案的设计环节占用的人力成本超过了50%,有了完整的技术方案,开发过程会非常顺畅。

技术方案是研发工程师展示自己技术实力和技术素养最好的方式之一。

优秀的工程师,不仅仅满足实现需求功能,他们也关注程序的效率、质量、可读性、可维护性、可扩展性、成本、监控告警、容错降级等。这些都需要在技术方案设计阶段考虑和呈现。

1.3 做好研发日常工作

工程师不仅仅是写完代码就完了,写好代码只是工作中的一部分。研发日常还包括很多其它环节,也同样重要。包括编码、单测、CR、灰度、数据监控、线上问题处理等。

1.3.1 编码实现

重视代码质量。傻瓜都能写出计算机理解的代码,唯有能写出人类容易理解的代码的,才是优秀的工程师。一定要重视代码规范和质量,保证架构设计合理。不要仅仅停留在实现功能的层面。

重视防御式编程。对于各种边界、性能、稳定性、兼容性等影响要准确评估,避免带入线上问题。重要的变更要有线上降级止损的手段。

重视单元测试。代码逻辑尽量用单元测试覆盖,如果发现单测不好写,大概率是代码架构不合理。只要有开发经验的工程师,一定会有深刻的体会,解决线上bug付出的成本要远远高于QA测试阶段发现的bug。一定要更前置的发现问题,而单测无疑是最好的手段之一,或者没有之一。

用代码说话。Talk is cheap,show me the code。

重视CR。CR 不仅仅是帮别人发现问题,更是团队成员之间互相交流、互相学习提升的好机会。CR和单测一样,都对提升代码质量非常有帮助,这也是我个人职业生涯非常深刻的体会。

1.3.2 上线灰度

原则上,任何功能变更都要有降级回滚的能力,避免线上出现问题不能止损。处理过线上事故的工程师才会有切身体会!!!

重视数据指标,用数据说话,不自嗨,不猜测,不管是业务指标,还是性能指标,都要做到用数据分析。Talk is cheap, show me the data。

重要的指标一定要配置监控告警,监控告警是及时发现线上问题最有效的手段。

1.3.3 线上问题

俗话说得好,没有经历过 P0 的研发不是好研发,研发不是在解决 P0,就是在搞出 P0 的路上。在事故中成长,从失败中复盘,是研发同学不断精进、追求极致的必由之路。当然,我们要做的就是不断提升自身技术水平,规范开发流程,尽量避免线上问题,出现了线上问题也要有能力解决。

再优秀的程序员,也不能保证不会出bug。处理线上问题成本非常高,对自己的绩效考核、个人以及团队口碑都会有很不好的影响。也见过一些非常优秀的研发工程师因为一次事故,对自己的职业生涯造成了很大的影响,令人非常惋惜。

不断提升定位问题,解决问题的能力,没有捷径。多读多写代码,多解决问题,多请教高手,善用工具,多总结复盘是提升问题排查能力的主要手段。

1.4 重视计算机底层原理

一个程序员对计算机底层原理的理解,决定了他职业生涯的上限。

不管什么工种,不管什么技术栈,作为一个程序员,底层原理一定要重视。包括不限于:编译原理、内存、多线程、crash分析、网络、安全、算法、数据库、设计模式等等。

基础知识非常重要,尤其是在定位疑难杂症、解决棘手问题时。这是拉开编程专家与一般程序员距离的地方。

这些问题你能回答好吗?

一段代码从书写到编译运行起来,经历了哪些阶段?

TCP 三次握手原理是什么,为什么不能是2次或者4次?

HTTPS更安全的原理是什么?

多线程使用过程中容易出现哪些问题,如何规避?程序在内存中是怎么分布的?

静态库和动态库的区别?

等等

1.5 善用工具,提升效率

工欲善其事,必先善其器。

开发过程中,我们要使用到各种工具,善用各种工具,对我们开发提效非常重要。包括不限于:IDE、Git、CI/CD、GPT、命令行、脚本、网络抓包、开源工具等。不断优化我们研发流程,提升效率,才能让我们把宝贵的时间放到更重要的事情上。

好的工程师非常懒惰,TA这么做一定是为未来的工作提升效率。如果一件事情不断地重复做,一定要考虑用自动化手段解决,这才是工程师思维。

  1. 软素质

一个优秀的研发工程师不仅表现在技术硬实力方面,TA的软素质也同样重要。重要的软素质包括不限于:沟通协作、项目管理、工作汇报、文档书写、流程规范、用户思维等。

2.1 重视沟通协作

在互联网公司中,有很多工种,包括不限于:RD(前端、客户端、服务端、算法等)、PM、UX、QA、DB、PMO等。每一个需求都会涉及各方的合作,才能顺利落地,这其中沟通协作是必不可少的,对工程师而言也非常重要。工程师时刻要牢记,写代码不是工作的全部,不能只关注代码。要关注做事的整体流程,对项目需求有很好的把控,才能更进一步。

在项目开发过程中,程序员往往不是孤立地工作,而是需要与团队中的其他成员紧密合作。良好的沟通协作能够促进不同团队之间的合作和理解,保证项目顺利开展和交付。

沟通的方式非常多,IM聊天、会议、文档等,不管什么沟通方式,都是在表达。个人经验,表达最重要的就是:准确、简洁、清晰。

  • 善用肯定的陈述句,避免可能、大概、估计等模糊词汇。
  • 用词精炼准确,避免过度修饰、避免黑话、冗余啰嗦。
  • 组织条理、结构化思维、善于用图(表)。

2.2 重视文档书写

优秀的工程师对自己的作品足够尊重,作品包括不限于:技术方案、代码、文档、产品等。其中技术方案、代码前面提过了,这里重点说一下文档书写。
为什么文档书写重要呢?因为不管是需求文档、技术方案、技术分享、会议材料、成果汇报、晋升答辩、面试简历等等,都算是文档书写。作为一个优秀的工程师,不仅要代码写的好,也要很好的展示和呈现出来。优秀的文档和优秀的代码一样重要。

这里重点强调一下职级晋升答辩。一般互联网公司每年都会有晋升的机会,都需要答辩,答辩的材料是你过去一两年的工作产出。即便相同的工作内容,不同的表达方式,呈现出来的效果可能差别很大,也在一定程度上会影响答辩结果,大家一定要重视。

2.3 重视流程规范

每个公司都有自己的开发和交付流程,我们要做的就是遵守流程并不断优化流程,让自动化代替人工重复的工作,不断提升我们的开发效率。

另外,还要强调一些非常重要的规范,前面也介绍过,因为太重要了,这里再提一下。开发过程中一定要重视单元测试、开发自测、CR、监控告警、容错降级手段、核心逻辑添加log等,做好防御式编程,避免踩红线。一次不必要的失误,在工程师职业生涯中可能是灾难性的。

  1. 打造个人影响力

当你在一个领域有一定经验和沉淀之后,就可以考虑对外输出一些知识,不断的打造个人影响力,视野不在局限在一个团队、一个公司,而是有了行业视角,不仅让你的技术水平得到进一步的突破,也能让你得到更多的行业机会。
一件事情,如果说自己明白了,通常只理解了50%;如果能给别人讲明白,那才是100%理解了。费曼学习法的核心是:透过“教学”或“分享”的形式,对知识做到更好的理解和记忆。只有当你能把一个知识快速、轻松、逻辑清晰的表达出来的时候,才代表你真的懂了。

做过技术分享的同学都会有这个感受,技术分享往往收获最大的就是自己。

除了技术分享,写博客、参与开源、参加行业会议、开设课程等等都是提升我们个人影响力很好的方式。

最后,还忘了最重要的一点,要保持健康,多锻炼身体,劳逸结合,少加班,身体是革命的本钱。
与君共勉,知行合一。

标签:必看,工程师,菜鸟,代码,爆肝,技术,程序员,文档,研发
From: https://www.cnblogs.com/newtonaicoding/p/18464872

相关文章

  • 购买前必看:Facebook账号质量七大检测标准
     在您决定购买Facebook账号之前,是否已经充分了解了如何判断一个账号的质量?您是否知道哪些标准是衡量Facebook账号价值的关键?购买Facebook账号是否有必要,以及如何检查账号质量,这些问题的答案取决于你的具体需求和风险承受能力。以下是一些关于购买Facebook账号的考虑因素和检......
  • 程序员必看!用 Eagle 读懂 GitHub 项目代码
    程序员一定要学会这一招,悄悄充电,偷是技术大牛,惊艳所有人!作为程序员,GitHub是一定要看的,学习并理解优秀的项目代码,让你事半功倍。一起来看看技术大牛是怎么在GitHub上充电的吧!GitHub上有一个叫Trending的榜单,它会帮你列出最近一天、一周、一个月最火的项目。这些项目一般都有......
  • 学 Linux 必看,小学生都能看懂的保姆级教程 —— Windows 安装 VMware 虚拟机
    〇、说明本教程所用VMware和CentOS版本VMware版本:VMware-workstation-full-17.5.2-2377557CentOS版本:CentOS-7-x86_64-Everything-2009作者电脑参数CPU:Intel®Core™[email protected]核GPU:NVIDIAGeForceGTX1050(2GB/联想)Intel®HDGraphic......
  • 独家揭秘,股民必看!历史性一刻:A股开盘涨停后回落,揭秘真相
    在一个阳光明媚的早晨,小张坐在电脑前,眼睛紧盯着屏幕。他是一名资深的股市投资者,今天,他要见证一个历史性的时刻。港股在国庆假期期间连续大涨,这让小张感到既兴奋又紧张,他知道,A股市场即将迎来一场风暴。小张像往常一样打开交易软件,却发现上证指数以涨停价开盘,涨幅达到了惊人的1......
  • 老程序猿连夜爆肝,收集整理各大主流云服务器优惠活动入口大全(内含免费试用1个月活动),建
    阿里云新用户专属特惠跳转 老用户续费优惠跳转找“老用户续费专区”,领折扣续费高校学生专属优惠跳转高校学生通用权益,大一/研一新生认证后还可以领券开发者/小微初创者优惠跳转找到"开发者/初创者力荐"板块免费试用1个月跳转高达121款免费试用产品......
  • HTML奇幻之旅:从菜鸟到大神的魔法秘籍
    HTML奇幻之旅:从菜鸟到大神的魔法秘籍欢迎踏上这趟HTML的奇幻之旅!在这篇博客中,我们将以幽默轻松的方式,深入浅出地探索HTML的每个角落。从基础语法到高级技巧,从具体实例到数据可视化分析,我们将一步步揭开网页设计的奥秘。无论你是编程新手,还是希望提升技能的老手,都能在这里找......
  • 新手小白想快速上手Mac的使用必看问题
    相信不论是现在还是将来,肯定还是会有Mac小白的存在,对于大多数人来说,从小接触Windows的机会比较多,Windows的使用也是比较多,但是有些朋友在大学的时候想体验一下Mac的感觉,于是果断下单,又或者工作之后发现,Mac的高续航更适合自己,总之不管是何种原因,Mac能够拥有庞大的用户群体,自然是......
  • 【编程小白必看】Python编程练习题元组操作秘籍一文全掌握
    【编程小白必看】Python编程练习题元组操作秘籍......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对社区防疫管理等问题,对社区防疫管理系统进行研究分析,然后开发设计出基于Django框架的社区防......
  • 菜鸟笔记之pwn工具篇--pwntools库的基本使用
    啥是pwntools?Pwntools是一个用于漏洞利用和二进制分析的Python库,广泛应用于安全研究、渗透测试和竞争性编程(如CTF,CaptureTheFlag)中。它为用户提供了一套强大的工具和功能,以简化与二进制文件的交互、网络通信以及各种常见任务的执行。简而言之,pwntools可以说是pwn手必备的......