聚光灯
类似标题
软件工程师、应用程序开发人员、软件架构师、计算机程序员、游戏程序员、游戏软件开发人员
工作描述
软件开发人员是计算机程序背后的创意者。有些人开发的应用程序允许人们在计算机或其他设备上完成特定任务。其他人则开发运行设备或控制网络的基础系统。
职业生涯的回报
- 有能力在所选择的公司内发展
- 有能力负责项目并影响他人
- 每天都在扩展技术知识
- 有能力直接影响公司的发展
$102,280
内幕消息
工作职责
- 分析用户的需求,然后设计、测试和开发软件以满足这些需求
- 为客户的现有程序和系统推荐软件升级
- 设计一个应用程序或系统的每一个部分,并计划这些部分将如何一起工作
- 创建各种模型和图表(如流程图),向程序员展示一个应用程序所需的软件代码
- 通过软件维护和测试,确保程序继续正常运行
- 记录一个应用程序或系统的每一个方面,作为未来维护和升级的参考。
- 与其他计算机专家合作,创建最佳软件
不同类型的开发商
- 后端开发人员 - 负责网站的整体技术建设
- 前端开发人员 - 负责网站的外观(布局和图形)。
- 网站管理员 - 维护网站并保持更新
所需技能
- 浓度
- 创造性
- 顾客服务技能
- 注重细节
- 对HTML、多媒体出版工具和编程语言的透彻理解
- 灵活性
- 快速学习者
- 迅速适应变化的能力
期望与牺牲
- 期望:有能力快速学习并提供高质量和可维护的代码
- 牺牲:在自己的职责之外,还必须填补漏洞,帮助其他团队成员,特别是在处理产品公司不明确的要求时。
不同类型的组织
- 科技公司(不管是大公司还是创业公司):即谷歌、Facebook
- 处理可以通过程序完成的业务的组织(越来越多的组织符合这一描述)。
- 可选择创建自己的创业公司
- 能够为多家公司进行自由开发
- 开发商店
当前趋势
- 人工智能,使软件/应用/系统日趋智能化
- 集成机器学习,帮助机器像人一样思考
- 这种软件的例子。谷歌助理、Siri、Alexa
- 大数据
- 开源软件的开发。开放源码的原始源代码可以随时提供,并可以重新分发和修改,这使它成为各种领域创新的关键。发布开放源码不仅培育了个别企业,而且还发展、创造,有时甚至废掉了整个行业。使用开放源码,使你的项目开放源码,并成为开放源码社区的一个积极部分,是跟上技术和成为更大社区的一部分的必要途径。[www.oreilly.com]
- 基础设施的中断和重新组装。这些新方案使软件工程师能够专注于业务的增长,而不是担心 "内部器官 "是否正常运作。XaaS、无服务器架构、分布式系统、容器和微服务。利用第三方服务,如OpenStack的计算能力,构建反应式微服务,将架构的各个部分进行分割和集中,以创造一个更具弹性和可扩展性的环境,并利用Docker和Kubernetes等云原生工具连续部署软件。[www.oreilly.com]
- 机器学习。OpenAI(Elon Musk)、Watson(IBM)、TensorFlow(Google)和CNTK(Microsoft)创造了新的令人兴奋的产品(Alexa)和范式(语音驱动的应用程序),以及基础设施自动化,导致机器学习再次正式升温,而且这次是永久性的。[www.oreilly.com]
- 客户至上的设计。"把客户放在第一位,每次都能获得成功"[www.oreilly.com]
从事这一职业的人在年轻时喜欢做什么样的事情...
- 喜欢玩游戏/解决问题
- 对科学感兴趣
- 对编程的热情
- 渴望发现新的想法并获得尽可能多的知识
- 经常去的图书馆
- 喜欢和朋友们聊几个小时的想法、发现和书。
- 对发展技能、集思广益、阅读和环境意识感兴趣
"我相当喜欢游戏,我确信这在最后也是一个因素,但实际上我在年轻时更喜欢科学。我上大学时学的是化学工程,后来才转过来。编程的火花和激情可能来自于我的高中编程课程,在那里我非常喜欢所提出的问题,以及以逻辑的方式将它们分解,例如创建一个模拟鱼缸的复杂性。Leon Ho,OpenX的软件工程师
需要的教育和培训
- 软件工程师可以从计算机科学或相关研究领域的学士学位开始。
- 高级职位可能需要硕士文凭
- 软件工程师实习对在获得实践经验的同时学习非常有用
- 有许多与软件工程师相关的证书,包括。
- 跳板软件工程训练营
- 安全软件生命周期认证专家
- 专业软件开发人员认证
- 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!
- 申请初级职位,直到你获得足够的经验,有资格担任高级职位。
- 注意招聘广告中使用的关键词。将这些纳入你的简历
- 查看软件工程师的简历模板,了解措辞方面的想法
- 在提供潜在推荐人的联系信息之前,提前询问他们的情况
- 通过阅读软件工程师面试问题为面试做准备
- 在面试中做你自己,让你的个性得到彰显!技术能力很重要,但文化适应也很重要。你要确保你和你所申请的公司是相互匹配的。
如何保持竞争力并留在游戏中
- 阅读新技术
- 不一定要局限于你的工作,可以是任何能提高你解决问题的能力的事情。
- 适应能力真的很重要
- 聪明的头脑,能够迅速转折
要求。
- 职业学校的培训,相关的在职工作经验,或副学士学位
- 以前与工作有关的技能、知识或经验,或两年的培训,包括在职经验和有经验的工人的非正式培训,即一个公认的学徒计划。
- 具有较强的沟通和组织能力,能够协调、监督、管理或培训他人完成目标,如水电生产经理、旅游向导、电工、农业技术人员、理发师、保姆和医疗助理等。
推荐资源
B计划
- 信息安全分析员
- 科技公司的创始人
- 专利代理人
- 专利律师