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