已有26人围观 来源:程序人生 发布于:2021-05-04 17:47:07

作者 | Sergiy C.

责编 |  Carol

出品 | 程序人生(coder_life)

很多人都想懂得自己是否合适编程?程序员的日常工作是什么?以及自己能借助编程完成什么事情?但他们往往因为缺少一些相干信息(我愿称之为“初始”或“由此开端”文章),而无从入手。如果你也想懂得编程这项工作是否合适自己?你须要做什么?你可能要做什么?编程能为我们带来什么?不能带来什么?以及从哪里着手开端?那么就请持续往下阅读。
TL;DR:选择一个你感兴致的范畴,学习其基本知识,开端创立真实、小型的项目。保持不断地练习、练习......
免责声明:我写这篇文章的初衷是——如果我是一名新手,想要懂得编程是否值得学习?如果值得,从哪里开端?要学什么?那么这篇文章就是为我量身定制的。作者个人的编程经验重要集中在开发web运用程序方面。



什么是编程?

编程是一个与机器沟通的进程,赞助我们向机器说明其在特定情形下应当做什么,不应当做什么。看起来就像是在用某种奇异的语言和机器对话,不知为何机器也确切能听懂这门语言。而且,其他懂这门语言的人同样也可以读懂你给机器的指令。这样的语言有很多,有些程序员会说好几种。
小结:编程就是告知机器该做什么。


我们可以做什么呢?

通过管理机器,我们可以创立出有趣、庞杂的程序/体系,简化日常义务。或者,也可以让事情变得更有趣。所有的电子产品都是通过编程来赞助我们完成日常工作的。当有人走近时会自行点亮的主动灯泡?靠的就是编程!我们甚至可以在机器中编写魔法世界。比如网站、或者视频游戏。要想通过编程为生涯带来方便,除了物理定律和技巧提高,我们还须要借助想象力和其他技巧。
此时此刻,有数十亿台机器正整装待发,预备接收指令。你的智能手机正等着你打开阅读器搜索“如何开端编程”;你的Wi-Fi路由器正等着处置这样的网络要求,它会讯问互联网上的其他机器(也称为服务器)是否有相干的信息;这些服务器会处置要求并将信息发回。编程使所有这些机器能够共同完成一组特定的义务。
最终,会有数十亿台机器等着我们在云中给它们分派有用的工作!想象一下,在如此宏大数目的盘算机基本上,我们可以树立什么样的体系。
下面,让我回归到最简略的问题上来。那么,作为一名程序员,我们能做什么呢?
  • 创立机器人。获取细节、进行组装、为机器人编程。这不仅涉及传统意义上的机器人,还涉及到所有可以进行编程的装备。比如,智能家居装备。这里有无穷的想象空间及可能性。
  • 创立移动运用程序。相似于我们每天在智能手机上应用的那些App。
  • 创立web页面。庞杂的运用程序或网站,比如个人博客,等等。这一点在下面会有详细介绍。
  • 等等...


程序员的工作是什么?

下面,我将介绍一下我所做的工作——网络运用程序相干工作。
谈谈“为什么”?
有些人或公司会对网页的创立和保护感兴致,所有人都可以通过互联网拜访这些网页。由于网页可以展现人们在现实世界中所做的业务,因此企业往往也会须要一个自己的业务网站。这样一来,搜索此类业务的人就可以看到他们的网页、阅读有用的信息,并决议是否要为该公司供给的服务付费。
有些企业会在网上出售产品。因此,他们须要一个能够处置客户要求、并出售产品的web网页。
由此看来,创立网页(如果你想的话,也可以创立运用程序)的市场需求是非常伟大的。
企业须要网站,好的!然后呢?
他们可能会接洽那些能够帮忙创立网站的公司。我们称它们为数字代理机构。他们具备相干的专业知识和技巧,企业须要网站,而此类机构则通过创立所需网站来盈利。
数字代理机构须要程序员来完成这些事情:他们知道该如何构建网站,并最终完成构建。总的来说,就这么简略。
还有一些其他相似的机构,它们通过出售程序员的工作时光(而不是网站)来盈利。其中一些按项目收费,包括程序员的工作、测试、收集需求、管理人员等等。
有的产品公司不出售员工的工作时光,它们依附打造具有价值的产品来盈利。这些产品本身就已经是一项有利可图(也可能不是)的业务了。


程序员每天都做些什么?

业务侧管理会告知开发人员他们下一步想要什么。工程师们会讨论筹划——将如何实现业务的愿望,须要额外斟酌哪些方面,等等。此后,我们就会得到一个“待办列表”,上面包括了某个特定项目的所有义务。每个工程师领一个义务,然后就可以开端工作了。
虽然上述表达简化了程序员每天须要面对的琐碎工作,但也反应了实际工作的大概流程。


义务

如果你是新手的话,一般都会做一些相对简略的义务。经验丰硕的先辈同事也都愿望你在遇到问题时能多向他们提问。随着你积聚的经验越来越多,你会逐渐参与到更庞杂的义务中去,相应地也会承担更多的义务。
依据项目的不同,程序员每天的义务也有很大的差别,但大多数义务中都会包括实际的编码工作。而你须要通过特定的方法来完成相应的工作。在处置web运用程序时,程序员分为以下几类:
前端开发人员。当我们打开一个网站时,第一眼看到的就是他们做的东西。那些英俊的的块、文本、模态框、排列整齐的图像、页面上的动画——都是由他们负责完成的。他们最起码要懂得HTML和CSS来设计静态页面。HTML是一种标志语言,可以告知阅读器把东西放在哪里。例如,我想在网页顶部放置一个导航菜单,然后在下面放两张图片,并在最底部出现文本“Sergiy的网站”。所有这些都可以转换成HTML,这样阅读器就可以精确地表达你的愿望了。
CSS是一种样式语言,能够赋予原始HTML元素好看的外观。它可认为文本或块设置色彩、大小、宽度、高度、等等。借助HTML和CSS,我们可以创立静态网站。所谓静态,指的是不须要额外逻辑操作,如处置按钮点击、在鼠标双击特定元素时做出反响,等等。
Web运用程序是具有额外逻辑和庞杂性的web页面。在互联网上非常常见。我们买东西的网店就是一个web运用程序,因为它会处置:我们选择商品、将商品添加到购物车、打开模态框、讯问收货地址,等等的逻辑。这类网站要求前端开发人员掌握一门编程语言,因为此类指令是无法通过HTML或CSS编写的。最常用的编程语言是Javascript。
总而言之,前端开发人员负责创立网站的视觉部分,同时,他们也会树立一个逻辑,描写视觉部分应当如何出现。除此之外,网站还有其他部分吗?当然,还有后端(服务器)部分。
后端开发人员。他们负责编写逻辑,用于传输、验证、清算来自前端(可视化)部分的数据,将数据放入某个存储区,然落后行检索。服务器负责管理数据。如果前端(我们称之为FE)部分也能有逻辑的话,我们为什么还要有服务器呢? 因为FE受限于阅读器环境,所以我们无法在前端实现所有事情。
服务器端(后端,BE)开发人员负责会为FE或其他服务器编写API。API是什么?让我们看看维基百科是怎么说的:
运用程序编程接口(Application Programming Interface),实现两个运用程序相互通讯的软件中介。
它就像人类的嘴巴和耳朵:我用嘴巴说——你用耳朵听,反之亦然。API就是这样一种信息交流的方法。
举一个更实际的例子,让我们回忆一下线上购物网站。当我们想要从上面买东西时,FE会收集我们的数据,然后将其发送到服务器,验证数据是否有效,在数据库中检索我们的身份(是否为注册用户?是否有订阅?),然后与银行的服务器对话,如果有付款的话,银行服务器会处置付款。经过这一系列的检讨和操作后,服务器会答复FE说:客户已经支付了产品,我们在网站上给他发一条感激资讯吧。
因此,FE通过供给的API与BE进行对话,它们交流信息,协同工作。有的程序员能够胜任FE和BE两部分的工作。
全栈忍者。他们具备处置FE和BE所需的一切技巧。因此,他们可以独自完成web运用程序的创立。
还有一些移动开发者,我们将在下面的章节中进行介绍。


开端编写代码须要学习哪些东西

练习、练习、练习。
在懂得了程序员的工作类型后,也许你已经有了自己想要选择的方向:FE、BE、移动运用程序。如果还没肯定的话,也没关系。你要做的只是积聚更多的经验,然后自然会找到自己的心之所向。
不管你选择的是哪条路,你都应当开端着手构建一个真正的项目。这里所说的项目并不是指亚马逊快递体系那种大型项目。你编写的任何代码都可以被视为是一个项目。你可以先懂得一些基本的理论,比如目的编程语言知识、或者盘算机科学的基本知识。如果你暂时还不具备基本知识的话也没关系,先着手去发明一些实际的事物吧。但是,在没有理论基本做支持的话,我们可能会发现自己并不懂得在构建时应当注意些什么。因此,我们应当尽量避免这种情形。


前端路径

这也取决于你盘算做什么。例如,如果你是想为静态网页创立英俊、雅观的设计,那么HTML和CSS就足够了。要想实现这一点,你须要找一本“HTML指南”,然后在每节课后编写一些代码。然后,再找一本“CSS指南”,与HTML联合起来学习。你并不须要学习所有的HTML元素。<div>、 <font>、<p>之类的就足够起步了。然后,当你在遇到其他问题时,可以求助于谷歌。CSS也是一样,只不过须要学习的内容可能会更多的一些。
如果你对制造web运用程序感兴致的话,就须要懂得HTML和CSS,以及Javascript。一开端,你须要先掌握一些基本知识,比如如何编写函数、调用函数、创立变量、求和数字、打印字符串等等——懂得可能会遇到的情形。Javascript的DOM部分能够让你把所学的知识与操作网页联合起来。比如,按下按钮即可将页面上的红色块变成蓝色块。
然后,在你熟习了这些基本知识之后,就可以选择一个前端框架(但这也不是必须的)。框架是开发人员用于解决特定问题的工具,它可以赞助我们减少代码编写量。然而,我们也完整可以在没有框架的情形下树立网站。如果你开端着手预备挑选框架的话,那么恭喜你,你的程度提高了,应当再读点新东西了。
应当选择什么样的项目呢?最好是迅速且简略的项目。这样我们就可以在短期内看到后果,而不至于把战线拉太长,最终废弃学习代码。
例如,你可以先创立一个个人网页,把自己的信息放在上面。一些带有文本的原始HTML块。用不同的块进行练习,看看后果。然后,开端用CSS添加样式。想象多个相似的项目,在接下来的几天或几周的时光里练习HTML和CSS。
在掌握了HTML和CSS后,你就可以学习Javascript基本知识了。你要学习如何编写代码,比如,一个按钮单击处置程序——单击,页面就会变成红色。想一些相似的义务,并编写代码。之后,你应当就能够应用HTML、CSS和Javascript来完成一些琐碎的义务了。比如,创立一个带有页眉、页脚、内容的简略页面,并在里面添加一些逻辑:单击一个按钮,就会出现能够进行输入的块,在更改输入后,网页题目也会随之更改。
通过新义务和新项目进行大批的练习。不要省略练习这一步!


后端路径

你须要学习一门编程语言。对于web运用程序而言,最佳选择是Javascript,因为如此一来,你就可以在前端和服务器端应用同一种语言编写了。这对于全栈开发来说是个不错的选择。
你须要学习Node.JS平台——这是一个服务器端Javascript。可以通过阅读或观看介绍视频来学习其基本知识:如何安装Node,并编写简略的服务器来侦听要求并对其进行响应。我们都对REST API很感兴致,所以你的第一个真正的项目可以是创立一个有两个路由的服务器:' POST/messages '创立一个新资讯,'GET/messages'返回你保留的所有资讯。可以暂时将其保留在内存或文件中。
如果你有兴致成为一名全栈程序员的话,也可以创立一个显示资讯并具有添加新资讯功效的web页面。


移动路径

我们一直都在讨论Javascript,它能赞助我们应用React Native框架创立移动运用。通常情形下,开发者会应用其他语言来编写代码,如Java(实用于Android)或Swift(实用于iOS)。React Native能够同时为这两种平台编写代码,甚至还能用于web和桌面代码的编写。


总结

愿望你现在对选择哪条路有了更好的懂得。不管你选择什么,都应当定期进行练习。没有恰当的知识基本,就很难看清全局,也会更容易遗忘。
当你掌握了基本知识后,试着编写一些简略的项目,选择那些会消费必定时光,但尽量掌握在几个小时之内的项目。否则,如果在短期内看不到提高后果的话,很容易会废弃,甚至会损失学习的兴致。

原文链接:

https://hackernoon.com/becoming-a-programmer-starter-pack-4jv33qv
☞“大厂平均年纪 29.6 岁”:不是我们选择了年纪焦虑,是大厂焦虑了我们

华为一则面试题火爆全网,答案众口不一

每天穿女装上班的大厂程序员:我知道自己是个男生

B 站校招面试官“夸耀资产、贬低应试者”?当事人发长文回应,北邮学子要求向学校报歉
36 岁开发者应聘被拒,这 3 位 50 岁程序员的生存秘籍送给你!