焦点
类似书名
软件工程师、应用程序开发人员、软件架构师、计算机程序员、游戏程序员、游戏软件开发人员、 应用软件开发人员/程序员
职位描述
软件开发人员是计算机程序背后的创造者。有些人开发应用程序,让人们能够在计算机或其他设备上完成特定任务;另一些人则开发支撑这些设备运行或控制网络的基础系统。
“未来工作”最新动态
像Codex这样的自主AI工具现在能够自主编写、重构和测试代码,从而减少了对常规入门级编码任务的需求。如今的工程师正逐渐转向系统设计、架构规划、复杂问题解决以及有效指导AI代理。成功与否越来越取决于战略思维以及与AI工具协作的能力。
职业生涯中的回报之处
- 在心仪的公司内获得职业发展机会
- 能够主导项目并影响他人
- 每天拓展技术知识
- 能够直接影响公司的增长
内幕消息
岗位职责
- 分析用户需求,然后设计、测试和开发软件以满足这些需求
- 为客户现有的程序和系统推荐软件升级方案
- 设计应用程序或系统的每个组成部分,并规划这些部分如何协同工作
- 创建各种模型和图表(例如流程图),向程序员展示应用程序所需的软件代码
- 通过软件维护和测试,确保程序能够持续正常运行
- 对应用程序或系统的各个方面进行详细记录,作为今后维护和升级的参考
- 与其他计算机专家合作,开发出最优的软件
不同类型的开发商
- 后端开发人员——负责网站的整体技术构建
- 前端开发人员——负责网站的外观(布局和图形设计)
- 网站管理员——负责维护网站并及时更新内容
所需技能
- 注意力
- 创造力
- 客户服务技能
- 注重细节
- 对HTML、多媒体发布工具和编程语言有深入的了解
- 灵活性
- 学习能力强
- 能够迅速适应变化
期望与牺牲
- 期望:具备快速学习的能力,并能编写出高质量且易于维护的代码
- 牺牲:除了自己的职责外,还不得不填补空缺并协助其他团队成员,尤其是在处理来自产品公司的要求不明确的情况时
不同类型的组织
- 科技公司(无论是大公司还是初创公司):例如谷歌、脸书
- 那些处理可通过编程方式完成的业务操作的组织(符合这一描述的组织越来越多)
- 创建自己的初创公司的选项
- 自由职业者能否为多家公司开发软件
- 开发商店
当前趋势
- 人工智能让软件/应用程序/系统日益智能化
- 整合机器学习,帮助机器像人类一样思考
- 此类软件的示例:Google Assistant、Siri、Alexa
- 大数据
- 开源软件开发:开源软件的原始源代码公开可得,允许重新分发和修改,这使其成为各领域创新的关键。开源不仅能培育单个企业,还能推动整个行业的发展、创造新机遇,有时甚至会颠覆整个行业。使用开源软件、将自己的项目开源,以及积极参与开源社区,是跟上技术发展步伐并融入更广泛社区的必由之路。 [www.oreilly.com]
- 基础设施的重构与重组:这些新方案让软件工程师能够专注于业务增长,而非担忧“内部器官”是否运转正常:XaaS、无服务器架构、分布式系统、容器和微服务。 利用 OpenStack 等第三方服务获取计算能力,构建响应式微服务以将架构划分为独立模块并集中优化各部分,从而打造更具弹性且可扩展的环境,并借助 Docker 和 Kubernetes 等云原生工具实现软件的持续部署。[www.oreilly.com]
- 机器学习:OpenAI(埃隆·马斯克)、Watson(IBM)、TensorFlow(谷歌)和CNTK(微软)推出了令人兴奋的新产品(Alexa)和新范式(语音驱动型应用),并实现了基础设施自动化,这使得机器学习领域再次正式升温,而且这次的热潮将持续下去。[www.oreilly.com]
- 以客户为中心的设计:“以客户为中心,必将带来成功” [www.oreilly.com]
从事这一职业的人年轻时喜欢做些什么……
- 喜欢玩游戏/解决问题
- 对科学感兴趣
- 对编程的热情
- 渴望探索新思路,并尽可能多地获取知识
- 常去的图书馆
- 很享受与朋友们聊上好几个小时,畅谈各种想法、发现和书籍
- 对培养技能、头脑风暴、阅读和环保意识的兴趣
“我以前对游戏还挺着迷的,我相信这在最后也起了一定作用,但其实我小时候更喜欢科学。上大学时我原本学的是化学工程,后来才转了专业。我对编程的兴趣和热情,大概源于高中的编程课程——我非常喜欢课程中提出的各种问题,也喜欢用逻辑思维来分析它们,比如创建一个模拟鱼缸所涉及的复杂问题。” OpenX 软件工程师 Leon Ho
所需的教育和培训
- 软件工程师只需拥有计算机科学或相关专业的学士学位即可入行
- 高级职位可能需要硕士学位
- 软件工程师实习对边学习边积累实践经验非常有帮助
- 目前有大量与软件工程师相关的证书,包括:
- Springboard 软件工程训练营
- 认证安全软件生命周期专家
- 专业软件开发人员认证
- CIW 网页开发专家
- Oracle 认证大师
- 微软认证 Azure 解决方案架构师
- O*Net 列出了所需的各种技术技能,包括多种软件类型,例如访问、分析、应用服务器、备份、商业智能、基于云的数据访问、通信服务器、配置管理、内容工作流、数据库管理、数据挖掘、开发环境、企业资源规划等,不一而足。
高中/大学期间的活动
- 解谜、下棋、玩其他策略游戏以及阅读
- 分析日常生活中的事物是如何运作的;例如:重力
- 开始探索如何从逻辑角度分析问题并加以解决,同时学习数据结构和算法
- 业余编程项目也总是加分项
- 常见的课程主题包括高等数学、AP微积分、AP统计学、AP物理、工程学、物理学,以及众多计算机科学课程,例如编程基础、数据结构、算法导论、操作系统、计算机体系结构、人机交互和离散数学。
- 学习 React、Angular、Express 和 Rails 等开发框架
- 软件工程师常用的编程语言包括 Java、Python、JavaScript、C++ 和 Scala
- 决定是先攻读学士学位再求职,还是先继续攻读硕士学位
- 在求职之前,先着手考取你想要获得的相关证书
- 建立一个作品集网站,通过案例研究展示你的作品
- 加入学校的计算机社团,在那里你可以交流信息并保持学习动力
- 利用视频、书籍和副业项目,在自己方便的时间学习
- 申请软件工程师实习岗位,积累实际工作经验
- 在完成学业和工作上的重要里程碑的同时,着手起草简历
如何找到第一份工作
- 向老师寻求建议
- 把握自由职业的机会
- 申请科技公司的职位空缺
- 尝试不同行业
- 怀揣清晰的愿景和商业计划,创办自己的初创公司(可通过Kickstarter筹集资金)
- 利用社交媒体建立行业人脉
- 在Monster、Indeed、Glassdoor、Zippia等求职门户网站,以及Machine Hack、MLconf Job Board、Stack Overflow、AngelList和DataJobs等IT相关网站上创建个人资料。别忘了也使用LinkedIn!
- 先申请初级职位,直到积累足够的经验,达到担任高级职位的资格为止
- 留意招聘广告中使用的关键词,并将它们融入你的简历中
- 查看软件工程师简历模板,获取措辞灵感
- 在提供推荐人的联系方式之前,请先征得他们的同意
- 通过阅读软件工程师面试题来准备面试
- 面试时做你自己,让你的个性闪耀出来!专业能力固然重要,但文化契合度同样重要。你要确保自己与应聘的公司彼此契合。
如何保持竞争力并继续参与竞争
- 了解新技术
- 不必局限于你的工作,任何能提升你解决问题能力的事情都可以
- 适应能力真的很重要
- 思维敏捷、能迅速调整方向的人才
要求:
- 职业学校的培训、相关的在职工作经验或副学士学位
- 此前与工作相关的技能、知识或经验,或一至两年的培训,该培训既包括在职实践,也包括在经验丰富的员工指导下的非正式培训,即公认的学徒培训计划
- 具备出色的沟通和组织能力,能够协调、监督、管理或培训他人以实现目标,例如:水力发电生产经理、旅游向导、电工、农业技术人员、理发师、保姆和医疗助理
推荐资源
B计划
- 信息安全分析师
- 科技公司创始人
- 专利代理人
- 专利代理人
新闻动态
精选职位
在线课程与工具
薪资与就业前景
选择一个子区域:
预期年薪
新员工的起薪约为11.5万美元。年薪中位数为15.6万美元。经验丰富的员工年薪可达17万美元左右。
来源:加利福尼亚州就业发展部
预期年薪
新员工的起薪约为17.2万美元。年薪中位数为20.5万美元。经验丰富的员工年薪可达22万美元左右。
来源:加利福尼亚州就业发展部
预期年薪
新员工的起薪约为10.8万美元。年薪中位数为14.6万美元。经验丰富的员工年薪可达18万美元左右。
来源:加利福尼亚州就业发展部
预期年薪
新员工的起薪约为11.2万美元。年薪中位数为14.9万美元。经验丰富的员工年薪可达17.3万美元左右。
来源:加利福尼亚州就业发展部
预期年薪
新入职员工的起薪约为10.3万美元。年薪中位数为13.8万美元。经验丰富的员工年薪可达17.3万美元左右。
来源:加利福尼亚州就业发展部