人们一直问我的一个问题是,“我如何成为一名程序员?”或者,“我如何学习编程?”这有很多可能的答案,具体取决于人和你想要的方式去吧。我认为既然人们经常问我这个问题,我最好还是写一篇关于它的文章。
找到最好的方式
无论我使用何种方法,在我学习编程时,一个很好用的规则就是总是问:“ 实现这个目标的最佳方法是什么?”或“ 实现这个目标的正确方法是什么?”也就是说,在编程中,您可以采用许多不同的路径来完成任务。但通常情况下,只推荐其中一个方式,无论是在编程语言中最现代化的方式,还是程序员社区根据经验达成一致的最佳实践。通常,您可以通过阅读您正在学习的编程语言的文档,或通过Google或Stack Overflow在线搜索最佳实践来查找此信息。如果找不到答案,请在论坛,邮件列表或Stack Overflow上提问。到目前为止,我仍然要做所有这些,当我接受一项任务时,我必须学习一些我不了解的事情。
这里的优点是你不仅学会编程,而且学会成为一名优秀的程序员。此外,它还会迫使您深入了解并了解您正在使用的工具和语言。如果你不断地这样做,你最终会对你正在使用的系统有一个良好的,深刻的理解,同时保持足够的实用性以保持自己的兴趣。(也就是说,你只是深入研究你实际上正在做的事情 - 而不是你永远不会使用的随机理论内容。这也可能很有趣,但它不是一个你可以使用的教育系统永远真正学会编程。)
当然,当你这样做时,你必须确保你真正理解你正在阅读的一切。这可能意味着深入了解更多文档,然后是更多文档,直到您理解所使用的所有单词和符号。没关系!这是使该系统工作的重要部分 - 您可以对您正在使用的符号和概念有一个真实,深刻的理解。
现在看,很明显,当你第一次学习编程并且你被赋予了一项具有挑战性的任务时,可以尝试以任何旧的方式完成任务。您正在学习基础知识,而不是最佳实践。这条建议是为了一旦你克服了学习如何完成任何事情的基础知识。对于一个纯粹要学习的项目,最重要的部分是你要学习你要学习的东西。但是,一旦掌握了这一点,就深入研究它,并试着看看你是否以最好的方式做事。
好的,现在说,让我们来谈谈人们实际学习编程的不同方法。
大学
与大学编程相关的最常教授的科目称为“计算机科学”。我说它与编程有关,因为人们在大多数计算机科学课程中学到的东西实际上最终会在他们的日常工作中变得有用。日子是一名专业的工作程序员。这并非总是如此 - 在某些领域,计算机科学非常有用。但总的来说,我们称之为“软件工程”或“发展”的领域与大学所涵盖的“计算机科学”不同。
通常,大学所涵盖的计算机科学基础非常有用。我上大学学习计算机科学,我的前两年学习对我来说非常有用,特别是前几节课。我在软件开发的一些基本概念方面有了很好的基础。
然而,我当时没有意识到的是,计算机科学只是部分是对编程的研究。另一部分是算法研究。(对于那些正在阅读并且不知道的人来说,算法是完成某项任务的一系列步骤。这就是它的全部意义。甚至购物清单也是一种算法。)算法研究通常涉及学习做事最有效的方法。也就是说,弄清楚如何完成一项任务,比如使用最少的步骤或使用最少的内存来排序整数列表。有迹象表明,不能用电脑在一些亟待解决的问题,所有的除非你知道正确的算法,否则偶尔会遇到需要这些知识的编程问题。所以它确实有一些用处。但解决这些算法问题并不是你花费大部分时间做的事情。
即使是那些提供“软件工程”课程的大学,他们也很少能够体验现实世界的样子。原因是大多数课程最多只需要几个月的时间,并且只需几个人就可以在几千行代码的代码库上进行协作。在现实世界中,您将与代码库中的大量人员合作,这些代码库将持续多年,至少需要数万行代码。但是,这些软件工程课程仍然比没有好。
所有这些都说,有一些大学确实能够成为优秀的程序员,无论是通过计算机科学课程还是软件工程课程。通过在大学上课来学习编程总是有一定的价值。至少,在大学里提供一种结构和纪律,鼓励你通过课堂。
自学成才
在大学培训的另一端,许多程序员都是自学成才。他们在网上阅读了一些文档,弄乱了一些东西,以某种方式让这些东西运转起来,并最终通过许多痛苦,艰苦的经历成为称职的程序员。
我学习编程的很多方法都是这样的。对我来说最重要的是要完成一些我想完成的任务。你看,编程是一种工具,它本身并不是目的。这是一个用来完成其他事情的系统。所以你必须要有你想要完成的东西。有时你必须自己完成这项任务。例如,我的一个朋友有一个非常简单的游戏的想法。所以一个夏天,我花了几个星期的时间学习Java,这样我才能写出那个游戏。我已经从我的大学课程中了解了用另一种语言C编程的基础知识。因此我对编程并不是全新的,这对我有很大帮助。
我所做的(以及我建议大多数人如果想要学习某种语言的话)是我刚刚完成了语言创建者提供的官方教程。对我来说,这是Java教程的旧版本。几乎每种语言都有这些官方教程之一,或者至少推荐一些你可以学习的网站。通常,您只需要在Google上搜索您要学习的语言的名称,然后单词“tutorial”,您就会找到您要查找的内容。或者访问主要网站以获取您想要学习的语言,并查看他们的“入门”链接。
现在,如果您根本不知道如何编程,那么您可能需要先了解一些其他事项,具体取决于您对计算机的使用经验。您可能需要了解计算机如何工作,如何编辑文本文件以及如何通过命令行运行程序(因为这通常是您运行第一个程序的方式)。现在,通过使用基于Web的代码编辑器,可以简化其中的许多工作,您可以在Web浏览器中编写代码并在其中运行。要找到其中一个,只需在Google中搜索您的语言名称,然后搜索“网页编辑器”(不带引号)。
一旦你学习了某种语言的教程,就有很多方法可以自学如何编程。Google和Stack Overflow绝对是您的朋友,您正在使用的语言的官方文档也是如此。当我自学时,我会做很多事情,因为我会在语言的官方文档中搜索与我试图做的相关的文字,然后阅读这些文档以了解我想要完成的事情。但正如我上面所指出的,关键在于你必须真正理解。如果你非常编程很新,有时可以复制并粘贴一些代码而不理解它的作用。但通常这会让你很快进入热水,即使是根据你自己的理解。你会发现某些东西不起作用,你不知道为什么。
事实上,不理解为什么某些东西被打破是教你自己编程的最令人沮丧的部分之一。我猜这是大多数人放弃的地方。有些东西不起作用,系统输出一些完全神秘的错误信息,他们不明白如何解决它。这是永远,永远,因为程序员不明白一些有关的编程语言,他们使用的工具,或者是在错误信息的话是什么意思。当您在没有完全理解复制的代码中的每个单词和符号的情况下剪切和粘贴某些内容时,通常会发生这种情况。
现在是的,看起来要花很多工作来学习每个单词和符号的真正含义,但这就是你学习编程的方式。程序员对社会没有价值,因为他们知道从Stack Overflow复制和粘贴东西的位置和方式。它们很有价值,因为它们已经学习并理解了某些概念,以及如何应用它们。通过这样做,你实际上正在增加作为程序员的价值。
但是,在没有任何帮助的情况下尝试完成此过程仍然非常令人沮丧。希望如果你这样做,那么当你完全陷入困境时,你可以找到一个可以帮助回答你问题的人。我没有任何人,有时那是非常粗糙的,我会花30个小时盯着一段代码,撕扯我的头发,试图理解为什么dang的东西不起作用。因此,如果你有人可以与之交谈,那通常比试图自己解决问题更好,特别是当你刚刚开始时。当你是一个全新的编程时,有时阅读所有文档的文件可能是压倒性的。它有助于有一个指南,或至少是一个帮助者。
新手营
在大学培训和教学之间的某个地方出现了“编码训练营”,这种现象在过去几年中出现,一个组织声称它可以教人们在X周或Y个月内进行编程。很多时候,这些课程实际上提供了比大学更好,更实用的教育,尽管有些课程并没有给你大学培训给你的理论深度。也就是说,你不学习尽可能多的节目背后的理论(特别是如何编程的基础知识以及),你可能会从一些比较正规的培训学习。
以下是我所说的指南:如果一个程序承诺教你在不到一个月的时间内编程,它可能就是垃圾。你可以或许学会一些在当时Web开发的基础知识,但你永远无法学会是一个专业的程序员只需四个星期的经验。作为一名优秀的程序员获得基本技能是一个至少需要几个月的过程,就我看到各种训练营的结果而言。你可能会在几周的课程中获得足够的基础知识,然后你可以继续自学,但是一个月的编程不会让你变成一个专业的开发人员。
现在,这一切可能听起来像我在训练营中的表现相形见绌,而成为“真正的程序员”的唯一方法就是忍受教导自己的痛苦。然而,事实并非如此。事实上,我看过很棒的产品来自训练营。就个人而言,我见过的最好的编程学校,现在可能被称为“训练营”,那就是技术学院。他们很好地吸引那些不知道如何编程并让他们成为程序员的人,而且当他们问我如何编程时,如果他们不想自学,那么我总是向他们推荐。那里可能还有很多其他不错的训练营。
如果我今天正在评估一个训练营,我会发现有多少毕业生作为专业程序员找到了好工作,并试图找到一些毕业生,并问他们的培训与他们实际在一天的工作有多相关日基础。
经验
一旦你自学了编程的基础知识,无论是通过大学,自学,还是编码训练营,你可以在职业生涯中做的最重要的事情之一就是选择一些可以帮助你成长的良好的第一次体验。软件开发人员。
实习
如果您是大学生,我强烈建议您利用许多软件公司提供的暑期实习机会。这是获得在实际软件公司工作的低风险体验的最佳方式。大多数公司实际上会付钱给你,而且这也是你毕业后在该公司聘用的最简单方法。由于他们已经有了你的经验,招聘过程就容易多了。
开源
如果有一些您真正想要开发的开源项目,请尝试查看他们需要的内容,然后继续进行。很多时候,开源项目都有一个新手可用任务列表,您可以选择一些任务并开始着手处理它。这里的优点是通常没有截止日期,通常有一个非常支持的志愿者社区,他们可以通过邮件列表,聊天室等回答您的问题。由于大多数开源项目都参与了一个名为“代码审查”的过程。 ,“您还将从更高级的工程师那里获得有关您的代码的反馈,这也将帮助您成长为程序员。最重要的是,在开源中工作可以提供您可以向任何雇主展示的工作证据。(当您处理公司的代码时,
商友
当你作为程序员从事第一份工作时,要考虑它将为你提供成为更好的程序员的机会。公司是否有更多经验丰富的软件工程师可以帮助您成长,或者它是否完全由新毕业的大学毕业生组成,几乎没有专业经验?公司是否进行代码审查,每个更改都由更高级的工程师审核,以帮助您更好地进行编程?
也许最重要的是,当您接受工作时,请确保它是一家关注软件最佳实践的公司。在软件公司 - 即主要产品是软件的公司 - 比其他公司更常见的情况下(例如,金融机构雇用了大量程序员,但他们是否非常关心软件质量取决于很多公司,甚至你工作的公司的哪个部分)。你更有可能在一家更成熟的公司获得这种经验,或者至少在一家公司没有受到极其严峻的期限压力并且即将死亡的公司(例如,像一家资金不足的创业公司)。
我并不是说你应该拒绝你唯一的报价,因为他们可能不是一个完美的公司。但请记住,如果你正在寻找职业和技能增长作为程序员,你不会通过在那些讨厌你的产品但却无论如何被迫使用它的用户的严格期限内删除糟糕的代码来获得它。
读
网上有很多关于软件最佳实践的内容。还有很多好书。(我甚至写了一些 这些书,如果你正在学习编程,你可能会喜欢这些书。)值得在线阅读各种软件最佳实践,特别是当它们直接涉及你实际上试图解决的一些实际问题时。继续阅读书籍,博客,网站等是保持最新状态的好方法,有时即使它们不直接实用也是如此。例如,有一段时间,我会阅读一些新的编程语言或一些CPU功能,不是因为它与我正在做的事情有关,而是因为它对我来说似乎是好的和有用的信息要成为一名程序员。
摘要
这是我们在问他如何编程时通常会给人们的建议的基础知识。可能还有其他事情需要了解,尤其是我为什么选择程序员所吸引的东西。当然,上述所有内容只是对需要数月或数年才能真正擅长的流程的总结。但希望这可以帮助您学习编程,或者为您提供一个资源,当您向他们提出同样的问题时,您可以发送给他人!
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】
本文探讨了如何成为一名程序员,包括通过大学教育、自学、编码训练营、实习和参与开源项目等方式,强调理解编程语言和最佳实践的重要性。作者提供了学习路径建议和资源,如官方教程、搜索引擎和社区支持。
2095

被折叠的 条评论
为什么被折叠?



