继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

程序员的生财(生存)之道

2019-09-19 21:38:026371浏览

NavCat

1实战 · 4手记 · 5推荐
TA的实战

我是程序员,曾经我跟大家一样,我也有很多的疑惑:

譬如:

怎样系统的学习Python

如何提升自己的编程水平?

如何进阶,升级到下一个阶层?

未来的技术趋势都有哪些趋势?

http://img4.mukewang.com/5d8383c50001e85205210534.jpg


在这些问题里,其实包含了你整个职业生涯的绝大部分,今天,我们就一起来探讨一下,我把我个人的一些经验、一些感悟、一些思考分享给大家,希望对大家有所帮助和启发。

第一部分:背景及现状分析

我们先来分析一下,前面这几个问题提出的人当前的所处的职业时期:

第一个问题:怎样系统的学习Python?应该是Python刚入门,正在学习,不知道怎么去学

第二个问题:如何提升自己的编程水平?应该是Python的从业者,初级,能写代码,能解决工作中的问题,但解决问题不是很顺畅,不能像大牛一样游刃有余,渴望提高

第三个问题:如何进阶,升级到下一个阶层?可能已经是Python中级开发了,至少2年以上的工作经验,职业遇到了瓶颈,想涨工资

第四个问题:未来的技术趋势都有哪些趋势?提这个问题的可能是想入行的同学、也可能是有一定经验的同学、还有可能是架构师、也有可能是技术经理


如果你也有这些疑惑,我要恭喜你,你是一个聪明人,你是一个求上进的人,你适合当程序员。

http://img.mukewang.com/5d8383d900018b9502250240.jpg


接下来,我们看看如何做好本职工作,先成为一名合格的程序员,先来看看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%的人在写代码。


第二部分 生存之道

此时该聊聊你的梦想(职业规划)了。人要有梦想,没有梦想,跟咸鱼有什么区别?那么,你的梦想是什么?

像我的梦想,可能跟大多数人一样:就是不上班,哈哈哈(开个玩笑)。

http://img2.mukewang.com/5d8383ec0001f12d03000300.jpg


那么,他们为什么不写代码了?不写代码的那些人都干啥去了呢?

不写代码的原因主要有如下几点:

  1. 升职了,升职为架构师、技术经理、CTO,不需要全职写代码了

  2. 找到了真爱(自己喜欢的、适合自己的职业),自愿转行

  3. 年纪大了,身体吃不消了,学不动了,写不了了,或者是不想写了,被迫转行

  4. 从公司的层面,用新人比你更划算,被边缘化,迫于生计,被迫转行


http://img1.mukewang.com/5d8383f60001144a03790257.jpg


无论是升职了、自愿转行了、还是被迫转行,这里我要提醒大家,一定要有危机感。升职了,也有可能被替换,哪个行业都有竞争,有人的地方就有竞争。所以,做好准备吧!

这里的准备,主要有两点:

(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.要有危机感,我不确定自己以后是否会创业,但是我希望哪天因为各种原因被公司辞退、或是其他原因不能上班了,我还有第二职业,我一样过得很好!

http://img3.mukewang.com/5d83840400013dcc04890411.jpg

谢谢大家

···············

欢迎关注课程:

Python操作三大主流数据库

手把手教你把Python应用到实际开发 不再空谈语法


打开App,阅读手记
43人推荐
发表评论
随时随地看视频慕课网APP

热门评论

讲得很实效啊,很不错!!

非常好 程序员必须要有的能力 另外我看你里边说到高级工程师 第一条是分布式 高并发 据我所知这不是python擅长的

谢谢,我明白了自己要怎么做了

查看全部评论