由于工作职位关系,在公司一直做一些技术储备工作。没有实际的开发任务,只是多看一些新东西,万一有需求可以出解决方案。
回顾2016,从前端开发到移动,从算法到机器学习,自然语言处理等,看过的东西很多很杂。

我一直有个疑问,什么才叫技术好?其实技术好,可能是个伪概念。
一门语言,一个方向,大部分人的水平都差不多,只是熟练度,知识广度的问题。
C#,有人可以用极其简单的Linq写出很复杂的功能,有人要使用大段大段的代码来实现相同的功能。
之间的差距就是,前者熟悉Linq,后者不熟悉(熟练度不够)或者根本不知道Linq(广度不够)。
很多情况下,后者如果不是很差劲,后者其实可以通过培训做到和前者相同的事情。

那么,如果技术可以通过培训就能获得提升,那么,老程序员的护城河在哪里?
一个毕业生,通过不断的学习一门语言,大量的练习,就能写出代码了,老程序员的价值在哪?

1.技术整合和全栈技能

可以很负责任的说,老程序员在某个领域的90%的知识,新人可以很快速的掌握。但是新人无法很快速的将所有知识整合起来,灵活使用。
例如,一个抓取网站数据的程序,其实这里牵涉到HTTP协议,HTML和DOM知识,异步和并发,数据存储等问题。
如果这个程序出了问题,老程序员可以快速判断错误的位置和解决方法,新人可能要耗费很多时间。(有些权限,异步的问题,新人可能根本没有概念)
所以,知识储备要有一定的广度。

2.某个领域的深度

这个在数据库领域特别重要。建数据库,建表,查询,这些都是只要肯百度就可以的。
但是,往往资深DBA,思考的是,索引的类型是否正确,索引的字段是否正确,SQL语句是否优化。集群,主从备份的参数是否妥当等等。
(在做MongoCola的时候,我几乎将所有的MongoDB的用户手册看了一遍。MongoDB要真正精通,其实很难的。)
如果你长期操作MySql,Oracle,能够将这些数据库的精髓都学到,变成专家,也是可喜可贺的事情。
(数据优化,参数设定,故障恢复,都是以时薪计算的)

3.观念的改变

新人和老司机,在很多观念上不同。

对于一个新人来说,总觉得程序能做到100%正确,能够看到画面,是很牛逼的事情。
开发一个手机APP,正确排序一堆数据,很不错啊。

其实,真正难的程序,往往是那些不可能做出最优解的问题。也就是所谓的PN问题。
没有最优解,说明这个问题往往是随着规模增大,算法的复制度高的硬件无法承受了。(今年的天池算法比赛的题目就是这样一道NP问题)
在机器学习和自然语言处理领域,更加如此,这些领域都只能求得正确可能性最高的答案。(滴滴出行的大数据比赛,我也参加了)
在加密解密上,包括Hash算法上,工业标准也并非100%要求正确,有些Hash算法,在时间空间上要求很高的前提下,允许百万分之一的错误率的。
例如,爬虫在考虑哪些网址爬过的算法上,往往把网址通过MD5等算法,转换为数字指纹,这个指纹,其实做不到100%正确的。

其实,真正难的程序,往往是那些没有任何界面的库,比如gensim(NLP),scipy(ML),MeCab(日语分词)这样的东西。
这些库没有办法在朋友面前演示,没有好看的界面,但是,这些库踏踏实实是很多项目的基石。(这里没有贬低很多GUI库的意思,Bootstrape这样的皮肤也很重要)

4.多个解决方案和随机应变

新手处理Excel,可能只会VBA。
老手处理Excel,可以用C#操作,可以用NPOI这样的库。可以调用VBA的宏。
很多时候,解决方案有很多,正确的解决方案,最优的解决方案,需要大量的经验。

我的护城河在哪?涉猎很多领域,深耕某个领域

在信息爆炸的时代,没有什么技术壁垒。Python,Nodejs,React,NLP,只要你想研究,资料满天飞。
如果有时间,各种技术最好都能看一下,知道这个技术的使用场景,优点,缺点。这样就可以了。
大部分技术,看一下用户手册,API函数一调就可以跑了。如果没有需求,没有必要去深入学习。
知识丰富之后,你可以快速的制定一个最优的解决方案,以及多个备选方案。
和别人交流的时候,不会被别人忽悠,不会无法理解对方的想法。

但是,如果你立志于在某个领域变成不可或缺的人。就必须从基础上认认真真学习。
例如,机器学习方向,
100%的人,都会调用Python的Package,
95%的人,知道回归,聚类背后的理论知识,
80%的人,知道拉格朗日和对偶算法。
50%的人知道怎么一步步推导公式。
但是再深入下去,如何调整参数,如何活用LDA模型,这样的大牛很少了。
要知道这些,阅读大量的论文,做大量的研究,跑大量的数据,必须这样做,没有捷径。
只有这样的人,才能获得 养兵千日用兵一时 的待遇。平时积累经验,需要的时候,为公司一锤定音。
当然,大牛,有些关键知识,请自行做好保密工作。有些东西说破就不灵了。世道艰险,自我保护不可少。

当然,以上这些有个前提:学习自己喜欢的东西,注意保养自己的身体。
年初在接触React Native这样的东西的时候,我觉得很前卫。等到我学习机器学习,自然语言处理后,我发现,这些才是最前卫的。
可惜园子里面的机器学习氛围不好,很多文章阅读数不过百。再过几年,将是机器学习的天下,大家应该开始转型了。
机器学习,入门难,学好难,但是真的学好了,高薪高待遇容易。

你的护城河在哪?老程序员的一些2016感悟相关推荐

  1. 谷歌老程序员的补丁和中国中年程序员的焦虑,区别到底在哪?

    小编推荐:Fundebug提供JS错误监控.微信小程序错误监控.微信小游戏错误监控,Node.j错误监控和Java错误监控.真的是一个很好用的错误监控费服务,众多大佬公司都在使用. 现年 64 岁的 ...

  2. IT人永远不老,老程序员价值何在?

    作者:acejoy 来自:acejoy.com/2017/12/20/362/ IT人永远不老?做梦,怎么可能.无论你现在是多么风华正茂,青春洋溢,终有成熟.老去的那天. 但是,人的身体可以变老,人的 ...

  3. 老程序员都去哪儿了?

    摆在老程序员们面前有三条路,一是转行,二是继续钻研成为技术大牛,三是转型为管理人员. 我最近采访了十五位30岁以上的老程序员们,在此我想发表下我的观点. 网络上总有这类观点-- 「如果所有的技术都想着 ...

  4. 老程序员的忠告:不要做浮躁的软件工程师

    老程序员的忠告:不要做浮躁的软件工程师: 每天读一遍,思考一下:我是否浮躁? 1.不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么.当你自己想出来再参考别人的提示,就会知道自己和别人思路 ...

  5. 一个老程序员的心里话(转载)

    1.希特勒地堡与cih病毒 99年4月,我来到北京参加研究生复试.复试完了之后就不回去了,我拿着一张光盘,里面刻着我用vb和authorware3.5编的一个cool 3d的教学软件,到处参加招聘会, ...

  6. 程序员为什么老得快_中国程序员工资为什么那么高?老程序员:淘汰速度快,入行成本大...

    在中国,程序员的行业平均工资比一般的传统行业的工资都高,大多数传统行业有自己的职业天花板,不是职位晋升困难,就是工资水平有自己的天花板.而在互联网行业,程序员这个职业这种现象就不是很明显,月薪上万是普 ...

  7. 一个老程序员的30年生涯回顾(译文)

    前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生. 读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感.下面就是这篇文章的翻译. 一个老程序员的30年生涯回顾(译文) 原文网 ...

  8. 码龄超过20年,依然对生活和编程充满激情,这是三位70后“老”程序员的故事

    大数据文摘出品 作者:周素云.张秋玥 加班996,生病ICU. 这是一句最近搅乱了很多程序员平静生活,也让所有的"社畜"认真反思人生的话题.但是,让程序员们真正感到焦虑的其实并不只 ...

  9. 一名 40 岁“老”程序员的反思~

    <本文是国外一位 40 岁"老"程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期.衰竭期较长的知识领域中.译文大意如下.> 我是一名程序员,几个月前刚 ...

最新文章

  1. 五年之内博士会开始内卷吗?
  2. 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))
  3. AVAudioPlayer播放音频
  4. RandomStringUtils工具类
  5. apt-mirror建立本地ubuntu私有源
  6. selenium切换窗口 java_WebDriver(Selenium2) 根据新窗口title切换窗口
  7. 工厂电子产品工艺文件_建智能工厂,人机如何达到最佳组合?
  8. Java8新特性总结 -6.Date/Time API
  9. NumPy 统计方法
  10. 配置 sql server linux,配置SQL Server on Linux(2)
  11. SSM整合(二)(mybatis逆向工程)
  12. pyspark的用法
  13. volatile c语言_C语言系列文章之volatile
  14. 如何用java实现阶乘倒数求和_JAVA 阶乘 的倒数求和public class Jiecheng {public static void main(...
  15. 2014-2015-2 《Java程序设计》课程学生博客列表
  16. 创始人之间应该如何量化分配股权?
  17. Leetcode 500:键盘行
  18. html和css中盒子大小,CSS大小设置实例——盒子模型
  19. 事务的特性——持久性(实现原理)
  20. 最新公布!“中国开发者大调查”第二批中奖名单出炉啦

热门文章

  1. python快递分拣小程序_利用Python开发的ATM小程序
  2. python全栈还是大数据好_青岛PYTHON全栈应用开发班
  3. python外星人入侵游戏run_game报错_《python编程从入门到实践》书中的外星人入侵小游戏报错...
  4. 频谱分析仪维修论坛_是德E4405B频谱分析仪报错故障维修案例-安泰维修
  5. java中,将string 转化成long
  6. Java讲课笔记10:类的封装
  7. win10无线投屏_如何实现win10无线投屏电视?电脑投屏电视的办法介绍
  8. 【英语学习】【Daily English】U03 Leisure Time L01 Did you have a nice weekend?
  9. Intel Skylake (Client) 架构/微架构/流水线 (2) - 前端
  10. textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...