想做程序员却不知从何下手?新手入门信息打包送你!

作者 | Sergiy C.

责编 |  Carol

出品 | 程序人生(coder_life)

很多人都想了解自己是否适合编程?程序员的日常工作是什么?以及自己能借助编程完成什么事情?但他们往往因为缺乏一些相关信息(我愿称之为“初始”或“由此开始”文章),而无从入手。如果你也想了解编程这项工作是否适合自己?你需要做什么?你可能要做什么?编程能为我们带来什么?不能带来什么?以及从哪里着手开始?那么就请继续往下阅读。

TL;DR:选择一个你感兴趣的领域,学习其基础知识,开始创建真实、小型的项目。坚持不断地练习、练习......

免责声明:我写这篇文章的初衷是——如果我是一名新手,想要了解编程是否值得学习?如果值得,从哪里开始?要学什么?那么这篇文章就是为我量身定制的。作者个人的编程经验主要集中在开发web应用程序方面。

什么是编程?

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

小结:编程就是告诉机器该做什么。

我们可以做什么呢?

通过管理机器,我们可以创建出有趣、复杂的程序/系统,简化日常任务。或者,也可以让事情变得更有趣。所有的电子产品都是通过编程来帮助我们完成日常工作的。当有人走近时会自行点亮的自动灯泡?靠的就是编程!我们甚至可以在机器中编写魔法世界。比如网站、或者视频游戏。要想通过编程为生活带来便利,除了物理定律和技术进步,我们还需要借助想象力和其他技能。

此时此刻,有数十亿台机器正整装待发,准备接受指令。你的智能手机正等着你打开浏览器搜索“如何开始编程”;你的Wi-Fi路由器正等着处理这样的网络请求,它会询问互联网上的其他机器(也称为服务器)是否有相关的信息;这些服务器会处理请求并将信息发回。编程使所有这些机器能够共同完成一组特定的任务。

最终,会有数十亿台机器等着我们在云中给它们分派有用的工作!想象一下,在如此庞大数量的计算机基础上,我们可以建立什么样的系统。

下面,让我回归到最简单的问题上来。那么,作为一名程序员,我们能做什么呢?

  • 创建机器人。获取细节、进行组装、为机器人编程。这不仅涉及传统意义上的机器人,还涉及到所有可以进行编程的设备。比如,智能家居设备。这里有无限的想象空间及可能性。

  • 创建移动应用程序。类似于我们每天在智能手机上使用的那些App。

  • 创建web页面。复杂的应用程序或网站,比如个人博客,等等。这一点在下面会有详细介绍。

  • 等等...

程序员的工作是什么?

下面,我将介绍一下我所做的工作——网络应用程序相关工作。

谈谈“为什么”?

有些人或公司会对网页的创建和维护感兴趣,所有人都可以通过互联网访问这些网页。由于网页可以展示人们在现实世界中所做的业务,因此企业往往也会需要一个自己的业务网站。这样一来,搜索此类业务的人就可以看到他们的网页、阅读有用的信息,并决定是否要为该公司提供的服务付费。

有些企业会在网上销售产品。因此,他们需要一个能够处理客户请求、并销售产品的web网页。

由此看来,创建网页(如果你想的话,也可以创建应用程序)的市场需求是非常巨大的。

企业需要网站,好的!然后呢?

他们可能会联系那些能够帮忙创建网站的公司。我们称它们为数字代理机构。他们具备相关的专业知识和技术,企业需要网站,而此类机构则通过创建所需网站来盈利。

数字代理机构需要程序员来完成这些事情:他们知道该如何构建网站,并最终完成构建。总的来说,就这么简单。

还有一些其他类似的机构,它们通过出售程序员的工作时间(而不是网站)来盈利。其中一些按项目收费,包括程序员的工作、测试、收集需求、管理人员等等。

有的产品公司不出售员工的工作时间,它们依靠打造具有价值的产品来盈利。这些产品本身就已经是一项有利可图(也可能不是)的业务了。

程序员每天都做些什么?

业务侧管理会告诉开发人员他们下一步想要什么。工程师们会讨论计划——将如何实现业务的愿望,需要额外考虑哪些方面,等等。此后,我们就会得到一个“待办列表”,上面包含了某个特定项目的所有任务。每个工程师领一个任务,然后就可以开始工作了。

虽然上述表达简化了程序员每天需要面对的琐碎工作,但也反映了实际工作的大概流程。

任务

如果你是新手的话,一般都会做一些相对简单的任务。经验丰富的前辈同事也都希望你在遇到问题时能多向他们提问。随着你积累的经验越来越多,你会逐渐参与到更复杂的任务中去,相应地也会承担更多的责任。

根据项目的不同,程序员每天的任务也有很大的差异,但大多数任务中都会包含实际的编码工作。而你需要通过特定的方式来完成相应的工作。在处理web应用程序时,程序员分为以下几类:

前端开发人员。当我们打开一个网站时,第一眼看到的就是他们做的东西。那些漂亮的的块、文本、模态框、排列整齐的图像、页面上的动画——都是由他们负责完成的。他们最起码要了解HTML和CSS来设计静态页面。HTML是一种标记语言,可以告诉浏览器把东西放在哪里。例如,我想在网页顶部放置一个导航菜单,然后在下面放两张图片,并在最底部呈现文本“Sergiy的网站”。所有这些都可以转换成HTML,这样浏览器就可以准确地表达你的愿望了。

CSS是一种样式语言,能够赋予原始HTML元素好看的外观。它可以为文本或块设置颜色、大小、宽度、高度、等等。借助HTML和CSS,我们可以创建静态网站。所谓静态,指的是不需要额外逻辑操作,如处理按钮点击、在鼠标双击特定元素时做出反应,等等。

想做程序员却不知从何下手?新手入门信息打包送你!_第1张图片

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、移动应用程序。如果还没确定的话,也没关系。你要做的只是积累更多的经验,然后自然会找到自己的心之所向。

想做程序员却不知从何下手?新手入门信息打包送你!_第2张图片

不管你选择的是哪条路,你都应该开始着手构建一个真正的项目。这里所说的项目并不是指亚马逊快递系统那种大型项目。你编写的任何代码都可以被视为是一个项目。你可以先了解一些基本的理论,比如目标编程语言知识、或者计算机科学的基础知识。如果你暂时还不具备基础知识的话也没关系,先着手去创造一些实际的事物吧。但是,在没有理论基础做支撑的话,我们可能会发现自己并不了解在构建时应该注意些什么。因此,我们应该尽量避免这种情况。

想做程序员却不知从何下手?新手入门信息打包送你!_第3张图片

前端路径

这也取决于你打算做什么。例如,如果你是想为静态网页创建漂亮、美观的设计,那么HTML和CSS就足够了。要想实现这一点,你需要找一本“HTML指南”,然后在每节课后编写一些代码。然后,再找一本“CSS指南”,与HTML结合起来学习。你并不需要学习所有的HTML元素。

、 

之类的就足够起步了。然后,当你在遇到其他问题时,可以求助于谷歌。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 岁程序员的生存秘籍送给你!

你可能感兴趣的:(编程语言,python,java,大数据,web)