文章大纲

  • 程序员的美德
    • 优秀是一种习惯
    • 自我激励
    • 相信自己的直觉,思考的更深入一些
    • 结构化,工程化的思维
  • 忙碌的一年
    • 韭菜的自我修养?
    • 人工智能 之我见
  • 那些年我写过的总结

魏超 说 他很期待老王我的年终总结,我有点激动的不能自已,而且骤然发现2018年是我踏入IT 的第十个年头了,值得大书特书。于是决定将这篇年中总结分成两个部分,在2018年年底,和2019年年初分别发布。上篇主要回顾和总结,下篇用来畅想未来。


程序员的美德

编程珠玑上说,程序员有三大美德:

  • 对数值敏感
  • 实验的欲望
  • 良好的数学功底

从我的IT十年路来看,关于如何成为一名优秀的程序员,我其实可以充当反面教材,看的书不少,写的代码太少。随着投身行业的时间逐渐增长,遇到的bug,身边的大牛,总有一些方面尤其感触良多,印象深刻。下面分享几个今年的感悟。

  • 优秀是一种习惯
  • 自我激励
  • 相信自己的直觉,思考的更深入一些
  • 结构化,工程化的思维

优秀是一种习惯

最早写博客是上了大学以后,每个人内在都有一个渴望被别人了解的社会性需求。我开始是在qq 空间上面写,总是一些剖析自己,畅想未来的套路。后来发现自己其实没什么好剖析的,还是剖析剖析IT相关的技术细节。就开始混迹csdn,那时候论坛还有很多人。

一些具体的程序设计问题,配置问题,在坛子里会有一些大牛悉心的回复。碰的坑多了,久而久之就成了专家。久病成医就是这个道理。但是其实,正规的,工程化的套路不应该是这种样子,拿到一个第三方库,或者插件,我们应该先看文档,然后才下手去做,去实践。

然而国内IT的氛围比较紧张,项目经理经常从需求那边拿到的反馈就是三个字:明天要。 谁有心情仔细钻研这些个开源组件的来龙去脉呢,其实前几天阿里开源的组件圣诞节期间自爆彩蛋不就是这个事情的最好说明么。

所以我认为,优秀的程序员会有一种习惯,总是未雨绸缪的


自我激励

试图引经据典,找到一些前进的方向。

如果翻看我曾经写过的文章,你就会发现我特别喜欢引用名人的话来证明自己的观点,并以此找到一些前进的方向,我总是容易陷入阶段性的迷茫中,迷失了自我和目标

还记得,得到第一个真正的篮球时,我还是个孩子。
我喜欢它在手中的感觉,对它一见倾心。我甚至舍不得拍它或用它,因为不愿破坏那些鹅卵石般的皮革颗粒,还有那些完美的凹槽。
我不想毁了那种奇妙的感觉。 我也喜欢它发出的声响,那种在硬木地板上反弹发出的“砰、砰、砰”。清脆,清晰,易于预测。
那是生命之声,光芒之声。 这正是我热爱篮球、热爱比赛的一部分原因,也是我篮球之道的核心与根基。
因为它们,我才能经受我所能经受的一切,倾注我所能倾注的所有,探索我所能探索的全部。一切都源于孩童时期,第一次听到那让我心醉神迷的“砰,砰,砰”。----《曼巴精神:科比自传》

我们公司有个分析师,是个在美国的印度人,他说当他看到我的流川枫头像,想起来他小时候也是看slamdunk漫画和机器猫龙珠长大的。也知道《直到世界尽头》这首歌,我想说的是你看Kobe自传里面写的这些个场景,难道Kobe也是看了灌篮高手听了WANDS的歌了么?

原来每个人小时候的成长环境都或多或少的一样。而且那些放之四海而皆准的至理名言和人生哲理,既然对别人都有用,那对我也一定可以起作用。


相信自己的直觉,思考的更深入一些

前段时间工作上有个项目,需求收集的比较模糊,开完会之后发邮件,所有人的意见都指向往简单了去做。但是我心里觉的实际上肯定没有这么简单。但是还是为了避免不必要的麻烦,最后沟通总结邮件时候也是按照简单的方式做了总结。
果不其然晚上就被领导们教育了一番。这种总结性的邮件,如果我没有更深入的进行一些思考,那么其他对接的方面怎么可能尽量理解的清楚呢。

所以凡事相信自己的直觉,思考的更深入一些,举个《编程珠玑第二版》的例子来说

什么是用户的真正需求:
一个运筹学者接到任务,设计末座大楼的电梯调度策略,使乘客等待的时间最短,在走访了这座大楼之后,他认识到雇主真正想要解决的问题是,尽量减少乘客的不适( 乘客不喜欢等电梯)。他这样解决问题:在每部电梯附近装上几面镜子。乘客在等电梯时候,可以自我欣赏一下,对电梯速度的抱怨大幅减少了。

他思考的更进一步,发现了用户的真正需求


结构化,工程化的思维

Oracle 如何处理一个 bug

  • 开始处理一个新的 bug 。

  • 花两周的时间试图理解 20 个不同的 flag ,这些 flag 以神秘的方式相互交互,导致这个困境。

  • 再添加一个 flag 来处理新的特殊场景。添加几行代码来检查此 flag ,并解决有问题的情况,规避该 bug 。

  • 将更改提交到包含大约100-200台服务器的测试服务器集群,这些服务器将编译代码,构建新的 Oracle 数据库,并以分布式方式运行数百万个测试。

  • 回家。第二天来上班,继续处理别的 bug 。测试可能需要20-30个小时才能完成。

  • 再回家。再来上班,检查你的集群测试结果。顺利的话,会有大约100个失败的测试。倒霉的话,将有大约1000个失败的测试。随机选择一些测试并试图搞清楚你的假设出了什么问题。或许还需要考虑10多个 flag 才能真正理解 bug 的本质。

  • 再添加一些 flag 以尝试解决问题。再次提交更改以进行测试。再等20-30个小时。

  • 来来回回重复两周,直到你得到了将这些 flag 组合起来的“神秘咒语”。

  • 终有一天,你会成功,不再出现测试失败。

  • 为你的新更改添加100多个测试,以确保下一个不幸接触这段新代码的开发人员永远不会破坏你的修复。

  • 提交最后一轮测试的成果。然后提交以供审核。审查本身可能还需要2周到2个月。所以接下来继续去处理下一个 bug 。

  • 在2周到2个月之后,一切已就绪,代码将最终合并到主分支中。

以上是oracle 处理一个 bug 的过程,据说我最喜欢的数据的库Oracle 12c 有2500w 行c 语言代码。你写过的最大的个人代码库有多少行代码?

所以,当解决复杂问题的时候,个人单打独斗的时代已经离我们远去了。我们需要的是工程化,结构化的思维模式,这样才能面对风云变幻的国际形势立于不败之地。

忙碌的一年




今年是非常忙碌的一年,上半年年还没过完,就被单位忽悠到北京保卫祖国和人民,连续两年我的正月十五都是在北京过的。反正去年年底已经铁了心的要走,索性最后送佛送到西,也算是不留遗憾。怎奈身体的健康下降了太多,人老先老腿。这一点在我身上体现的特别明显。作为一个程序员,一天中有80%时间在电脑跟前坐着,腿部肌肉退化萎缩的厉害。大学时候我可以跑1500米全校第一,没觉得什么。现在只要跑两步就觉的腿很沉。
但是,雪莱说:过去属于死神,未来属于自己。身体容不得半点马虎。我依旧坚信,每天锻炼三十分,健康工作三十年。

年初的时候csdn 博客的访问才130万,今年一年又增加了40万,虽然只写了20多篇博客,还有一些是厚着脸问魏少、黄兄要的(此处特别鸣谢)。今年的技术上,似乎相关spark 和python 以及oracle 多一些。NLP也算是在字词,可视化的初步探索上有了自己的一些积累。后面希望自己将NLP这些东西融会贯通起来。

回首往事,一年的时光荏苒,当我翻看朋友圈,很难想象,年初,我还在北京常驻进行大数据集群的运维,做着不知疲倦的数据搬运工,年底我已经在知盛深入健康保险行业的大数据分析了。
底下这张照片我很喜欢,这是2017年底,赶头一班高铁回家,在高铁上拍到的,北京总是很早的时候就开始堵车

回首这十年,每一年的年终总结,我似乎都会加上忙碌两字。忙可以,但是碌碌无为就不太好了。很多时候,我一直明白,生活在周而复始的阶段性颓废和奋进中挣扎徘徊,就好像北京每天早上都堵车,我们一定要让生活非得这样么?

能不能买个直升机上下班


韭菜的自我修养?

2018年初,准备结婚,我妈叫我把手里的股票基金清空,我看着我逐渐从3000点建仓起来的大概15%的收益,我说等等。我还能多赚点。我和一个老股民有了争论(我妈),她说,瓜娃,落袋为安。

后来,到现在2018年底,我还没卖,抄底还抄在半山腰,我说,真正成了韭菜,真是难以自拔。
有一天无意中看到蚂蚁财富号上不知道谁写的特别有道理的一段话:

牛市之中,不管是买方还是卖方都是你的战友。
而熊市之中,不管是买方还是卖方,都是你的敌人。

什么意思呢?或者说这是为什么呢?

很多人不理解为什么老交易员经常讲:牛市胆子要大,熊市要懂的寂寞,刀枪入库,马放南山。

因为,在牛市里,不管是买方还是卖方,双方都是实质性赚钱。
在熊市里,不管买方还是卖方,二者都是实质性亏钱。


人工智能 之我见

AI时代该学什么?

人工智能时代,程式化的、重复性的、仅靠记忆与练习就可以掌握的技能将是最没有价值的技能,几乎一定可以由机器来完成;反之,那些最能体现人的综合素质的技能,例如,人对于复杂系统的综合分析、决策能力,对于艺术和文化的审美能力和创造性思维,由生活经验及文化熏陶产生的直觉、常识,基于人自身的情感(爱、恨、热情、冷漠等)与他人互动的能力……这些是人工智能时代最有价值,最值得培养、学习的技能。而且,这些技能中,大多数都是因人而异,需要“定制化”教育或培养,不可能从传统的“批量”教育中获取。


那些年我写过的总结

10年IT路,我从大约10年左右开始写年终总结,那时候的文章太矫情,而且透露出与年龄不相符的沉闷,一路走来,我改变了很多,但有一点没有改变,那就是前进的动力。

2013年年中的关键词:生活

  • 我所理解的生活

2013年年底的关键词:温和的坚持,并且傻笑

  • 草稿2013
  • As time goes by

2014年年中的关键词:世间的事大抵如此

  • 吴家坟女子专修学院郭杜校区计算机分院的学年总结

2015年年中的关键词:earning my living,burning my soul

  • 年少成名的我并没有放弃自己,谁敢说她\他文章比我写的好?!,不服来战!

2015年的关键词:少说多做

  • 2016依然会给我惊喜,谢谢

2016年中的关键词:毕业

  • 从前有一个程序员,成天写代码,后来,他屎了。。。

2016年的关键词:努力,奋斗

  • 2016年简直一晃而过

2017年中的关键词:让我们一起为梦想窒息!

  • 我要用生锈的机关枪击穿现在

同期工作一年后对考研的回顾:

  • 考试,一种严格的水平鉴定方法。

2017年底的关键词:不断前进,永不回头

  • 2017,业界最佳实践

2018年农历新年:只要思想不滑坡,办法总比困难多!

  • 因为我梦见了热情的梦

2018年 研究所离职:费解

  • IT从业者国企生存指南

2018年 年中:人生大事

  • 结婚是一件人生大事

2018 初入IT十年(上)----成为一名优秀的程序员相关推荐

  1. 想要成为一名优秀的程序员,这十八招必看

    文章目录 第一招:速学能力 第二招:理解能力 第三招:编程能力 第四招:使用能力 第五招:编码能力 第六招:注释能力 第七招:思维能力 第八招:英语能力 第九招:学习能力 第十招:思考能力 第十一招: ...

  2. 十步让你成为更优秀的程序员

    1. 永远不要复制代码 不惜任何代价避免重复的代码.如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里.重复的代码会导致你的同事在读你的代码时产生困惑.而重复的代码如 ...

  3. 2019 初入IT十年(下)---- 视线所及只剩生活

    文章大纲 视线所及只剩生活 挣钱 迷茫之后 10条建议 那些年我写过的总结 2018 初入IT十年(上)----成为一名优秀的程序员 初入IT十年下,本来打算在2019年初写完,结果拖到了现在.在程序 ...

  4. 一入编码深似海,在达观数据做程序员是怎样一种体验?

    在技术浪潮一波接一波推动人类社会前进的历史进程当中,程序员始终是站在浪尖的群体.2014年起,把每年10月24日(2^10)定义为程序员节.这可能是唯一一个与数字紧密相关的节日--也体现了这个节日的含 ...

  5. 史上最伟大的20位程序员中,遗憾没有中国人

    2019独角兽企业重金招聘Python工程师标准>>> 有些程序员的贡献改变了人类的整个文明进程.他们是智能运维先驱,理应受人尊重,并被后人铭记.不过,业内公认的人类历史上最伟大的2 ...

  6. 为什么世界上一些最好的科学家和程序员,在世人眼里,都有点不太正常,甚至行为混乱...

    为什么世界上一些最好的科学家和程序员,在世人眼里,都有点不太正常,甚至行为混乱?因为:熵.从熵的角度看,如果不改变发展模式,人类无法继续发展.熵是一种解释力极强的理论,许多现象都可以用熵来解释,看上去 ...

  7. 同样是程序员,优秀的程序员能够月入5万甚至50万!,一般的程序员却只能月入5千甚至更低?那么他们差别在哪里呢?

    从以下几点来谈谈差别: 1.思路 编程思路,是系统的计划和设想,是程序员写程序时的条理和线索.优秀的思路背后一定是不断的积累.在熟知编程基础的前提下,优秀的程序员会积累尽可能多的经验,这份经验让他们更 ...

  8. 历史上最伟大的 12 位程序员

    所谓程序员,是指那些能够创造.编写计算机程序的人.不论一个人是什么样的程序员,或多或少,他都在为我们这个社会贡献着什么东西.然而,有些程序员的贡 献却超过了一个普通人一辈子能奉献的力量.这些程序员是先 ...

  9. 怎样才算得上是一名优秀的软件测试工程师呢?

    经常会有小伙伴来问小编:"怎样才算得上是一名优秀的软件测试工程师呢?"其实小编有时也在思考该如何回答,但其实想想优秀的软件测试工程师普遍都有以下几个特点,看看你符不符合? 一.过硬 ...

  10. 盘点:历史上最伟大的12位程序员

    所谓程序员,是指那些能够创造.编写计算机程序的人.不论一个人是什么样的程序员,或多或少,他都在为我们这个社会贡献着什么东西.然而,有些程序员的贡献却超过了一个普通人一辈子能奉献的力量.这些程序员是先驱 ...

最新文章

  1. 天平游码读数例题_量筒、天平经典习题
  2. 奇异值(Singular value decomposition SVD)分解
  3. 不使用GACUtil.exe,如何部署和卸载程序集到GAC中
  4. MyBatis-generator使用,Example缺少分页问题解决
  5. 修复Sonar中常见的Java安全代码冲突
  6. array_column php什么版本可以用,array_column兼容php5.5以下版本
  7. 技术面试问项目难题如何解决的_同轴线如何当网线使用?解决改造项目中难题...
  8. Linux netstat命令详解和使用例子(显示各种网络相关信息)
  9. Python+pandas统计每个学生学习慕课总时长
  10. innodb--聚簇索引真实案列排序问题
  11. composer 安装yii2框架
  12. 【无人机学习】无人机基础知识
  13. oracle事务之oracle读一致性
  14. 若依系统用户权限模型分析
  15. 教学|3DsMAX怎么样制作环境贴图,3D建模步骤教程
  16. win10平板读写TF卡异常的解决记录
  17. ip route命令
  18. open-falcon 启动失败
  19. 微信小程序控制开关 控制io口 控制灯
  20. 全国计算机二级考试各个科目使用的软件 在这里

热门文章

  1. 2022年java学什么?java怎么学?
  2. 人工智能系列之一人工智能基本流程
  3. 计算机格式按键在哪儿,键盘开关按键在哪里
  4. 华夏联盟社会工程技术学习
  5. native8081端口 react_教你轻松修改React Native端口(如何同时运行多个React Native、8081端口占用问题)...
  6. go语言 mysql时间对比_go时间比较 - Go语言中文网 - Golang中文社区
  7. VB中Array函数
  8. 通过Unity预编译文件smcs.rsp文件添加预编译命令
  9. 如何运用SWOT分析法
  10. html花瓣特效代码,网页上漂浮的花瓣