我是程序员,曾经我跟大家一样,我也有很多的疑惑:
譬如:
怎样系统的学习Python?
如何提升自己的编程水平?
如何进阶,升级到下一个阶层?
未来的技术趋势都有哪些趋势?
在这些问题里,其实包含了你整个职业生涯的绝大部分,今天,我们就一起来探讨一下,我把我个人的一些经验、一些感悟、一些思考分享给大家,希望对大家有所帮助和启发。
我们先来分析一下,前面这几个问题提出的人当前的所处的职业时期:
第一个问题:怎样系统的学习Python?应该是Python刚入门,正在学习,不知道怎么去学
第二个问题:如何提升自己的编程水平?应该是Python的从业者,初级,能写代码,能解决工作中的问题,但解决问题不是很顺畅,不能像大牛一样游刃有余,渴望提高
第三个问题:如何进阶,升级到下一个阶层?可能已经是Python中级开发了,至少2年以上的工作经验,职业遇到了瓶颈,想涨工资
第四个问题:未来的技术趋势都有哪些趋势?提这个问题的可能是想入行的同学、也可能是有一定经验的同学、还有可能是架构师、也有可能是技术经理
如果你也有这些疑惑,我要恭喜你,你是一个聪明人,你是一个求上进的人,你适合当程序员。
接下来,我们看看如何做好本职工作,先成为一名合格的程序员,先来看看python的招聘需求,没有一个明确的标准,我稍稍提炼了一下:
初级python开发工程师(在指导下能干活):
(1)熟练掌握python语言的基本语法、常用的python标准库
(2)熟练使用某某框架或者是库(Django、Flask、Numpy、Scrapy、Tensorflow等),对应的职业有web开发工程师、爬虫工程师、数据分析、人工智能开发等
(3)熟练使用MySQL/Redis/MongoDB等常用数据库或缓存的一种
(4)一年以上的工作经验
(5)专业要求,计算机本科及以上优先考虑
中级python开发工程师(能独立干活,具备独立开发能力):
(1)基础扎实,python语法、标准库这些要非常熟练,甚至是精通,计算机基础知识(网络、协议等)
(2)框架的使用非常熟练,2年以上的实际使用经验,有一些优化技巧、解决重大问题及需求的场景
(3)熟悉工作流程,如:使用Git/SVN进行代码管理、版本管理,使用Jenkins等CI工具
(4)3-5年行业工作经验(如:电商行业、在线教育行业、SAAS等)
(5)附带一些周边技能:Linux操作系统、数据库使用及优化
高级python开发工程师(能指导他人干活,解决技术难点):
(1)要有一定的架构设计能力,解决过大流量、高并发、高可用分布式架构设计等。
(2)精通python,精通相关框架,数据库,Linux等
(3)善于沟通与团队协作,解决问题的能力强
(4)5年以上的工作经验,有团队管理(小组长、负责人)经验
(5)专业要求,计算机本科(甚至是统招、985、211)及以上
看了这些招聘的要求,都离不开python的基础知识,那么如何系统的学习好python呢?给大家提几点建议:
第一个是学习方向,相关的脑图网上很多,简单列一下:
(1)python语法、标准库这些是入门必备
(2)数据库、操作系统、网络知识,需要循序渐进,不断夯实
(3)框架的使用,框架的优化调优,层层深入
(4)周边知识、扩充视野:包括:前端领域、客户端领域等都要有所了解
第二个是学习方法论,也就是如何快速的掌握一门语言、一种框架的使用:
(1)注重基础。前面的基础知识一定要给夯实了(上面的1-2点)
(2)多去实践。切勿眼高手低,哪怕是很简单的功能,一定要动手。
(3)勤于思考。都是在思考和总结中成长的。写完了,写好了吗?写好了能再优化吗?优化的方式有多种吗?每次写完代码,都问问自己这几个问题,再想,再改,查漏补缺,慢慢你就成长了,慢慢的代码就精炼了,所谓的编程思想,你终究会有你的思想。
(4)保持持续学习。新东西、新框架层出不穷,一定要做好持续学习的准备。
讲完了,但是....
你真的准备当一辈子程序员吗?你真的能当一辈子的程序员吗?
我的答案是:能!概率极少!但是我希望你到了60岁还在写代码,纯粹是出于爱好,而不是迫于生计。
为什么这么说呢?不信你可以看看你的朋友圈,同事圈,计算机专业的同行们,学长,学姐们,他们现在还有多少人的职业是程序员。
我的同班同学毕业的统计,同学们可以参考一下。毕业第一年,80%的人在写代码,毕业第三年,50%的人在写代码,毕业第五年,30%的人在写代码,毕业第八年10%的人在写代码。
此时该聊聊你的梦想(职业规划)了。人要有梦想,没有梦想,跟咸鱼有什么区别?那么,你的梦想是什么?
像我的梦想,可能跟大多数人一样:就是不上班,哈哈哈(开个玩笑)。
那么,他们为什么不写代码了?不写代码的那些人都干啥去了呢?
不写代码的原因主要有如下几点:
升职了,升职为架构师、技术经理、CTO,不需要全职写代码了
找到了真爱(自己喜欢的、适合自己的职业),自愿转行
年纪大了,身体吃不消了,学不动了,写不了了,或者是不想写了,被迫转行
从公司的层面,用新人比你更划算,被边缘化,迫于生计,被迫转行
无论是升职了、自愿转行了、还是被迫转行,这里我要提醒大家,一定要有危机感。升职了,也有可能被替换,哪个行业都有竞争,有人的地方就有竞争。所以,做好准备吧!
这里的准备,主要有两点:
(1)分清楚你的职业和事业。
上班干活是你的工作,养家糊口,基本的生活保障,这是生存之道。
公司是利益的共同体,别想着在公司养老,老板说“公司就是你的家”,那是鼓励你加班,压榨你的剩余价值,当哪天你已经没有价值了,你被开除的可能性就更大。
所以要把业余的时间利用起来,放在你的事业上,提升自我也好,做其它有意义的事情也好,逐步的思考,让你的事业产生价值,创造价值,甚至超越你的工资,这是生财之道。
(2)保持空杯心态。
就像你刚入行一样,抱着什么都不懂的心态去学习、去思考。这是做程序员的长处,你的学习能力、你的逻辑推理能力、你的学习成长方法论,这些是通用的。
讲了这么多,我们来总结一下:对于我们程序员,要先生存,再生财。
我们接下来从职业规划的角度来看看如何生存。
那些不写代码的人都干嘛去了呢?
进化之路(1):纯技术路线
初级程序员 - 中级程序员 - 高级程序员 - 技术专家 /架构师
初级程序员 - 中/高级程序员 - 初级前端 - 中级前端-高级前端-前端架构师
初级/中/高级程序员 - 测试(QA)
初级/中/高级程序员 - 运维维
初级/中/高级程序员 - DBA
进化之路(2):管理路线
初级程序员 - 中级程序员 - 高级程序员 - 技术经理 - CTO
初级程序员 - 中级程序员 - 项目经理
进化之路(3):产品路线
初级程序员 - 中级/高级程序员 - 产品经理 - 高级产品经理 - 产品总监
进化之路(4):自主创业
初级/中级/高级程序员 - 创业
李彦宏、雷军、周鸿祎、马化腾、张小龙这些都是技术出生。
当然还有很多转行路线,譬如:程序员出来开餐厅、做快递的,数不胜数。
当然,混职场的,咱们程序员,要学会自保,准确的来说就是不要做“背锅侠”,这里我就不展开讲了。
作为程序员,如何生财?这里的生财不是理财,理财讲究的是“开源”和“节流”,开源是指增加收入的来源,节流是指控制支出。我们这里讲的生财是指“开源”的一部分,是指你的第二份收入。除了工资之外,我们也要赚点外快,但是有个前提。
前提是:你要把你的第一职业做好了,职位坐稳妥了再去搞第二份职业。别工作没做好被开除了,说是我跟大家说的,这个锅我不背。
第二份职业赚钱的方式有很多,我们一起来看看,从我们做程序员的角度,一起来看看:
(1)接外包赚钱
靠你的熟人,靠朋友,去一些外包平台(猪八戒网、实现网、开源中国)等等这些平台,接一些私活
(2)知识付费
知识付费的就有很多了,譬如:
写文章:文章写得好,去投稿赚稿费;去开公众号,赚广告费;去写专栏、出书、积累声望,打造个人IP,赚稿费
教学:兼职助教、讲师,收入可观
(3)横向发展,做产品。瞄准一个行业、一个社会群里,深耕细作。有一个非常成功的例子,张小龙。从Foxmail到微信。从技术,慢慢开发产品,思考产品、思考用户体验、挖掘用户需求。到最后成功搞出了微信。
有同学会问:我哪能有小龙哥那么厉害。我告诉大家,你只要在一个行业里,一个领域里,坚持思考,不断的迭代,只要方向不错,时间点对了,一定能搞出点成果来。
我有一个朋友,也算是同学。就瞄准了高中生这个群里,做了一类型的刷题、知识付费的安卓APP,一个月单靠广告费就破5w了。
(4)销售、分销类。说白了就是做微商。微商可大可小,不要小看它。做的人多,做得好的人少,不信你可以看看你的朋友圈,持续做微商1年以上的有几个,如果TA能坚持3年,我相信他一定尝到了甜头。
那么作为程序员,我们如何做微商呢?朋友圈轰炸吗?当然不是。
这里可以跟大家分享一些方法,其实很简单:导流-> 沉淀 ->转化。今年很流行一个词语,叫做“私域流量”。在互联网时代,只要有流量,就有N种变现的途径。流量是什么?就是日活(日活跃用户)、月活(月活跃用户)。你通过写文章(通常指干货+软文),通过各个渠道(微博、博客、知乎问答)等导流到你的个人微信公众号,或者是你自己的互联网产品,在这些地方变现。
变现的方式就超级多了,最常见的就是广告费。
这么多赚钱的小窍门,看起来都有门槛,我该如何下手呢?
很简单,利用我们程序员所特有的一点,自学能力。自学能力不行都干不了程序员。所以接下来,我们通过刚刚举的这些例子,如何来学:
(1)先来看看接外包,接外包是你想接就能能接的吗?当然不是。能力很重要。通常一个外包需求都涵盖了好多方面的内容。最常见的:做个网站、做个用户管理、做个分销系统、小程序等等。
大家想想,如果你要做一个这样的东西,就拿最简单的企业官网来说,你要怎样实现呢?
方式有两种:
第一,合作共赢。在我个人的朋友圈子里,我是顶天立地的python后台开发,从数据库设计、服务器运维、代码编写精通得很。我的朋友老张前端精英,从P图到实现,一条龙搞定。我的朋友小黑,商务小能手,谈合作、谈需求,战无不胜。
大家看,这里面简单的一句话,涵盖了不同的领域,让专业的人来做专业的事,没有合作就不能共赢。当然,我们要学会合作,要学会整合周围的资源。整合能力也是一种能力,当你玩得很6了,离自己开公司,自己做CEO也不远了。
第二,一个人战斗,我是全栈。所需的能力,我就不说了,就是上面第一点列到的那些。那么,问题来了,我怎样才能具备这些能力?
这个其实不难,取决于你平时的积累,取决于你的第一职业。你没有这样的能力,你周围的人一定有,“三人行必有我师”嘛,所以要有学习能力,还需要有空杯心态。多跟其他行业的人交流,多学习。
说到这里,新的问题来了。都说隔行如隔山,我跟商务、跟销售都不在同一个频道,怎么聊?这其实取决于你的知识面。所以问题又回到了学习上,这里我跟大家分享一下我是怎么学习的:
(1)工作不是单纯的写代码,还要思考业务。从你所做的需求去思考,譬如:做电商行业,一定有很多专业名词吧?SKU是什么,SPU是什么?这些跟技术无关,遇到一个新的东西,要想办法搞懂,并且记录下来。如何记录?推荐印象笔记、有道云笔记,不瞒大家说,我在印象笔记已经积累了上千篇内容了,涵盖了python、java、php、前端、数据库、安卓、大数据、Linux、树莓派、金融、理财、运维、财务等等不同的领域。
(2)做事情要有条理,分主次,注重效率。这是很多人容易忽视的一个问题,上班嘛,拿点死工资,能少做尽量少做。千万别这样!一定要想着,多去做,高效的做。做过的内容,熟练的内容给别人做。自己去尝试新的东西。这样慢慢的,知识面就广了。另外一点,分主次也很重要,其实就是做好时间管理,关于时间管理有很多书籍,同学可以去系统的学一下。为什么说这个很重要呢?
举个例子:我有个下属,周一来上班,我跟它说,这周你的主要工作是以下这5件事情,其中有一件比较难搞,花费时间较长,balalalala, 跟他布置完任务,他也明白了,去做了。到了周五了,该看结果了,问他,做得怎么样了?回答说:一件也没完成。为什么没完成?第一件事情比较难,卡了一个星期。好了,我跟他说,周末来加班搞定,先把容易的搞定。
所以当大家接到很多任务的时候,一定要注意先给这些任务分类,先按照任务难易程度分一下,再按照 “重要-紧急” 的程度划分一下,先把重要且紧急的任务先给完成了。当这个技能你运用得很熟练之后,离技术经理、项目经理,这些偏管理类的职位又近了。
(3)重视沟通、多去沟通。解决问题的方式有很多,不一定都要靠写代码,砍掉需求也是解决问题的一种方式。沟通,是大多数程序员的短板。很多程序员因为不善于表达,不善于沟通,无法升级到管理层的职位(譬如:小组长之类的)。所以一定要抓住机会,甚至是创造机会,去锻炼自己的沟通和表达。譬如:组织技术分享啊、自己多去讲、多去表达、讲得好不好,让别人跟你提下意见,升级自己的软实力。有一些开发需求,你要想办弄懂,为什么要这么做,这么做有什么好处?我还有没有其它方案?多去思考,多去沟通。当你能熟练运用了这个技能,离商务这些类型职位又近了不少。
(4)积极主动,不放过任何一个可以锻炼的机会。哪怕是做一些与写代码无关的事情。积极主动跟你的领导搞好关系,主动汇报工作,多跟领导讨论问题,将自己的部分做完了,多去主动为领导“要任务”,让领导信任你,会为你未来减少很多不必要的麻烦,也会为自己争取更多的核心项目的机会。
(5)带着目的入职,带着收获离开。进入一家公司,一定要想清楚:我进来除了拿工资,还期望有哪些收获,是能力的提升?还是个人履历更具亮点?。譬如:你进入了一家电商公司,你是不是应该要想清楚除了技术本职工作之外,还需要了解做电商的流程,电商是如何运作的?一单能赚多少钱?公司是如何投入的?公司是如何做供应商的管理的?如果我都弄清楚了,我能不能做?这些问题搞懂了,都摸透了,公司内部出现问题,你甚至比老板还清楚。思考得多了,就去找机会验证,在公司学习,锻炼,提升你的能力。说不定哪天你就可以单干了。
讲了这么多,不知道对大家有无帮助?总结一下:
1.要有目标,要做长远的规划,如果还没有想清楚,可能是你的知识面还不够,多去学习、积累和思考。
2.学习很重要,自学能力更重要,要掌握学习的技巧和方法,不断的提升自己,无论是履历还是学历。
3.要有危机感,我不确定自己以后是否会创业,但是我希望哪天因为各种原因被公司辞退、或是其他原因不能上班了,我还有第二职业,我一样过得很好!
谢谢大家
···············
欢迎关注课程:
热门评论
讲得很实效啊,很不错!!
非常好 程序员必须要有的能力 另外我看你里边说到高级工程师 第一条是分布式 高并发 据我所知这不是python擅长的
谢谢,我明白了自己要怎么做了