## 技术 [MIT 6.824 Distributed System](MIT%206.824%20Distributed%20System.md) [MIT 6.828 Operating System Engineering](MIT%206.828%20Operating%20System%20Engineering.md) [CS144 Computer Network](CS144%20Computer%20Network.md) [[UCB CS186 Introduction to Database System]] [Viva$](Viva$.md) [[八股]] ![image.png|1000](https://imagehosting4picgo.oss-cn-beijing.aliyuncs.com/imagehosting/fix-dir%2Fpicgo%2Fpicgo-clipboard-images%2F2024%2F12%2F15%2F02-23-42-3147c79416e6bf106d5e422b52c8d54b-202412150223331-0f70b3.png) ## 定义 RD是"Research and Development"的缩写,在软件公司中通常指软件研发工程师。 ## 优劣势 技术人的优势如果把技术人的困境一句话总结成一个词,就是单一。 - 能力上的单一,是因为过度关注技术含量; - 人际关系的单一,是圈子太小,且高度同质; - 思维方式的单一,是由于追求确定,再加上眼前的利益,这些都是很多人被困住的原因。 当然,技术人不只有信息茧房的困境,相比很多行业的从业人员,技术人也有很多独特优势。在我看来,两个方面优势非常明显。 - 思维活跃,学习能力强技术人的平均学历水平是高于社会平均水位的。在瞬息万变的互联网行业,技术人本来的工作就是特别费脑,每天在这样的磨炼之下,大脑越磨越锋利,所以相比一些传统行业,工作十年只是把一年的工作经验重复了十年,大多数技术人其实是一直在不断学习的,也是付费学习的主力军,整体学习新知识的能力非常强。而且大多技术人对新技术的敏锐度很高,比如 AI 出来,去深度研究的还是技术人居多。 - 互联网虽然不是完美的,但确实沉淀了很多非常好的、先进的做事方法,比如用户画像、小步快跑、MVP 验证等等。长期在前沿技术、先进思维的浸泡下,大多数技术人会有不错的成长心态,思维也比较敏捷。 - 有复杂问题的攻坚能力。技术人的工种有很多细分,但如果把技术人工作做一个抽象,其实就是在错综复杂的系统中去找到规律,发现问题,分析问题并最终解决问题。举个例子,小 A 所在的公司最近发展很快,在大力推广产品 APP,但推广效果不符合预期。"推广结果不好"不好是一个问题,那如何去"分析问题"呢?可能有投放渠道的问题,这个更多是商务层面去解决,而作为技术人,你可能会发现自己公司的 APP 包比竞对大不少,下载下来首页打开还经常很慢。这时候就可以通过技术手段缩小包的大小,提升首屏的秒开率等,帮助公司更好地推广 APP。这种发现问题、分析问题、解决问题的能力,在很多场景下具备很好的可迁移性。一个曾经带反作弊研发的技术 Leader 后来去带客服坐席团队。在降低客服进线量的问题上,他发现完全可以复用带反作弊研发团队的思路。一个朋友从互联网去传统行业做了几年数字化转型,回来感叹,很多技术人是被代码的舒适区困住了,只要突破这一点,其实很多方向可以做,我们本身的素质和学习能力都是非常够用的。 ## 主要职责 1. **软件开发**:编写、测试和维护软件代码 2. **技术研究**:研究新技术、新框架,评估其在项目中的应用可能性 3. **问题解决**:分析并解决开发过程中遇到的技术问题 4. **系统设计**:参与软件架构设计和系统优化 5. **文档编写**:编写技术文档,如设计文档、API文档等 6. **代码审查**:参与代码审查,确保代码质量 7. **技术创新**:提出创新想法,改进现有系统或开发新功能 ## 技能要求 1. **编程语言**:精通一种或多种编程语言(如Java、Python、C++等) 2. **算法和数据结构**:具备扎实的算法和数据结构知识 3. **软件开发工具**:熟悉版本控制(如Git)、IDE、调试工具等 4. **数据库**:了解关系型数据库和NoSQL数据库 5. **操作系统**:了解Linux/Unix操作系统 6. **网络知识**:了解网络协议和Web技术 7. **软件工程实践**:了解敏捷开发、持续集成等现代软件开发方法 8. **问题解决能力**:具备分析和解决复杂技术问题的能力 9. **团队协作**:良好的沟通能力和团队合作精神 ## 职业发展 - 初级开发工程师 → 高级开发工程师 → 技术专家/架构师 → 技术经理/CTO ## 工作环境 - 通常在办公室或远程工作 - 可能需要加班,特别是在项目紧张时期 - 需要持续学习,跟上技术发展