聚光灯
类似标题
软件工程师、应用程序开发人员、软件架构师、计算机程序员、游戏程序员、游戏软件开发人员
工作描述
软件开发人员是计算机程序背后的创造性头脑。有些软件开发人员开发的应用程序可以让人们在计算机或其他设备上完成特定任务。其他人则开发运行设备或控制网络的底层系统。
职业生涯的回报
- 有能力在自己选择的公司发展
- 有能力负责项目并影响他人
- 每天扩展技术知识
- 直接影响公司发展的能力
$102,280
内幕消息
工作职责
- 分析用户需求,然后设计、测试和开发满足这些需求的软件
- 为客户的现有程序和系统提出软件升级建议
- 设计应用程序或系统的各个部分,并规划各部分如何协同工作
- 创建各种模型和图表(如流程图),向程序员展示应用程序所需的软件代码
- 通过软件维护和测试,确保程序继续正常运行
- 记录应用程序或系统的方方面面,为今后的维护和升级提供参考
- 与其他计算机专家合作,创建最佳软件
不同类型的开发商
- 后端开发人员--负责网站的整体技术建设
- 前端开发员--负责网站的外观(布局和图形)
- 网站管理员 - 维护网站并保持更新
所需技能
- 浓度
- 创造性
- 顾客服务技能
- 注重细节
- 充分了解 HTML、多媒体出版工具和编程语言
- 灵活性
- 学习速度快
- 快速适应变化的能力
期望与牺牲
- 期望:能够快速学习并交付高质量、可维护的代码
- 牺牲:在自己的职责之外,还必须填补空白,帮助其他团队成员,尤其是在产品公司的要求不明确的情况下。
不同类型的组织
- 科技公司(不管是大公司还是创业公司):如 Google、Facebook
- 处理可按程序完成的业务的组织(越来越多的组织符合这一描述)
- 创建自己的初创公司
- 可为多家公司进行自由开发
- 开发商店
当前趋势
- 人工智能让软件/应用程序/系统日趋智能化
- 整合机器学习,帮助机器像人类一样思考
- 此类软件的例子谷歌助手、Siri、Alexa
- 大数据
- 开放源码软件开发:开放源代码的原始源代码可随时获取,并可重新分配和修改,这使其成为各个领域创新的关键。发布开放源码不仅能培育个体企业,还能发展、创造,有时甚至会毁掉整个行业。使用开放源码、将自己的项目开放源码并成为开放源码社区的积极一员,是跟上技术发展和成为更大社区一员的必要途径。[www.oreilly.com]
- 基础设施中断和重新组装:这些新方案让软件工程师能够专注于业务增长,而不必担心 "内脏 "是否正常运转:XaaS、无服务器架构、分布式系统、容器和微服务。利用第三方服务(如 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 Job Board、Stack Overflow、AngelList 和 DataJobs 等 IT 相关网站上建立个人档案。也别忘了使用 LinkedIn!
- 申请初级职位,直到你有足够的经验胜任高级职位
- 注意招聘广告中使用的关键词。在简历中加入这些关键词
- 查看软件工程师简历模板,了解措辞方面的想法
- 在提供潜在推荐人的联系方式之前,事先询问他们
- 阅读软件工程师面试问题,为面试做准备
- 面试时要做自己,让自己的个性闪光!技术能力固然重要,但文化契合度也同样重要。您要确保您和您应聘的公司相互匹配
如何保持竞争力并留在游戏中
- 了解新技术
- 不必局限于你的工作,可以是任何能提高你解决问题技能的东西
- 适应能力非常重要
- 头脑聪明,能迅速作出反应
要求:
- 职业学校培训、相关在职经验或副学士学位
- 以前的工作相关技能、知识或经验 ne 或两年的培训,包括在职经验和有经验工人的非正式培训,即公认的学徒计划
- 具有较强的沟通和组织能力,能够协调、监督、管理或培训他人完成目标,如水电生产经理、旅游指南、电工、农业技术员、理发师、保姆和医疗助理等
推荐资源
B计划
- 信息安全分析员
- 科技公司创始人
- 专利代理人
- 专利律师