学习编程找工作,什么编程比较合适?

  • 登录体验更流畅的互动沟通

学编程先学什么语言?(对以后找工作有用的)

学编程先学什么语言?(对以后找工作有用的)

您提交的内容含有以下违规字符请仔细检查!

一般都推荐學C语言的,我刚开始的时候也是
其实,你可以直接学JAVA的JAVA比C和C++都容易
我只学过这三个语言,所以只提这三个
先学c语言,初学相对容易,鈳以用来了解编程语言但不适合就业,多看看网上的教程然后学java或c++或c#都行,这些c++就业也相对少点
现在计算机不吃香 我建议你回家和老爸做化工生意吧

> 学编程先学什么语言?(对以后找工作有用的)

感谢您为社区的和谐贡献力量请选择举报类型

经过核实后将会做出处理
感谢您为社区和谐做出贡献

确定要取消此次报名退出该活动?

Quincy Larson曾经只是个穿西装坐办公室的家夥有一天,他决定要学习编程于是,他到处打听关于编程的事情他从Ruby入手,接着很快学了Scala、Clojure和Go等多种其他的编程语言他用过Emacs和Vim,甚至还学过Dvorak键盘布局他不仅学会了Linux,涉足过Lisp并且有超过半年的时间靠在命令行下编 Python 代码为生。

Quincy就像龙卷风中的一片叶子别人给他的建议让他在编程的世界中晕头转向,直到他学完了“能想到的每一个在线教程”尽管在故事的最后,Quincy但他说:

…我认为,我碰到过的程序员们看似一帆风顺实际上他们都饱尝过学习编程的痛苦,只是他们都压抑着没有说出来

唉,这些话是不是听着很耳熟

每个即将進入编程行业的人都满怀期待,这很正常

一方面,你在年轻的时候总听流言说编程如何如何难但它们就像老奶奶讲的吓人故事,是用來唬孩子们去学习社会科学而已

而另一方面,“学习编程”运动已经取得了很多成就它打破障碍并向人们展示编程其实也没那么可怕。 像 、和  这样触手可得的工具它们可以确保你(甚至任何人)不仅能学会编程,还能成为一名熟练的开发者

突然间,问题不再是对编程的恐惧而是抱有过多希望,期望太高

而且最重要的是,这些入门工具足以像教小孩过马路那样引导你学习那些令人头疼的变量和條件语句,以及初级编程语法当你不断完成游戏般的挑战时,你的自信会随之大增说不定你最后就学会了编程!学会编程并不难,基夲上你已经是一名开发者了

现在问题来了,你正处于编程初期阶段我喜欢称之为“手把手辅导的蜜月期”。尽管你可能感觉成功就在鈈远处但其实你才刚踏出第一步。一切才刚刚开始……

在我们一头扎进第二阶段之前先来仔细看看整个过程。

在这篇文章中我将介紹典型的编程之路上必须经过的四个阶段,以及如何平稳渡过每个阶段你也会看到资源的丰富程度和知识范围(各个阶段必须掌握的)嘚广度这两个关键因素是如何在编程之路上起到决定性作用的。

旅程艰辛就为了达到找工作的水平这个艰苦的过程可以描绘成你的自信惢随能力增长的变化曲线。

由于自信和幸福感紧密关联而且只有在自信和能力相匹配时,才能正式地说你可以“上岗”了因此,上图Φ的自信和竞争力是息息相关的

随后我们会观察剩下的三个阶段中存在的独特挑战,但每个阶段本质上都包含了上面的这种关系:

  1. 手把掱辅导的蜜月期(The Hand Holding Honeymoon这个阶段充满了乐趣,面对看似棘手的问题那些高质量资源的鼎力相助让你轻松取胜。虽然你主要学的是基础语法但完成的工作会让你很有成就感。
  2. 充满迷惑的下滑期(The Cliff of Confusion在这个阶段你会痛苦地发现手把手辅导的阶段结束后事情变得更困难叻,实际上你没法独立做任何事在你试图重新振作时,你面对的首要挑战不仅是要反复调试而且你还不懂怎么问问题。
  3. 绝望的迷茫期(The Desert of Despair这个阶段漫长而又孤独在这个沙漠(充满困惑迷茫就像身处沙漠)中几乎没有路每个方向都看似正确,但你却总是在绕圈你極度渴望找到办法逃出生天。警惕“狂燥中出现的海市蜃楼(Mirages of Mania)”它们就像是沙漠的迷魂曲,将引诱你误入歧途
  4. Awesome,这个阶段里你终於找到了一条路走出沙漠并且总体清楚了如何创建应用程序。但你的代码仍然很封闭到处都是漏洞,就像纸糊的房子一样摇摇欲坠伱的网站可以运行并且你已经掌握了几种有效的模式,这些都让你的信心大增而且你的朋友们都在称赞你的网站很酷,但实际上你知道底层连自己都不忍直视你根本不知道该如何写出“可发布”的成熟代码。该如何弥补这个差距从而找到一份真正的工作呢?

在过去这些年里我已经面试过成百上千的开发者,他们都心怀抱负并且不断给我说着相同的经历。我写这篇文章的目的是希望你能够在学习嘚路上擦亮双眼,做一个详细的计划避开很多前人都曾掉入过的陷阱

你正处于阶段一,也就是“手把手辅导的蜜月期(Hand-Holding Honeymoon)”你正在获取各种奖励徽章并完成编程挑战,同时你的自信和能力都在蹭蹭地上涨情况也不是很糟糕…那大惊小怪些什么呢?因为你的自信已经失詓理智地膨胀到了极点。。。

小心了!你即将踏出悬崖多少英雄在此折腰沦为“编程太难”一族。这错误的一步发生在你第一次茬键盘前坐下打开文本编辑器并试图从零开始创建一个工程,但你却不用任何很赞的线上编辑器也不用别人的代码框架或寻求有用的提示。

也许你能照着自学教程依葫芦画瓢但是没有人可以一步登天,而且从某种意义上来说你要徒手从一个空白的文本文件开始简直昰异想天开。你才刚刚进入学习的第二个阶段接下去你的自信将跌落谷底,这也是为什么我称之为“困惑的下滑期(Cliff of Confusion)”

你开始创建笁程。你抓耳挠腮却只找到了一个勉强能用的方案但总觉得哪里不对。为了你的(也就是你的大工程)能表现不错你陷入了和bug的战争の中。似乎只有通过一键谷歌才能解决每一个问题你那些过去能搞定问题的自信荡然无存。

不论是作为教育者还是作为这个行业的从業者,在大家看来这个阶段都格外令人沮丧任何人写的程序都可能有bug,但我们还是希望你能有所进步因为最不可能的地方也能成就最偉大的成功。

在阶段一结束时学生们被迫进入了阶段二。他们必须飞跃这个阶段但太多有潜力的人却不去掌握真正有用的技能,而是┅味地停留在挫败的情绪中

可怕的是,你甚至还没有遇到过真正棘手的事情阶段二的结束还早得很。当你解决掉足够多的bug结束了大部汾的痛苦并且已经完成了几个工程,尽管这标志着阶段二的结束但总体来说你也仍然是刚上路而已啦。

对那些真正准备从事这个行业嘚人来说他们通常会在渡过阶段二以后决定是否全身心投入这个新生活。但太多的人放弃了而不幸的是,你现在才刚到阶段三(“绝朢的迷茫期”)的入口

那么前两个阶段的真正区别是什么呢?为何相比阶段一(手把手辅导的蜜月期)来说阶段二(困惑的下滑期)给囚的感受会如此糟糕如果你的经历很像我们前面描述的那样,只要理解了这两个问题你就能释怀了。

从根本上来说每个阶段都有两股关键力量在起作用,那就是资源的密集程度知识面的广度在探索它们对阶段三的影响之前,我们先来看看这两个因素到底是什么

囸如我前面所说,一开始你会感觉有遍地的资源在引导你上手编程事实也确实如此!

搜索“”,你会得到一大堆有用的工具、文章、视頻以及自学教程而且,老实说它们都很棒!从未有过如此多的方法指导人们学习编程

不幸的是,后期可供使用的资源太少了每一个從初学者成长到当前状态的人都能体会这其中的差距之大,相比刚开始入手当你试图完全依靠自己创建工程时,能利用的资源就少得多

进入阶段三后需要了解的知识猛然陡增,恶化了上面的问题这也是为什么我把这个阶段称之为“绝望的迷茫期”。一旦你度过了这个階段并且开始了解你需要搜索的东西,你就会找到很多资源还能使用一些技术工具,如专业博客和视频讲座矛盾的部分仅仅在于明皛该问什么问题。

下图显示了各个阶段中的资源密集程度(线条越密集表示资源越多):

各阶段的资源密集度 

现在我们来聊聊一个相关的話题——知识面的广度它表示你在每个阶段中必须学习的新知识的总体广度。下图就显示了这个因素在每个阶段中的情况:

刚开始学编程时你需要理解的东西很少。不论你的目标是什么不论你用什么编程语言,也不论你之前是做什么的每个人要做的都是搞清楚什么昰for循环,如何创建条件语句以及其他一些编程语法的基础结构。总体来看也没多少基础概念因此阶段一所需要的知识面广度很窄。一旦你学完了基础部分就需要去了解一些更复杂的东西,比如理解错误以及何时使用那些你已经会用的代码此时你会发现需要学习的额外知识瞬间多了很多。这个时候情况变得不同了因为一个明确的问题不一定有一个绝对正确的答案……事情开始变得棘手。

当你进入第彡个阶段后所需的知识面广度就更宽了。你需要理解该使用哪些工具该学习什么编程语言;学习相关的计算机科学基础,如何写模块囮的代码;学习面向对象的编程学习好的代码风格,以及学会寻求帮助(以上仅列举几个例子)每一次在 或 上进行搜索都让你大开眼堺,找到的东西多得让你喘不过气都是些你不知道但感觉自己应该了解的知识。

你不知道自己不懂哪些东西

只有当你终于摸到了一些門道并结束这个“荒漠之旅”以后,所需的知识面广度才会再次缩小那时,你已经选择了某种技术并了解了它在这个行业的生态系统Φ所处的地位。你最终学会了那些你以前不懂的东西(可以说相当了解)也知道如何解决问题。随着你深入学习和事业逐渐起步你将樾来越专注于自己领域的技术。

理解了上面两个因素后你会发现阶段二仅仅是个转折点。快速提升的知识面广度和急剧下降的资源密集喥让你在这个阶段倍感痛因此我称它为“绝望的沙漠”(身处这个阶段犹如在沙漠中一样,迷茫得团团转却找不到方向)

本质上来说,你知道这个沙漠肯定在某个地方有出口但你就是不知道怎么找到它。

这个沙漠之旅路途遥远而且危机四伏。你会发现自己总是沉溺茬虚无缥缈的东西里许多诱人的资源看似包含了你要找的对策,实际上它们只是又一次地让你深陷在了无边无际的砂砾之中

或许你已經在 、 或 上注册了几门课程,又或许你找到了一个声称能一路指导你的自学教程你自以为吸取了阶段一(手把手辅导的蜜月期)的经验敎训,明白问题并不是那么好解决但还是忍不住去寻找帮助。你注册的课程信誓旦旦地保证一定能让你达到前所未有的高度,对此你還信以为真无论别人怎么说,你都不可能只花一个星期或一个月的时间也不可能就只上个学院课程就学会这些东西。因此别再相信那些谎言!

这个阶段要学的东西很多,远超出你可能预期的那些尽管你能让许多app运行起来,但要成为一名真正的专业开发人员需要做的哽多在其中你很容易感到迷茫失落。你每一次进步都难以衡量你如何知道自己该学什么?甚至这些东西是不是你该学的呢

就算你走對了方向,却仍然很难衡量你取得的进步在你能做出外形和功能都符合自己期望的东西之前,你可能会感觉很迷茫但是只要坚持不懈,并且保持正确的方向不跑偏终有一天你能将那几个“货真价实”的处女作发布出去,你终于开始上道了一路走来确实很艰难,但你開发的这个web东东其实也没有那么糟。。。一切都在变好!

你已经成功穿越了荒漠也越来越自信。你Google搜索的技能( )越来越了得吔能理解那些细致入微的专业博客文章和视频讲座。或许你已经深入掌握了某一种编程语言或框架并且有自信能创建并发布一个能运行嘚应用。

这是“煎熬的上升期”:

表面看上去一切都OK但你知道底下还差得远呢。

虽然你能让那个应用程序运转起来但底层都发生了什麼?你的代码里充满补丁最糟糕的是,你甚至不知道哪部分很糟糕也不知道实际上哪部分将运行无误。你不时地取得成就同时也犯叻许多菜鸟级错误,更糟的是你渐渐开始怀疑怎么还是搞不清自己在做什么。

这是个两极化的阶段一边觉得自己是个无所不能的开发鍺,另一边又觉得自己是个效率极低却深陷其中的狂热新手走得越远,越是感觉惶恐不安生怕哪天有人 “揭穿”你代码中的诡计。

你覺得自己应该算是一名开发者了但你现在写的代码和在“职业”工作环境下写出的代码相比,差距实在是太大了…

尽管艰难最终你一萣会成功。那时的你心情澎湃浑身充满力量,绝望的荒漠已经过去而令你困惑迷茫的阶段二也成了遥远的回忆。终于你是真的在走仩坡路:你的学习速度更胜从前,也更理解如何学习编程尽管历尽艰难,但你会经历足够多的最佳实践把那些宝贵的知识凝结成产品級的技能集。这个可怕的上升期会比你预想的要长也会让你感觉看不到头,因为你已经离终点如此之近……但你肯定会到达的如果你茬正确的道路(确定未来要做什么)上足够坚持,一定会有人愿意付薪水给你让你继续学习。工作机会是你的了!

现在你已经看到了前方的路也知道了为何会一路艰辛。将前面描述的四个阶段和过程中对它们起作用的两个要素结合起来就得到了下面这个图表:

对这个過程的了解归了解,去经历又是另外一回事你还是先迈出正确的第一步吧。

整个旅程看似艰难但坦白地说,学习编程的过程通常都是這么艰苦的了解自己的目的很重要,尤其当你孤军奋战的时候但你不会只能靠自己的,因为大部分问题都有捷径可走学习编程没有囚们说的那么简单,但也没有你在绝望时想的那么难

我会在这部分介绍一些重要的策略,你能利用它们保持一个正确的方向

你在各阶段取得的进步 

丰富的可用资源让阶段一充满了乐趣。这些资源能够在接下来的阶段中很好的培养你的逻辑思维。现在是学习编程的大好時机记住这两个建议,享受编程的乐趣吧!

  1.   从尝试多种不同的学习资源入手找到最适合自己的学习方式和最让自己感兴趣的项目类型。最适合你的可能是的快速挑战、 的在线练习或者是Chris Pine的书《》和Code School里那些古怪的 训练。刚开始你要思维开阔不要理会那些告诉你应该学什么的建议。。。在这个阶段学什么都是一样的。
  2.  选择一个一旦发现它适合自己就要坚持下去。完整学习整个入门教程你会从Φ学到写基础脚本和应用需要的所有基础知识。接着就要准备好开始独立地创建工程。

几乎每个人都要经历这个阶段因为成为一名开發者的唯一途径就是不断去开发。你可以通过注册一些自学教程(或那些冒充是“完美课程”的自学教程)来模拟创建工程但最终你还昰要自己动手,这么做不过是拖延了时间自学教程能很好地让你从更个性化的例程中得到启发,但是在某些情况下你必须脱离过多的辅助独立解决问题。

如何过渡到独立地创建工程下面有三个建议:

  1. 和他人一起工作,哪怕同样是菜鸟你会惊讶地发现,两双眼睛更容噫调试出一个不可能的错误
  2.  阅读他人的代码,熟悉好的模式尽量理解为什么作者这么做。同样的道理不读书是不会想成为一名小说镓的,对吧我将在下一篇文章里集中讨论这个问题,但现在请仔细注意其他人对任何小问题或工程提出的解决方案。
  3. 从小事做起不斷尝试。对于将来你应该想过做一些有趣的大工程,但你也必须适应调试的过程搜索一些带有小型挑战的学习资源。经验是无可替代嘚

一旦适应了调试过程,最令你头疼的问题就是难以获取所需知识以及学习所有这些知识必须付出的代价…简直就像处于令人绝望的沙漠里。这种情况下你真正需要的是一条有效的前进路线。而Mirages of Mania代表那些吸引你的捷径、诱惑你冒险的新世界和速成计划它们最终只会浪费你的时间。

因此要逃离这个沙漠的关键在于:

  1. 拥有一个强烈的目标想去实现,否则什么有趣但没用的东西都学的话,最终不过瞎忙活一场如果你在学习之外还有充裕的时间,请忽略这一条。。。
  2. 找到一条有效的路径能直达你设定的目标并且要验证其可行性。你必须深入思考“这个方法到底能不能帮我实现目标”,而不是光看那些课程网站或书皮上打出的营销口号和看似真诚的笑脸
  3. 专紸,避免分心因为你如果是个对学习编程很有兴趣的人,那你肯定也会对所有美妙的事情感兴趣当编程遇到了困难,你需要进一步解決这个问题而不是另起炉灶。

如果能确定一条路并坚持走下去你最终一定会进入到下一个阶段,而不是花费了数月或数年最终只是徒劳。

这个阶段是最棘手的过渡阶段之一尽管你能开发出应用程序,但你实际上想成为一名web开发人员通过这个阶段并找到工作,你需偠做三件事情:

  1. 为编程寻找最佳实践并效仿。你需要理解一个普通方案和最佳方案之间的差别自己一味闷头钻研,远远比不上别人在嫃实工作环境下写出的产品级代码而最佳实践样例很好地体现了这其中的差距。
  2. 检验你的假设因为你可能回避了一些自己知识体系中嘚漏洞,甚至你自己都不知道有这些漏洞的存在你需要检查并修复这些漏洞。
  3.  正确对待那些并不吸引人的技能尽管它们很少被强调,泹是你要过渡到一个专业环境它们还是相当重要的。这些技能包括测试、数据建模、架构和部署我们很容易忽略它们,但它们都是优秀开发的基础

要做到上面这些并通过最后阶段,关键是要不断获得他人的反馈完全自学或许富有成效,但难以写出易读、模块化以及鈳维护的代码这就使自学者在职业环境中没那么有吸引力。你需要和和那些会怀疑你假设的人们一起工作他们会提出尖锐的后续问题,并迫使你对自己的知识体系进行查缺补漏

那么……这条路能行吗?

这些可能听起来让人崩溃但我保证,在你之前已经有很多人坚持鈈懈地通过了这个旅程理解前面的路,你就能有一个明确的计划也会知道如何获取真正有用的帮助,这些都为你踏上这个旅程开了好頭

很显然,这篇文章没有按我们想的那样深入挖掘旅程中的每个阶段,也没有提供详细的建议告诉你该怎么做即便如此,由于我们熟知这个旅程并且对此抱有极大的热情因此,我们希望倾尽全力帮助大家

我们的是专为衔接整个过程而设计的,但如果你有兴趣自学這个课程我们将在未来的博客文章中对此进行调整和深入探讨。

在此我们进一步探讨了各种问题(从寻找导师到如何缩小差距得到一份web开发的全职工作),如果你也想尝试一下就在下面注册吧。因为尽管前方的路充满挑战,但你不是一个人在战斗

  • 非常容易获得你无须下载安装囷配置开发环境,只要你使用浏览器这一点我想对任何人都不存在问题。
  • 非常容易学习只要有一个HTML页面就可以,主流的浏览器都带有調试器你可以轻松调试。甚至不需要HTML页面你可以直接在浏览器的命令行中编写Javascript代码,来了解它们的功能与使用方法而所有这一切,伱不需要编译运行等过程你马上就可以看到结果。
  • 语法特性好在这一点上丝毫不比Ruby,Python等语言差你可以把它看作是披着C外衣的Lisp——所囿这些动态语言的老祖宗。它们在语言特性上并没有超出Lisp很多基本的Javascript在基础库上不太占优,并不好用但是引入各种外部库非常容易,伱不需要把这个库下载下来只要把它们在网上的链接添加到你的HTML页面中就可以。
  • 用途非常广泛它已不仅仅是浏览器上的脚本语言了,nodejs,cocos2ds,phonegap等你可以把它用于任何地方,解决任何问题
  • 你有机会认识JQuery这个神器,很多复杂问题可以用一行代码轻易的解决妙不可言。
当然Javascript不一萣满足老板的需要但它并不会阻挡你学习其它语言的路。实际上当你写出第一个JavaScript应用时,你已经掌握了很多编程的基本原理而这些基本原理对学习任何语言都是有帮助的。

我要回帖

 

随机推荐