如何独自成为一名程序员

在2014年夏天,当我应该完成影视制作专业的学士论文时,我开始学习编程。 多年来,我曾尝试过多次学习它,但是我从未觉得自己已经完全掌握了这些概念。 这次我有。 在仅仅了解了三个月的编程知识之后,我就成为了开发人员的第一份工作。 四年后,我在IT行业工作很轻松,做了一些我最喜欢的有趣的事情,并为此赚了很多钱。 我说这并不是为了吹牛,而是为了表明开始编程生涯可以相当容易,绝对比大多数人想象的要容易。 如果您发现自己有兴趣编写生活代码,请参考以下几条建议。


出于某些原因,编程是一个伟大的职业。 首先,如果您喜欢基本的数学思维,那会很有趣。 您不断面临新的艰巨挑战,这些挑战一旦解决就给人很大的成就感。 遇到问题并尝试用自己的智慧和创造力来解决问题,这是一种极大的乐趣。 斗争可能要花费数小时,数天甚至数周,而挫折有时似乎难以忍受,永远无法解决。 但是,您知道有一个答案,不可能没有答案。 当你迷失,放弃,绝望,被黑暗和混乱包围时,突然,远处有一个奇异的光点闪烁,当你抓住它时,你就被启发了。 您试图解决的问题出现在您面前,最终粉碎并被击败。 当您几次体验到这一点时,您将学到几乎无限的人类思维能力,没有挑战就在您身边,没有山峰太高,没有努力太宏伟。

人们在建造东西时也有一种极大的满足感。 就这一点而言,编程可能不会给人像建造建筑物时那样的具体感觉,但是,用象征性的手做一件事情还是很高兴的。 它甚至不必一定具有实际用途,但如果是,那么满足感就更大。

学习编程还可以使您创作的作品与个人情况成比例。 我的意思是说,如果一个主意足够好,那么一个人就有可能创建一个完整的游戏或一个应用程序,然后可以被数以百万计的人使用。 这是一项令人印象深刻的壮举,需要数月甚至数年甚至数年的努力,但它是可能的。 编写如此大型和复杂的应用程序的能力意味着您可以自由遵循自己的想法,并以您想像的任何方式创建想要存在的事物。

最后但并非最不重要的是强有力的经济激励措施。 程序员的工作量很大,而且没有足够的人去做。 凭着一些经验,找到开发人员的工作非常容易。 这种失衡还会导致更高的薪水,更多的选择余地,更好的工作经验,更高的工作安全性以及相对于您的雇主而言总体上更好的谈判地位。 拥有技术经验,您也可以随时找到自己的创业公司。 如果您可以编写代码并拥有一台可以连接互联网的计算机,那么您将无法实现最疯狂的应用程序创意。


不要去任何学校学习编程。 不要付任何钱给任何人教你如何编码。 您完全可以从互联网账单的价格上获得世界一流的教育。 证明去上学或学习某种课程成为开发人员不仅是不必要的,而且我认为这是浪费时间和金钱。 我学到了要在我破烂的公寓里找到第一本工作的全部知识,这是一台八岁的MacBook,桌子上配有餐桌。 您没有理由也无法免费自学。 如果您不满意,并认为也许上某种学校是最适合您的选择,请问问自己:您能去哈佛吗? 您能负担得起哈佛或类似水平的学校吗? 您的成绩足够好吗? 如果是,那么一定要去那里。 我相信它将以我只能想像的方式改善您的生活。 但从统计学上来说-不。 你不能 那么,为什么要在世界上最好的另一所学校学习编程,甚至有能力为此付费,而哈佛却有实际的课程可以免费教你如何编码,所以可以在线免费获得。 , 马上。 用什么方式可能使任何意义看起来相似? 我正在谈论的课程称为CS50,这是我学习编程的方式。 我会躺在沙发上看讲座,然后去做课程中包含的练习。 我没想到要开始作为开发者的职业。 我只是对编程感到好奇,并想进一步了解它。 我花了我几个星期的时间来完成这门课程。 在这段时间里,我几乎没有见过我的朋友,或者除了学习之外什么也没做。 我被它深深吸引。 到最后,我能够创建自己的Web应用程序并将其投入在线,这个过程花了我几个星期的时间。 那足以让我找到第一份工作。 从我见过的所有入门课程到编程,CS50都是最好的。 它对我的生活产生了巨大的影响,我全心全意地将它推荐给任何对编程感兴趣的人。

我建议在线教学的原因不仅在于我认为它更便宜,更快捷,而且如果您知道自己学习的方法,那么您将成为一名更好的程序员。 学习是工作的重要部分。 技术不断变化,每分钟都会创建新的工具。 如果您希望在这个行业发展事业,那么能够适应这种高度流动的环境至关重要。 是的,有时可能会很累。 您正在那里,在一个阳光明媚的夏日早晨工作,最近学习了一些新的编程框架,因此感到非常自豪,这是当之无愧的。 但是当您上班时,您的一位同事提到,一些新的热门框架是由每个人都讨厌的大型IT公司之一开发出来的,但是没有人不能没有。 很多人对此感到非常兴奋,当您签出它时,就会发现它确实确实使事情变得更轻松,并且您应该真正了解它。 这就是编程-几乎无穷的学习内容。 但是,这确实意味着您将永远不会用新的方式挑战自己并提高自己的技能。

CS50将教您可以在大多数现代编程语言中使用的常规编程概念。 为此,本课程首先教您C语言,这是一种相当古老的语言,但是今天大多数语言都是从中衍生而来的。 学习它会为您进一步的学习打下坚实的基础。 然后CS50继续教您其他几种语言,以便您能够从头到尾创建一个Web应用程序。 通过这种方法,您将具有网络开发人员的入门技能,并且拥有足够的跨语言知识,可以放心地开始学习任何其他语言(如果不是您想使用Web应用程序并且您更喜欢在游戏或移动设备上工作的话)应用。 话虽如此,您将从CS50中学习到JavaScript的广泛用途,您可以用它创建几乎任何东西,包括网页,iOS和Android应用程序,以及基于虚幻和Unity Engine的游戏。 近年来,JavaScript已成为IT世界的一种通用语言。 对于特定的工作,它不一定总是最好的工具,但是很少有它不能完成的工作。

在课程中,您将从事一些项目。 最后一个是创建自己的应用程序。 您确实应该花一些时间使它尽可能的好,并在此过程中尽可能多地学习。 我建议将其视为获得一些实际经验的机会,您以后可以利用这些经验来获得第一份工作。 完成我的应用程序后,我可以在线使用它并将其包含在我的简历中,以便招聘人员可以拿出我的工作样本来评判我。 坦白说,我不确定是否会决定聘用我,但我认为这是脱颖而出的好方法,可以证明即使您没有文凭,但您仍然是有能力的人。


有了这门课程,这是我的最后一个项目,我发出了简历。 我只记得将其发送到一两个地方。 我从一家小公司得到了一个答复,该公司希望我完成编码挑战以测试我的技能。 我花了整个周末的大部分时间才以满意的方式完成任务。 这些挑战是测试人们申请IT工作的一种非常普遍的方法。 他们需要更多的时间才能完成,然后再进行笔试,但是压力也较小,可以使人们更多地了解自己的实际技能。 技术面试也很常见,涉及回答与项目中使用的技术相关的一系列问题。 招聘通常可以分阶段进行,如果您的代码足够好,就可以进行面试。 但是,对于我的第一份工作来说,完成编码挑战只是证明我的技能所需要的。

我供职的公司起初只有几个人,但很快就成长为几个人。 我为两个不同的应用程序编写了代码,其中一个应用程序的范围相当宏大。 我绝对建议您在职业生涯初期就为一家小型公司工作。 它的薪水可能不及大公司,也不是享有盛誉的,但是在这样一个地方可以得到的经验之多是无与伦比的。 与更少的人一起工作意味着更大的责任,而与著名的报价相反,责任越大,权力就越大。 您经常会感到自己有些不足,由于环境的原因而被迫不断发展自己的技能,并成长为一名能够出色地完成工作的程序员。 您没有大公司提供的多层安全保护,其他人可以在其中帮助您解决错误。 您还必须掌握广泛的技能,跨多个级别开发应用程序,创建整体架构以及单个组件。 这确实可以帮助加速您的能力的发展,并且是充实您的编程知识的一种好方法,如果只付这点钱而不是花钱,您就会得到报酬,这比正规教育要好得多。

我第一份工作花了一年半的时间。 当我刚开始的时候,我没有得到多少薪水,主要是因为我不愿意要求高薪。 我不知道自己的技能值多少钱,所以当被问到我想做什么时,我低调了。 但是老板每隔几个月就会给我加薪,这使我对公司很有价值。 但是,当我换工作时,工资才真正增加了。 在派出一些简历来测试水域之后,招聘公司的某人与我联系,他们正在寻找开发人员。 经过技术面试后,我找到了一份新工作。 过去,我认为招聘人员是不必要的中间人,但是当招聘我的女士帮助我获得更好的报价时,我改变了主意,然后我不敢要求。 那使我意识到招聘人员可以成为帮助您获得最佳报价的伟大盟友。 他们知道目前的市场状况,最需要的技能,当前正在招聘的公司以及相反的情况。 他们的知识可能非常有价值,尤其是如果您有兴趣搬到另一个城市甚至一个国家。

换工作通常是您可以利用到目前为止所学到的一切并获得有意义的薪水增长的时候。 在撰写本文时,我两次更换了雇主,每次,我或多或少地将我赚到的钱翻了一番。 在同一家公司内谈判加薪时,它总是与您当前的收入有关,因此差异不大。 这在大型公司中尤为明显,在大型公司中,您可以获得多少加薪有设定的限制。 这可能对他们不利。 我已经看到公司失去了非常优秀的人才,这仅仅是因为他们不会向他们支付他们应得的价值,即使他们可以向没有给定项目经验的新员工支付那么多钱,因此其价值也就不那么高。

但这仅对开发人员有利。 与一家公司长期待在一起的理由减少了,这使得探索那里存在的东西,与不同的人一起从事不同的项目变得更加容易。 了解您喜欢做什么和不喜欢做什么,在工作中关心什么,对您来说重要的事情。 这样,您可以就下一步的职业做出更明智的决定。 能够做出这样的选择,并有机会如此自由地选择您的雇主,这是令人难以置信的礼物。 许多专业没有享受到这种好处,因此请务必欣赏并充分利用它。


我们生活在编程的黄金时代,我希望它至少可以持续接下来的几十年。 但是技术在不断变化,因此,要想持续职业发展,就必须跟上它的发展。 虽然对开发人员的整体需求只会在不久的将来增加,但是一种特定的语言或技术可能不再流行,而倾向于一种新的语言或技术。 如果您想拥有比以往更多的机会,则必须密切关注新技术并学习它们。 人们也在努力使创建应用程序变得更加容易,并利用AI自动化至少部分流程。 这些无疑将影响开发人员的需求。 但是我认为它们不会在不久的将来对程序员构成真正的危险。 我怀疑,当AI具备与人类同等水平的编写代码的能力时,我们要么将面临更大的问题,要么总的来说问题将很少。


但是今天,如果您喜欢解决棘手的问题,并且正在寻找一个总是有成长和创造乐趣的空间的职业,那么我不建议您编写足够的程序。 它不仅可以从经济上获得回报,而且还可以使您有勇气和勇气面对新挑战,这将是有益的。 刚开始学习编程似乎很艰巨,但是只要掌握了正确的材料,您很快就会发现各个部分组合在一起并开始变得有意义。 我认为回想一下,您可能会惊讶于它实际上是如此的简单。

就个人而言,我不得不说编程使我在不同维度上的生活成倍增加。 我对自己的未来更自信,更放松,并且有更多的钱可以花在我的利益上,这比我以前所希望的要多。 如果您认为这也可能对您有用,那么我希望您对本指南有所帮助,即使只是向您表明,作为一名开发商开始职业生涯就像在您的公寓里待上几个月一样简单就可以了。计算机,学习如何仅仅为了乐趣而编码。