你们有没有这种经历?亲戚或者爱人甚至是不做技术的朋友,看到我们屏幕上的小括号{}
,大括号[]
,还有一大堆的技术英文单词private
,public
,function
等等,都会惊叹一句“你写的是什么呀?太可怕了,全是英文看不懂。”或者“做个程序员是不是需要英语很好的呀?太难了!” 其实当真正学习编程和做起程序员来一切并没有那么的可怕,也并不需要英语有多厉害。不信的小伙伴可以问问身边大多数的程序员,问问他们刚开始学编程的时候英语是不是很好,估计得到的大部分答案都是:“没有哈,不是的哈”。
当然,如果你英语比较好,在编程的路上确实是会给你带来一定的优势。我们可以这么去想,会英语的看代码就等同于会是在看一本书一样,函数名,方法名其实都在描述这个代码是在做什么的。自然理解起来的时候就不需要很费劲了。加上学习新的技术和原汁原味的技术时,都会需要看国外的文章和文档,这些基本都是英文。但是不会英语也一样可以学好编程,也一样可以成为一名优秀的程序员。甚至在学编程的路上,你的英语也会有所提升。
其实选择学编程是能改变人生的。可能起初很多人学编程,报了一个编程培训班,为了就是能拿到更高的工资或者有更好的工作环境。最后坚持着坚持着,最后会发现编程还会给我们带来很多个人能力和技能上的提升。
「一」什么是编程?
想开始学习编程或者坚持学习编程,我们首先要知道什么是编程?做编程的开发者是做什么的?这个行业是否合适自己?--- 做为程序员,开发者和编程工程师,对外行人来说我们跟TA们说我们这些职称,基本TA们脑海里都会出现一个在修电脑或者修手机的我们。还会来一句“噢噢,做IT的呀?改天过来帮我看看我的电脑,开不了机了。”
在TA们的脑海里就出现了这么一个画面 🤔:
程序员是什么?
我们用一个能让大家都懂的方式解说程序员做的编程工作到底是什么:
如果现在我们需要一把剑,那我们就会找造剑的工匠。 同等现在我们要做一个手机APP,一个网页系统,一个软件或者一个电脑工具,打造这些的工匠就是程序员。
简单的说“程序员和开发者就是打造软件或者互联网产品的工匠,我们的材料就是全英文的
代码
,我们的工具就是代码编辑器(IDE)
”。
这样说外行人应该就懂程序员,开发者,软件工程师是个什么鬼玩意了。
前端和后端又是什么?
好奇的人还会问,"听说开发还分后端和前端,那后端
和前端
又有区别呢?" --- 好问题呀童鞋,这个真的让人难以解说了。不过不用怕,给大家两例子让0技术基础的TA们都能听的明明白白。
后端解说例子:
后端写的程序就是一个货物仓库中工作人员的指挥部。来仓库找材料的人需要10万个“外科口罩”。这个时候指挥部先找到这个口罩在仓库的具体坐标,然后会发出指令告诉仓库工作人员去到某一个地区的货架,第二排找到这口罩,最后搬过来给到需求方。
转化为技术专业名词:
- 找货物的人 --- 就是调用后端接口拿数据的一方
- 仓库指挥部 --- 后端编写的程序
- 仓库 --- 就是保存资料信息的数据库
- 仓库的货物 --- 就是数据库里面的数据
前端解说例子:
如果后端操控存放货物的仓库,那前端就是建筑师,前端主要的工作是建立店铺和装修店铺,然后从仓库获取货物到店铺中展示。一个店铺中货物必须分类摆放,有条理,好看才会有人买。所以前端还会规整货物,让货物分类摆放,同时让客户容易找到还好看的舒服感,自然就会有更多的客人来店购物。
转化为技术专业名词:
- 店铺 --- 就是前端打造的页面
- 建立店铺和装修的材料 --- 就是前端页面排版
- 店铺中的货物 --- 就是后端给予前端的数据
- 取货 --- 就是前端请求后端获取数据
还有比较常见的两个方向,前端和后端。当然编程还有很多方向,比如“算法工程师”,“运维工程师”,“测试工程师” 等等。这里我就不一一细说了。有需要了解其他的可以在评论区给我留言。
我们需要了解清楚什么是编程,开发者们做的是什么。程序员用编程打造软件产品的工匠,给人类带来更便捷的工具与平台。让我们可以通过手机,电脑加互联网来自动化,系统化,智能化的完成我们的工作或者沟通。甚至可以高效提高很多行业中工作的效率,解决很多繁杂的操作和任务。还可以给我们带来信息快速传播和展示的作用。每个程序员都有一个梦想:“用代码改变生活,用代码改变世界!”
「二」学编程的好处
学习编程其实没有想象中那么难,但是也并非一条容易的道路。在学习编程的过程中最困难的就是动力和坚持。一开始学习的时候我们会很感兴趣,每做出一个小功能后会感到非常有成就感。可是当我们越学越多,越学越难之后我们会开始觉得枯燥无味。一个问题或者一个难题可能都要好几个小时,甚至是一天两天才得以解决。所以不论是我们在学习之前还是在学习中工作中,我们都要有发自内心的热爱和动力。
所以我们需要找到我们学习编程的好处,我们能得到什么,能改变什么。这样我们的毅力和动力才能得以持续维持。我希望通过接下来的分析,能给到感兴趣但是也不是很有动力的童鞋开始学习编程,在学习编程中有点迷茫的童鞋更能坚持下来,更加热爱这一条道路!
1. 拥有把想法转化成应用的魔法
做为一个程序员,最有成就感的一件事情就是能把一些想法,一些有趣的点子通过编程把它们转化为应用。一个可以操作、可以体验和可以帮助很多人的应用。但是如果我们不懂编程,我们就只能找技术来帮助你实现。但是开发成本太昂贵了,最终就选择放弃。
估计大家在这个互联网时代中,每天日复一日的生活中,都会有那么一瞬间觉得 “有那么一个APP,那么一个平台,我们做某一件事就会方便多少,就会简单多少” 。但是我们不懂编程,不懂技术,无法去实现,所以到了最后我们就会与这个很好的想法擦肩而过了。也许当过了几个月后,就会发现有人做出了这么个应用,和你当时想的是一摸一样的,就会开始觉得,“诶,如果我能自己做,现在看到的这个应用就是写上了我的签名,在改变大家生活和人生的人就是我了”。
在现实中,如果要一个想法落实到生产出应用也绝非易事。人在大脑构思出来的想法,要表达出来给到产品经理整理逻辑,转化成原型。然后通过原型还需要UI设计师转化成设计稿,最终到开发者手上再理解一才能真正开始研发。但是多少想法在这个过程中被人与人之间的沟通,传达,理解所被丢失的细节呢?所以最终做出来的产品往往不是完完全全和一开始构思的一摸一样。
其实很多开发者都是在这个研发流水线中的一员,研发部没有了产品,没有UI设计,前端就无法排版,后端就无法研发。不知道大家有没有留意大厂或者是国外的开发者。很多前端都是懂UI,懂设计理念,甚至是两者兼备的。然后后端都是懂前端,起码有前端知识的基础。为什么呢?因为一个想法经过越少的人,就会丢失越少的信息。这样做出来的产品才能与当初想的越贴切。当然,如果研发中心的每个部门的人都是牛人,必然能打造很好的产品的。但是中小型的公司的人员能力参差不齐,在我以前待过的中小型公司的老板都是天天跟着产品,设计和开发的屁股盯着。就怕最终产品走了样。
俗话说的好“如果你想心想事成,最好的方法是自力更生”。也是因为这样我也走上了全栈开发之路。产品,设计,前端,后端和运维都专研了一遍。
当然做为专研一个技术领域的开发人员也能做出很好的产品。比如说博客,个人网站,excel处理程序,春节抢票工具等等。多少这些提高我们工作和生活的产品都是开发者自己在日常生活或者工作中,想避免一些繁杂的事情做出来的工具或者应用。
但是如果我们不懂编程,就只能依赖于别人。“因为懂编程,我们的想象力可以是我们的创造力”
2. 拥有强大的学习能力
编程的世界是一个高速发展和变化的环境,也与星空一样知识是无边无际的。今日的编程实现方式与5年前的来相比,已经是截然不同了。每天每个编程的语言与TA们的框架都在升级迭代中。
我们无法学会所有编程语言或者技术栈,不过我们是可以在某几个编程领域中发光发亮。只要我们坚持,专研,深度学习一门技术,我们必定会变成这一方面的专家。
在编程的世界里,我们会找到很多可以学习和成长的空间。无边无际的知识海洋,就算一门语言我们学到了TA的巅峰境界,我们还可以去突破TA,或者选择再学习多一门语言来提升我们自己的研发能力。所以在这种高速发展的技术领域中,我们的大脑的会被各种技术的知识开阔我们的很多思维。
给大家讲一个我的经历:
我入行编程事业的时候没有现在的前后端分离,后端是需要和前端混编的,而且一开始在中小型企业也没有完善的产品部,设计部,研发部。所以对于前端的知识还是需要懂的。我进入的第一家公司,没有产品经理,没有UI设计师,没有前端工程师,研发部就我一个人。一进入公司项目老大就跟我说,要我一个月做一个物流管理系统(ERP),并且要实现:商品管理,订单管理,进销存管理。然后商品和订单,需要与淘宝,天猫和京东对接上,可以实时同步。从产品的需求整理,沟通到设计和研发都是我一个人在弄。
年少轻狂的我,毕竟是交代下来的工作,那就是一个字“干”!从不懂什么叫ERP,到了解商品管理,多规格SKU,订单状态流,入库出库单到学会对接第三方平台订单。一路过来有无数个不眠夜,无数个在写着写着代码就昏睡过去几分钟的经历。不止需要学懂业务,还需要自己排版,自己提升自己前端的能力。这个过程说长不长,说短不短,一个月我独立完成了商品体系,订单体系,进销存体系,订单同步完成了80%左右。(后面公司招到了更多的开发,最后与4个开发者一起完成了这个系统。随后还做了客户管理系统 --- CRM)
说实话这个过程我有无数遍想过放弃和辞职,但是我出去又有什么本事去更好的公司呢?我当时的技术能力一文不值,去一个好的公司根本就是妄想。咬咬牙齿就继续坚持下来了。
一点都不夸张的说,当时基本每天上班18-20个小时,眯眼就大概2-4个小时。但是事后,我发现自己学习能力,适应能力,抗压能力各方面都得到了飞跃性的提升。在我往后的技术生涯中有了很多帮助。当然我并不建议大家都进入这种玩命的公司来快速学习和成长。毕竟当时的我是被逼无奈。
在我的这段经历出来后,我感觉自己脱胎换骨,对于技术的热爱半点不减,反而发现不停的学习和成长非常重要。过了那么多年后还在学习和成长的路上。
不知不觉在编程的领域中,会发现我们的学习能力会得到不断的提升,因为我们每天都在学习和成长。而我们的未来还有无边无际的知识海洋在等着我们。
3. 编程提升逻辑思维和分析的能力
编程就是用逻辑思考能力把问题分解成一个个小问题,逐个突破。也是用分析能力把功能和任务分解成一个个小任务,然后小步快跑的去快速完成。
逻辑思维能力
在编程中我们会遇到很多问题,并且需要我们一个个的去解决。解决困难,解决问题是做为一个开发者必备的技能。大到技术架构,解决业务场景带来的难度和逻辑复杂度,小到解决系统中的问题和缺陷,使用逻辑思维去排查和修复漏洞。
在每天的工作中开发者都是会面对各种各样的问题和困难,长年累月每一个开发者都会养成解决问题的能手。渐渐的我们会有各式各样解决问题的办法。一个我们经常用的口诀“先思考,后百度,再求助”。(个人推荐用Google,更容易找到精准的答案)
也是因为日常的不断锻炼和思考,让我养成一种逻辑思维来解决问题。每一个问题都会建立一套一套的逻辑思维方式和方法来解决。比如系统中的一个问题出现了,一个资深的开发者,瞬间就可以定位到问题并且给出解决方案。其中最重要的一个点是因为资深开发者长年累月的经验,还有就是熟悉解决问题的排查方法,一套高效快速的方法。
分析能力
作为一名开发者,每天都需要分析需求,功能,难题等等。分析、整理和思考都是每日的家常便饭。
当一个需求到手的时候,开发者需要去分析里面的功能,把功能分解成一个个小块来进行设计,给出对应的实现方案。同时也需要我们去分析里面新增,修改,优化的功能对现有架构,功能和体系存在的影响和难度。最后定制出解决方案或者实现方案。
除了需要分析需求,我们还需要去分析每个功能或者业务的流程和逻辑。比如一个系统中的登陆流程大概就是:
经过编程的长期锻炼,我们的思维会发生改变,遇到每一件事情或者事物,我们都会解刨分析。比如讲到车,我们首先会把车分解成一块块来分析,引擎,轮轴,车胎和油箱等等,然后深度分析每一部分的作用和逻辑,从而明白整体车是怎么运作和构建的。
编程的过程中,会培养我们的逻辑思考能力和分析能力。渐渐的会让我们成为一名先通过深度分析,然后用逻辑思维解决问题的大师。
4. 用自动化程序为我们干活
日常生活中,我们有很多重复的工作,极度的枯燥乏味。但是我们幻想一下,如果编写一个程序可以帮我们自动化的处理掉这些工作,是不是很舒服?这样我们就会有更多的时间思考,或者做更多有意义的事情。
自动化,智能化都是现在科技高速发展时代经常听到的热搜词。目前给我们带来很多生活中方便的应用、系统和工具都是怎么来的呢?其实都是程序员用代码编写出来的。
支付宝、微信、钉钉等这些应用大家都很熟悉吧,基本每天都会用到。其实里面帮我们做了很多繁琐的事情,比如说支付宝帮我们记账,分析出每月我们的支出。微信的语音功能可以自动帮我们转换成文字,让我们不方便打字,或者懒得打字的时候,录一段语音,点个按钮就转换成文字,还自动给我们加上标点符号。钉钉为我们引入了自动蓝牙打卡,不需要天天排队打卡,每个月还会自动生成考勤异常情况,分析出某个人某天缺了打卡或者某天有缺勤需要补一个调休。
这些都是编程为我们日常生活中带来的方便和便捷。让一些需要我们坐下来花时间处理的繁杂事情变得更自动化、简单化和智能化。如果没有支付宝,每天我们还需要带着现金出门,不够现金了,还需要去一趟银行取钱。如果没有微信,我们可能还需要写信,然后出去邮寄才能与远方的朋友联系聊天。如果没有钉钉,每个月考勤情况,还需要我们去人工计算核对时间和缺勤情况。
学会编程不止可以编写改变世界的代码,还能为我们自己日常工作或者生活中编写工具来节省时间
。如果我们学会了Python编写Excel脚本来处理表格,自动填充和获取信息。根据我们每天在电脑的工作行为用脚捕捉写成日报表,甚至自动帮我们提交。自然就可以多出很多的时间来学习和做其他有意义的事情。
5. 拥有高薪的职业
技术行业的薪资相对比其他行业的平均薪资都会高一些。其实每一行都可以到达很高的薪资,每一行都有每一行的辛苦。但是一个永恒不变的定律,一分付出就有多一分收获。编程也是因为有难度,每天都是辛苦的脑力活,所以才会薪资高。
其实程序员工资高也是因为当前是互联网和科技高速发展的时代,所以编程岗位也还处于非常短缺的状态。加上技术一直在发展,技术和互联网相对比其他行业还是属于一个成长期。很多新型的技术和语言每日每夜都在更新迭代。技术行业的岗位也是每年都在增加。从几年前的前端后端,到现在的人工智能开发,甚至到未来的机器人开发。
技术行业的薪资体系,目前来看,我是觉得不是很标准的。这几年来面试的过程中,很多应聘者对自己能力的评估和价值都是有偏差的。但是我觉得相对其他行业,技术活都是凭能力说话,凭能力换来对等的报酬的。只要自己的能力强,技术的知识深度够,实战能力够硬。月入过万都不是梦。
如果你们热爱高效的工作和无限的自我提升空间,大概你们会很喜欢和技术开发人员一起工作。
我们是一群为了产出更有的程序而坚持提升自己,为了产出更好的产品而马不停蹄的提升自己的程序和代码。在这个领域中,会让你们大开眼界,扩大自己的思维瓶颈。每日都会发现各式各样的新鲜事物。能力的提升都会给我们带来对等的薪资提升,是一个越努力越赚钱的行业!
6. 可以是一个有趣的业余爱好
学习编程成为一名开发者,不一定是要作为你朝九晚五的一份工作。可以把编程当成一个我们热爱的爱好,甚至是一份副业。
在我读大学的时候,我并不是一名读计算机专业的学生,当时的我特别热爱玩游戏,也特别喜欢写攻略。有一个公会里面的老大就跟我说,为什么不自己做一个攻略网站或者博客,还可以顺便赚一下广告费。就是这样我开始了自学编程,手把手搭建起自己的网站和博客,从此爱上了编程。
大学期间我还接过很多做网站的外包,做过无数个网站和博客的主题开发。也赚了一些游戏经费和学习经费。到了后面我开始研究开游戏私服,自学了一些游戏开发,开启了游戏私服。
这个过程中,我把编程当成了自己的一个业余爱好,也没有想过今天的我居然成为一名朝九晚五的程序员。回过头想想,编程给我带来了无比的快乐与成就感。作为一名开发者,可以让我们的想象力自由飞翔,实现我们所想,唯一需要的就是我们懂得编写代码, 代码,就能打造出我们心中所想的东西。无论你现在是想写一个网站介绍你自己,写一个博客记录你学习路上的种种,还是写一个无比有趣的小游戏。编程都可以如你所愿!
编程对于任何人都可以是一个有趣的业余爱好,没有门槛。任何人只要有一台电脑,能上网,就可以开始学编程。编程是不受任何的限制。只要你愿意学,有兴趣,有毅力,你都能学会。
7. 充满活力及友善的社区
程序员是我见过最有趣,最可爱,相处起来最轻松舒服的一群人。程序员之间没有过多的勾心斗角,像其他行业团队里面那么多的宫斗剧上演。在我待过的团队中,比较多的都是热爱学习,热爱生活,热爱代码的一群热血青年。
当然,凡事无绝对,都是有好有坏,也会有有一些比较让人恶心的程序员就希望自己每天工作中舒舒服服、一问三不知和一叫三不做的人。好在这些人还是占少数的,相对一二线的城市和有些规模的公司工作,普遍团队中的程序员都是比较好相处,并且在工作中会让我们非常开心有趣。
每一个语言或者框架,都有一群充满热情和活力的社区等着你的到来。比如CSDN,掘金,Segmentfault,Stackoverflow,GitHub等等这些大型的技术社区有很多的热心和热爱技术的开发在维护着这个充满热情的编程世界。如果我们需要帮助,有无数的手会伸出来援助于我们。
在学习编程和技术开发工作中,作为一名程序员,我们并不孤单。我们都是一个团体在一起努力,一起奋斗,一起并肩作战。
还有网上的各路英雄好汉在江湖中奔跑着,随时可以认识到其他的开发者与你共同进步,一起终生学习,热爱编程,热爱生活!
「终」总结
这周我又写了一篇上万字的博文,给想学和在学编程的童鞋们打打气,也把我自己在编程事业中的感触分享给大家。最后我想大声的跟大家说:“对!无论我们当前是多大岁数,不懂英文也好,不懂电脑也好,编程都值得我们花时间和精力去学”。
在这个技术和科技高速发展的时代,不懂编程就像古代中的文盲一样。你永远不知道你是否喜欢一样东西,直到你尝试它。所以对编程有兴趣的,想学编程的,现在就打开你们的电脑,开始投身到技术的海洋吧!在学习编程的你们,坚持再坚持,只要你努力,你坚持,就必定会成功!所有的付出都会得到收获,所有的艰辛都会换来未来的幸福,越努力越幸运,越努力越赚钱。
在编程的路上,有无限的可能,也有无限的空间,只要你热爱它,它也会相应的回报努力的我们!让我们一起终生学习,用代码改变生活,改变世界!