在2017年4月颁布了新的H-1B签证法规之后,是否应该在硅谷找到更容易的软件工程工作?

我已经在西雅图地区的Microsoft和Google工作了11年,从来没有去过没有空缺人员的团队。 湾区公司类似。 我们想雇用符合我们律师资格的所有人; 成本不是一个重要的考虑因素。 此外,H1-B签证已经非常短缺。 可能会有一些边际影响,但影响不大。 而且,这些工作可以轻松地远程完成。 我目前的团队目前有5个地点,在美国境外有2个地点,我们非常典型。 大多数公司无论如何都需要24×7全天候运营,因此他们已经在美国以外的地区拥有工厂,并且很容易在这里而不是在这里找到工作。 实际上,由于很难将有才华的外国人带入该国,而且因为有些人不想一开始就来到这里,所以大多数大型科技公司至少都拥有大型的欧盟枢纽,也常常是亚洲枢纽。 如果我们不能把人们带到工作上,我们就会把工作带给人们。 请注意,这通常不是“取消美国的员工人数并在欧洲打开员工人数”,而是“在两个地方都开设员工人数并雇用最佳人选”。 几家公司,尽管不是我的雇主,甚至在加拿大温哥华附近设有工厂,移民在这里很容易找到住所,将国际雇员带到同一时区,并且在西雅图开车距离之内。 在公司工作了一年后,他们有资格以L1签证转到美国,这给了他们足够的时间等待H1-B,通常他们会争取绿卡,然后获得公民身份。 但是,最近,鉴于特朗普政府对各种移民的态度,人们宁愿留在海外而不是搬到这里。

软件工程师实际上在做什么?

我认为工程学是解决现实世界问题的数学和科学应用。 软件工程使用一种称为算法思维的数学形式,通过设计,维护或改进基于代码的信息系统来解决复杂的问题。 编码只是表达这些算法的方式,以便软件按照您的指示进行操作。 对于土木工程师来说,混凝土和钢材对软件工程师而言可能具有更大的灵活性。 它是如何解决问题的创造性表达。 它具有称为语法的规则,这些规则约束您可以写的内容以及所写内容的内容。 与其他工程学科一样,软件工程师可能对公众有义务,而不仅仅是雇用您来编写代码的企业。 人们的身份,财务,通勤和医疗保健可能取决于您使用的算法以及表达方式。 有多种语法(或语言)可供学习,以适应不同的样式,操作系统和功能。 网络工作可以是其他软件工程师工作(例如CSS或HTML)的配置,也可以是您自己的工作(Java,C ++,C#等)的配置。 甚至那些语言都基于其他语言的平台,这些平台可以更直接地与计算机/服务器硬件交互。 诸如PHP或Javascript之类的某些语言通常非常适合于业余爱好,就像对专业工作一样。 XML几乎不能描述为一种语言,而只能描述为与其他系统共享信息的协议。 在日常生活中,我将使用C#,T-SQL,Javascript,HTML,XML,数据处理工具,BI和报告工具以及数据分析工具。 但是我还将使用Word,Excel,Sharepoint等工具,因为我的大部分工作是关于交流的,而几乎是关于编码的。 太多现有的信息基础设施写得不好,老化或不完整。 而且,即使在今天,大量的信息基础架构仍基于纸质,口口相传或数字化纸质,而这超出了任何自动化逻辑的范围。…

低于平均水平的软件开发人员如何在行业中生存?

首先,在大多数公司中,要维护许多软件,并且要进行许多不同的软件项目。 经理根据他们的技能分配开发人员,因此,更好的开发人员通常会获得更复杂的工作。 或者,作为奖励,您有机会研究最新最伟大的技术。 技能不高的人会被分配去从事力所能及的工作,或者经理们希望如此。 至少,他们将被引导到低调和低风险的工作中,也许会在可以密切监督或审查其工作的人看来。 在这些极端之间将存在所谓的“平均”程序员。 而且,如果将其视为贝尔曲线,您将意识到,大部分工作实际上是由中间四分位数的人完成的。 但这并不意味着大多数代码是由该中间组编写的。 在大型公司中,有很多专门的角色。 您有UI专家,构建专家,质量分析师,测试人员,产品经理,软件架构师,本地化专家等。构建大型软件就像拍电影一样,需要许多具有专门技能的人共同协作才能取得惊人的成就电影。 演员可能会获得大多数公众的认可,但他们并没有完成大部分工作。 他们所做的只是您和我最能看到的部分。没有其他像主要演员一样没有付大钱的人的工作,电影将永远无法制作。 然后就是这个了–每个商店总是必须有普通的开发人员。 实际上,如果您剩下的前10%才是平均水平的开发人员。 平均值只会下降。 同样,如果每个人都离开了您的顶级开发人员,那么他或她现在将成为普通开发人员! 有时,普通开发人员只需坚持就可以生存。

我应该接受可以帮助我成长为软件工程师的工作,还是接受不喜欢其实践但拥有喜欢的团队的工作?

实际上,您必须在这方面决定自己的道路。 请原谅我的假设,但是,更多的正规实践会导致正规学科中的官僚主义程度更高(因此效率低下)。 另一方面,更正式的纪律可以更精确(更持久)地寻找和解决解决方案(或定义异常值)。 相对而言,较少的正规纪律可以更快地解决问题,但是离群值更多,对(官僚)细节的关注较少,从而导致有时需要较长的时间,因此在解决方案实施之前(或拒绝实施解决方案)无法解决或未完全定义问题因为它超出了时间和/或金钱范围的效率)。 这真的是一个折腾,取决于您对自己最有利的感觉。 六年后,您应该对自己的想法或最适合自己的感觉有好感。 一个建议:也许看看您是否可以采取“休假”方式尝试其他或新的东西? (请参阅另一端,看看您个人是否对此表示同意。) 或者,冒险(赌博)并采取行动自己进行测试? (说:如果您不能赌博,或者对于您现在的雇主来说,“休假”一年的想法不起作用,等等。) 在当今不稳定的工作环境中(如果不是特别对于软件开发人员而言),十年的平均任职期会给人留下深刻的印象,不应轻率地对待。 (您的雇主最有可能给予您某种形式的休假,以从事某些初创公司或快速开发的公司。稳定的公司倾向于比那些在没有经过任何警告的情况下偏离公司的不稳定初创公司更倾向于[经过仔细考虑后]偏离的员工。 ) 这个(我的回答)并没有提供快速简便的答案,而是一些见识,您只能从当前的状况和/或观点出发,才能最好地体会到。

软件工程在很长一段时间内是否是一个好的职业?

软件工程师本身是一个非常广泛的类别,包含了不同的事物和整个技术。 因此,这不是您获得的一项简单技能,它可以解决您的职业生涯如何继续前进。 软件工程师的职业是一个非常稳定的职业,可以满足您的长期需求。 在5到10年之间,您将获得7位数的薪水(如果您对某些最新技术有专长,则要多得多)。 在业务领域中的人只有获得更大的职位,才能获得这种薪水。 您有一个独特的技能组,可以提供更高的薪水。 还有大量的增长机会。 您成长为高级开发人员,然后是架构师,直至工程副总裁和CTO。 您正在通过商人的阶梯一路加倍。 最好的部分是,压力和割喉也更少。 您不必担心营销,销售方面的问题(随着您的成长,您会在业务方面获得更多收益,但情况会有所不同)。 您的工作是打造出色的产品,并确保企业最有效地利用其资源。 软件工程师在不同的领域工作,例如DevOps,测试,数据库管理,技术架构师,Web开发人员,应用程序程序员,数据科学家,数据分析师等。现在掌握任何技能都不会为您带来任何领先的进展上文提到的。 将保持不变的一件事是算法和编码,这更像是一种分析思维,可以在每种不同的技术或领域中加以运用,以加以利用。 在工作和职业机会以及薪资增长方面需求巨大的少数领域之一是: 移动应用程序开发人员 :在当今的数字时代,智能手机已取代了许多东西,成为当时的基本需求。 因此,对开发这些应用程序/应用程序的应用程序开发人员的需求不断上升,这使得这些手机如此出色。…