软件工程师(或软件开发人员)开发的程序可以把计算机变成有用的机器,除其他功能外,计算机还可以发送电子邮件、搜索万维网、进行视频通话和运行工业机器人。通过制造软件来告诉计算机该做什么,软件工程师在正在进行的数字革命中扮演着核心角色,这场革命正在改变人类文明,并导致了信息时代的开始。软件工程师受雇于各行各业的组织,但在本文中,我们关注的是那些受雇于大型科技公司,如谷歌、Facebook和苹果。
软件工程师运行创建和开发软件的整个过程。这包括编写计算机程序,这些程序是用源代码编写的——一种为计算机设计的特殊语言,告诉它们确切地做什么和怎么做。这需要非常注意细节,并仔细组织许多相互关联的部分。
除了编写代码,软件工程师还做其他事情:他们产生软件想法,他们与涉众一起工作以理解需求,他们测试和维护最终产品,他们协调整个软件开发过程。这些任务就是软件工程师和计算机程序员的区别——计算机程序员往往只写代码
有很多关于软件工程师的描述。下面是我们遇到的两个最有用的方法:
将软件工程师划分为以下几种常见的方法:
这是一个软件开发人员职业阶段的图表,粗略估计了平均工资范围。3 .请记住,这些都是平均值,你有可能赚得更多,特别是在像谷歌这样的大型科技公司。
您通常从初级开发人员开始,编写简单的脚本,并对软件开发生命周期有初步的了解。你通常要在这个职位上呆三年左右。
如果你成功了,你可以成为高级开发人员。作为高级开发人员,您编写复杂的应用程序,并对整个应用程序生命周期有深刻的理解。你可以在职业生涯的大部分时间里一直担任这个职位,尽管随着年龄的增长,与年轻人才竞争变得越来越困难。在这一点上,你有能力离开,成为一家初创公司的技术创始人或CTO。
如果您是一名高级开发人员,想要在避免管理的同时进步,那么您可以成为一名架构师,这是技术职业阶梯上的最高层次。架构师设计由高级和初级开发人员组成的团队实现的复杂系统。你可以在整个职业生涯中一直担任这个角色——软件工程的不同寻常之处在于,你可以拥有一个高级职位,而不必做管理工作,许多人认为这是软件工程师职业轨迹的一个独特好处。
如果你是一名高级开发人员,并且你不介意做一些管理工作,那么你就可以成为一名首席开发人员。领导开发人员协调初级和高级开发人员的工作,但通常不会雇用或解雇开发人员。
在架构师和主要开发人员之后,还有中级经理角色,这提供了进入高级管理的潜力。我们在本文中不讨论这些后期阶段,但你可以在这里阅读更多。
你绝对应该考虑软件工程如果你尝试了编程和你喜欢它,如果你想要打开的可能性在技术工作角色在未来,如果你不喜欢长时间工作中常见的法律、金融或咨询,如果你是通过收入贡献给吸引,如果你想获得自由和远程工作的选择。
软件工程师做出改变的主要方式是制作对社会有用的软件,赚取报酬,或者做灵活的工作,让你可以一边从事高影响力的项目。
软件已经对社会产生了变革性的影响,而且很可能会继续这样做,因此它是一个需要参与的重要领域。作为一名软件工程师,你的直接影响主要来自帮助推进你所工作的组织的目标。因此,你工作的直接影响主要取决于你在哪里工作,以及你雇主的目标在多大程度上有助于产生社会价值。
有些软件公司确实产生了大量的社会价值,比如谷歌和维基百科,但要估计它们产生的社会价值的数量仍然很难(参见我们对谷歌的研究)。即使不考虑那些目标与创造社会价值直接相关的组织,提高许多组织的效率可能仍然是实质上的净正,这是由于不断增加的普遍人类赋权的“流动效应”。
软件工程工作在许多方面都提供了出色的灵活性:
这种灵活性具有巨大的价值。就直接影响而言,是指:
作为一名软件工程师,你学到的技能之所以有用,有以下几个原因:
总的来说,你获得了很多你所缺乏的技能,这给了你很大的议价能力和各种不同风险回报和生活方式的选择。
就声望和地位而言,精英毕业生在科技行业工作正变得越来越普遍(例如,更多的哈佛mba毕业生正在进入科技行业),如今科技行业的工作声望与金融和咨询行业相当。
这也意味着,你在科技公司工作时接触到的人脉越来越多地由富有和有影响力的人组成。此外,科技行业高度集中了有进取心、想做好事的人——著名的例子包括比尔·盖茨(Bill Gates)、达斯汀·莫斯科维茨(Dustin Moskovitz)和埃隆·马斯克(Elon Musk)。如果你是旧金山湾区的一名软件工程师,那么你也在一个有效的利他主义社区的主要中心。
通过在线编程课程、训练营和实习来测试你是否适合软件工程,这是一个相对快速和廉价的方法,因此这是一个探索价值的好选择。接下来我们将介绍如何测试它。
许多有艺术背景的人认为他们不能成为软件工程师,但这是不正确的。虽然很多软件工程师学的是计算机科学,但这并不是必需的,而且很多入门级的工作并不要求计算机相关学位,甚至也不要求有定量学位。软件工程比许多人认为的更容易进入并且做得更好的另一个原因是它不需要高等数学——大多数软件工程师从来不需要使用微积分。我们已经看到很多拥有人文和社会科学学位的人通过自学或参加训练营获得了比之前工作高50-100%的初级软件工程师工作。
从与软件工程师交谈和在线调查建议来看,成功工程师最常提到的特点是非常关注细节,当事情不能立即奏效时不会沮丧,愿意尝试许多不同的解决方案并产生假设,好奇和好奇。20学术文献中提出的一些成功的预测因素有:
然而,总的来说,我们对编程成功的一般预测因素知之甚少,所以确定自己是否有机会成功的最好方法就是尝试一下。
要想知道自己是否擅长一份工作,是否喜欢这份工作,最准确的方法就是去尝试。我们建议您采取以下步骤来测试它是否适合您。
编程是软件工程的一个重要组成部分,所以进行尝试是很重要的。在不到20分钟的时间里,在没有任何编程背景的情况下,你可以根据这篇文章的说明,编写一个每两个小时提醒你休息一下的程序。然后,您可以在Udacity上学习计算机科学入门课程,该课程教您计算机科学基础知识和Python编程语言。这会让你了解自己有多喜欢编程,以及其中涉及的各种技能。但是请记住,许多人并不喜欢一开始就编程,尤其是在他们可以编写自己认为有用的程序之前。您可能还想查看这个程序员能力矩阵,以了解不同级别的编程所涉及的内容。
接下来和其他人一起做一个项目。这让你找出是什么样子写代码在一个团队中使用大型代码库,你可以要求他人反馈的编码能力和你接触的一些软件工程的非编程元素,如生成的想法来满足用户需求。特别是,为开源项目做贡献可以让您使用非常大的现有代码库。
为了了解更多关于你是否适合软件工程的信息,我们建议与你网络中的软件工程师交谈,最好是与你相似的人,并询问他们:
一旦你完成了以上步骤,想要进一步测试你的职业生涯,你可以尝试实习或训练营。
与我们交谈过的许多软件工程师都说,这项工作很吸引人,经常提到与编程有关的谜题和问题,并且能够进入一种流状态。消极的一面是,与我们交谈过的一些人认为他们的工作没有意义,许多人说与大型现有代码库一起工作和修复漏洞是工作中不太令人愉快的部分。请阅读我们对软件工程师的五次访谈,了解更多细节。
工作与生活的平衡通常比高薪或同等薪酬的工作更好。一项调查显示,软件工程师每天工作8.6个小时,而高薪职位和初创公司的工作时间可能要长21个小时。如上所述,一些科技公司每周工作4天、32小时(例如Treehouse一年到头都是这样,Basecamp从5月到10月都是这样)。
就总体工作条件而言,科技公司是先进的,通常有灵活的工作时间、便利的津贴、远程工作和结果驱动的文化。这个行业最好的公司,比如谷歌,都是循证管理的领导者,被广泛认为是世界上最好的工作场所之一
远程工作开放了地点的灵活性,这对提高你的生活质量非常好:你可以搬到你喜欢的气候和城市,你可以通过搬到生活成本较低的地方来增加你的可支配收入,你可以离家人和朋友近。你也可以在需要的时候以自由职业者或承包商的身份找工作。
一些被普遍认为可以替代软件工程的方案是:
首先,你需要学习编程。有三种方法可以做到这一点:
一旦你知道如何编程,你就会想要你的第一份工作。这里有一个关于如何做到这一点的深入指南。
大公司有毕业生计划。对于小一点的公司,你必须通过你的人际网络直接接触。
一旦你去面试,你可能会被要求在特定的时间内在家完成技术挑战。有些公司会问你有关算法的问题。它可能有助于研究算法,并研究最流行的面试指南,破解编码面试。一旦你得到了一份工作,通常最好是协商一个更好的交易。
如果你只读一篇文章,那就读一些我希望在我学习编程时有人告诉过我的内容。
其他有用的链接:
全网同号,本文由【超级工程师】编译。
本文:http://jiagoushi.pro/node/1459