写在前面:本文不比较谁是最好的语言?仅仅是一个python为主的码农的所思所想.以及准备押宝golang.
-
python工作现状
- 初级
这个阶段很容易,找个活人,看会语法,都能写python.一般也就是web开发,比如django, flask, tornado之类,写的好点的用异步,协程,写的差的同步,线程.同时配合系统业务,使用周边扩展包,比如redis, mysqldb, memcache等等.倒不是瞧不起这块开发,鄙人也是从这块做起,django框架东西也确实不少,框架内高级用法与特性看看文档,活人也都能理解,毕竟框架内的东西你只需要看文档知道,理解,运用就行,不需要你实现.一两年左右你就会感觉,没有新东西进入大脑,满满的都是业务,这个时候就是你该改变了.
- 中级
异步,协程玩的很溜,大几万QPS的系统,轻车熟路,毫无压力.有一定系统设计能力,学会系统分层,异步解耦,分布式等等.celery, gevent已经烂熟于心,运用得当.kafka,storm,habse,mongo等等周边技术也都了解到了.这个阶段,基本上重点放在系统设计上,可扩展性,高可用,关注的点已经不在语言层面,毕竟这个阶段写任何代码已经不具难度,更多的视野拓宽,了解更多开源项目,系统架构.即使不用任何框架,写裸脚本,也能写的很优雅高效.这样持续一两年左右,又会发现,python好多扩展包都了解了了,linux系统也有所涉猎,常规业务开发已经没有挑战,也了解整个行业现状.这个时候就又该改变了.
- 高级
食物链的顶端,往往从事着大数据,机器学习等等门槛稍微高点的工作.常规数据分析能力和比较强悍的数学基础是必备的,numpy, pandas, ELK, scikit-learn, tensorflow之类必须玩的熟,可惜鄙人数学是体育老师教的.想入机器学习的门,都感觉费力啊.有机器学习的师傅愿意带,留言或私信,先行谢过
一句话表示: web开发 --> 大型系统开发 --> 大数据/机器学习
- 初级
-
与其他语言比较
- 大型业务系统方向
这个不用说,拿大腿想都知道,目前是java的主导地位,大部分公司核心服务都是Java.用python为主的也就豆瓣,知乎等.而很多公司都崇拜大公司光环,找几个BAT出身的就毫不犹豫清一色换Java,多数公司python开发不会是主导地位,饿不死,吃不饱的尴尬处境 - 游戏方向
游戏主要也不是python,主要是C++, lua等高性能语言,当然python的gevent也有一席之地,反正份额很小 - 运维 && 安全方向
这两个归为一类,因为更多的不是python开发能力,而是运维能力和安全能力,python只是辅助工具.形象的说,运维和安全能力是必要的基础,python只是可有可无的加分项 - 凶猛的黑马
golang无疑是众多语言中的黑马,强悍的性能,谷歌的背景,目前不少高并发的后端服务都用这玩意了,比如滴滴,阿里,百度都不少岗位放出来了.甚至很多创业公司,都十分冒进,直接采用生态并不丰富的golang开发,可以肯定的是golang接下来几年份额会迅速扩大,golang职位相比其他语言,同等级别薪资会高一些,毕竟物以稀为贵.
- 大型业务系统方向
-
厚积薄发
虽然码农的竞争力不是看谁会的语言多,但是毕竟大多数码农都是普普通通的,不是那种深入钻研,在某方面扬名一方的高端人士.普通小码农,还是应该至少一门主语言,到精通程度,随便来个活,不需要很费力就能搞定,这是你谋生的基础.然后就是选择一门副语言,用于备不时之需和提高自身额外竞争力.比如09年以前,php那么屌,随着安卓爆发,Java在国内(特别是阿里系)基本爆发态势,那么再过几年会不会有哪门语言像Java一样再度爆发呢?谁也说不准,但是就像赌博,总得买一个.鄙人就买golang,押宝它了.为何不押Java,因为Java人太多了,遍地都是,还是物以稀为贵,副语言,毕竟不如主语言精通,而竞争者又那么多,你几乎没戏.想要Java有竞争力,那Java就成了你的主语言,不是鄙人要谈的话题,转行另说.golang生态不太成熟,入门的包袱小,不像Java,不会个三大框架,都不好意思开口.更重要的是,目前人少,人少意味着,不那么牛,也能有竞争力,因为没得选.另外,岗位数量也在迅速变多.14年时,某招聘网(不吐露了,避免打广告嫌疑),golang职位,不到一页,只有滴滴看的入眼,其他公司都没听过.现在至少有3到5页左右啦,看的入眼的公司也有五六家了,年薪中位数也在30w左右.
从现在起,坚持每周写一个golang小例子,工作之余,golang学起来,同时多学习系统架构设计.
目标: golang + python双主开发,搬砖不易,吃饱继续