文章目录
- 前言
- 自我分析
- 做什么
- 挑战
- 路线图
- 总结
前言
入行15载,从一线大头兵,到负责技术的架构师,再到技术和管理一把抓的团队负责人,我从中总结了软件工程师成功入门的11个步骤,分享给想入行,或刚入行的同学们。
自我分析
讨论如何成为优秀软件工程师之前,首先要搞清楚自己适不适合走这条路。你是否具备以下特质呢?
1. 喜欢解决棘手问题
作为一名软件工程师,你需要运用智慧和创造力来解决难题,你的价值来源于为老板或客户解决这些令人头疼的问题。
2. 喜欢沉浸式研究某个主题
要成为一名软件工程师,你需要学习许多复杂的技能,并且要不停地学习。如果你喜欢学习并以此为乐的话,这对你来说可能是完美的职业。
3. 希望与他人一起实现宏大的目标
“独行侠”和“孤胆英雄”往往只是神话。大多数情况下,你必须领导其他人,或与他们合作,才能解决问题。
如果你是一个喜欢挑战、乐于学习并善于合作的人,那么你已经具备了成为一名优秀软件工程师的素质。
做什么
虽然你已经具备了条件,但是别急,先来了解一下软件工程师平时都在做什么。你是否对这些工作充满兴趣?
- 确定客户的问题,通过升级软件程序来解决
- 运行新软件或现有软件的测试
- 修正系统或应用程序的问题
- 从头开始构建新程序
- 管理软件工程项目(通常是同时管理多个项目)
- 利用设计模型来详细地理解或呈现项目
- 迭代新版本的代码
- 对团队的产出进行质量控制
- 记录并完善研发流程
- 使用生产力工具提升工作效率
- 与客户沟通需求和方案
- 编写高效代码
- 成为年轻工程师的导师
- 向团队中任何需要帮助的人提供帮助
写代码,绝不是软件工程师唯一的工作,它只是最基础的工作。如果只会写代码,很难成为一名优秀的软件工程师。
挑战
假设你已经下定决心要成为一名软件工程师,那么你还将面临下面几项挑战。
1. 你必须努力提高沟通能力、团队合作能力和领导能力
绝不要当一名“独胆英雄”,你需要:
- 承担自己范围内的工作责任
- 与团队成员一起协同工作
- 与客户保持沟通
注意,这里的客户指的是工作上的客户,也就是为你的工作直接提出需求的人,而不仅仅是产品的用户。
如果缺乏沟通或公开演讲能力,那你需要尽快弥补这一短板。对于某些性格内向的人来说,这确实是一项不小的挑战。
但是,一旦掌握了这些软技能,你的职业生涯将轻松10倍。
2. 这项工作需要严谨地对待
系统性思考是软件工程师的杀手锏。只有系统性思考才能真正解决一个问题。“差不多解决了”、“我也不知道怎么就解决了”、“感觉没问题了”,这些撞大运的方法不是解决方案。
在工作中系统性地处理一个接一个的难题,这需要你保持专注力,用毅力来克服这些障碍。
路线图
一切就绪,接下来我们来讨论一下如何从零开始成为一名软件工程师。
1. 寻找动机并明确目标
许多人因为觉得难而放弃,但如果你有一个强有力的“为什么”,那么当你遇到困难时,坚持下去就容易得多。
2. 挑选职业路径
软件工程师有不同的方向。选择一个你想专攻的领域,并开始努力成为最优秀的。
以下是一些软件工程师的职业发展方向:
- 软件集成
- 质量保证
- 游戏开发
- 安全工程
- 自然语言
- 机器学习
- 大数据库/数据库
- AI
- …
3. 学习一门首选编程语言
可以按照下面的步骤进行:
- 选择一门最有用的编程语言。它最好与你的职业发展方向匹配。其实,编程语言本身并不重要,重要的是要从长远角度考虑。学习一门语言,不能仅仅是因为“简单”。
- 正确地开启学习之旅。不要找一次性教会你太多东西的学习材料。你应该去找适合初学者的材料,而不是完整的技术栈参考手册。
- 立刻开始编程。在学习过程中,确保进行实际编程,运用学到的每个概念,不要放过任何一个疑点。
- 开始构建小型项目。当你对一门语言有了基本了解之后,需要将它运用到实际工作中,并找出差距。从一些简单的小型项目开始,不要让架构和设计技能阻碍你继续学习。
4. 了解编程基础和最佳实践
为了学习如何编写易于理解和维护的代码,你需要阅读大量的优秀代码。这个阶段,可以阅读一个经典的代码设计书籍,例如《代码大全》、《重构》和《编程珠玑》等。
5. 学习数据库技术
建议选择一本关于SQL技术的好书,并创建一些小的示例项目,这样就可以在练习中进行学习。
此外,还需要学习某种对象关系映射技术(ORM)。寻找适合你所学框架的ORM技术。可能会有几个选择,所以你最好选择最受欢迎的一个。
6. 通过实习积累经验
我建议一旦有实习机会,你就开始准备和申请。迈出第一步往往是最困难的。
光有知识和技能,没有工作经验,你很难被公司录用,所以要抓住任何一次实习的机会。
7. 保持信息通畅
永远不要停止学习。永远不要停止阅读。
如果在职业生涯中不断学习,你就会不断超越同龄人。以下是可以随时了解软件工程行业发展趋势的途径:
- 活动和会议
- 新闻
- 博客
- 书籍
8. 掌握所有软件工程师技能
确保你具备成为一名优秀软件工程师所需的所有硬技能和软技能,这些技能包括但不限于:
- 批判性思维和注重细节
- 沟通技巧
- 合作的心态
- 时间管理
- 多任务处理
- 故障排除
- 测试方法
- 数据库的设计与开发
- 责任心
- 能动性
- 有信念
- 值得信赖
9. 编写简历
可以把简历看做是一页广告。你唯一需要做的,就是在15秒内抓住面试官的眼球,让他对你产生兴趣。
要非常清楚地描述,你的技能和专长是什么,你是如何利用它们取得成就的,以及这些技能对你申请的职位有何作用。
10. 应聘第一份工作
找工作是所有事情中最困难的。即使你遵循了我所说的所有内容,并且具备一名优秀软件工程师的素质和技能,也可能还是没人给你机会,除非你能找到正确的定位。
11. 提升面试技巧
提前几个月做好准备,研究编程问题,和朋友进行模拟面试,包括但不限于以下内容:
- 面试官常问的非技术性问题
- 思考和行为模式问题
- 计算机科学基础知识
- 编程知识
- 实际项目经验
总结
以上11条,是我根据多年辅导年轻工程师的经验总结出来的,看似说了很多,又好像什么都没说?
道理大家都懂,但是能做到的很少。
不过,你要问我成为程序员后最大的收获是什么?
让我明白什么是最佳职业:保持终身学习,在自由竞争的市场中,进行创造性表达(包括创造性解决问题)。
如果喜欢这篇文章,请不要忘记关注、点赞和收藏哦!
您的鼓励将是我创作的最大动力!