程序员的自我修养-持续演进

我觉得程序员是一个很有意思的职业,从事创造性劳动,不是在学习东西,就是在解决问题!可是有时我们过得也并不轻松,大多数时候总被这样那样的困难、麻烦困扰着!这里是我平时在每次沮丧到成功的实践中的一点心得,我发现许多工作也是有规律和经验的,按照这些经验,总能让自己从紧促的节奏中走出来,获得更多信心和慰藉。希望自己能牢记他们,作为对自己的提示!时常也能根据这些反省一下,我把它们称为程序员的自我修养!

1 工具决定技术层次

工具真的可以改变你对一件事情的看法和层次:

  • 如果你觉得一件事情很难,或许你只是没有找到处理这件事情最好的工具!
  • 专业人士和非专业人士的区别或许只是在于别人会用更多的工具;
  • 工具大幅度提高生产效率,不论是什么行业,工人,农民,码农,演讲家,都是如此;

作为一个码农对于这个概念的理解源于最初自己在使用idea看源码,工具很好很强大,只是多数时候我们不知道有什么工具,或者我们根本不会用. idea的强大就是继承\方法调用都能以非常快速的方式分析出来,而不需要我们手动添加,之前看代码的节奏很慢,看着看着就不知道自己调到哪里去了,这是一种非常蠢的看代码的方式,使用工具的时候轻松轻松解决这些问题.
这里的工具其实存在于很多地方,小的软件类似vim之于linux,git之于版本管理,大的说包括开源的框架spring,各种数据库技术,消息队列框架,分布式框架,容器技术,编排技术,这些无不是因为某个不方便原因,别人开发出来的工具。
解决问题你就要尝试,尝试工具,保持拥抱工具,你会发现也许有一条路,并不那么费劲,也不过如此!

如果你觉得一个事情做起来很困难,请尝试找找工具,如果工具找不到,发现寻找很困难的地方,或许这就是一个我们生活中的上商机,工作进步的引子,学习的一个契机,请抓住!

2 积极主动-适用于任何地方

入职三年,带人做项目已经接触了许多人,从最开始的职场菜鸟到一个独当一面的程序猿,再到别人的导师\项目负责人,接触的人越多,越觉得积极主动的重要性!

  • 大胆的提问 – 也许带你的人就希望你提问,才知道你掌握的怎么样,有没有钻研!
  • 积极主动做事情, 布置给你的工作,别人给你一天,能在半天内搞定是再好不过的,这就是你进步的地方;
  • 想到别人都没有考虑的细节,引人深思,原来这个细节自己也忽视了!

如果能做到这些,想不出众都难!最怕的新人就是你不找他 他永远不找你!遇到问题喜欢自己一个人搞,不去想想应该怎么做更快!

自主学习是很重要的事情,但是这个世界不是所有的事情都适合自主学习的!

业务的东西,没有资料,你学不会,只有多问多思考;

技术的细节,你能自己搜索自己处理就自己处理;

3 每一个你的不明白不方便往往蕴含惊喜-学习和机会

看代码总会有一些点,你觉得特别麻烦,觉得看到这里就不懂,生活中也总有些不方便,让你想去放弃一些事情!

但是往往提高也是从这里开始的,如果你能关注到那些让你不适应不知所措的点,发现其中的原因也许就多了一次学习的机会进步的机会;

  • 小的细节往往是别人匠心独运的地方,不要忽视它记录下来,一个一个搞懂
  • 记录问题,可以暂时放一放,但是一定要花时间去搞懂,这些就是你比别人成长更快的机会!

4 当你记不住东西时候,想想制作一幅图!

发现要学习的东西多了后,记忆力就特别的差,好的新的概念,新的知识,今天看了,明天忘记!

这个时候想想是不是应该换种思维方式记忆,可能你的最后的救命稻草就是图记忆的方式了

画个图,尽量基础细节!然后描述这张图,你会发现你还能记住不少东西的!

5 遇到问题不要硬怼–一定要放一放

我发现有许多问题,都是有很多思维定式的原因在里面!

表面很简单的问题,一旦我们陷入一个思维定式,会发现短期内,这个东西真的很难!!!但是能有多难呢?可能就是一个表达式,括号我们没有看到,语法完全错了;可能是一种本该合理我们却忽略了地情况;甚至有些时候就是一个标点符号少写了!

当我们把目光一直朝着功能看的时候,可能在不通的时候看看周围!

总会有一瞬间,觉得一个东西很棘手,但是你要相信那只是一时的思维蒙蔽了我们的眼睛,这里有两个思路,能很好的解决这些问题

  • 放一放,你需要休息,听听歌,吃个饭,打打球,也许就好了,实在不行睡一晚上!
  • 请教下身边的人,或许别人不懂,但是可能外行人能看到更多我们忽视的细节!
  • 观察问题现象,不要沉迷于你自己实现的功能!

6 问题现象入手

两个解决问题思路:

  • 仔细观察现象
  • 从简化过程开始 - 比如一个排序,原来是10000个出问题,先将数值减少到10个,再继续分析!

7 一定会出问题-所以重视单元测试!

你的代码一定会出问题,所以一定要正式单元测试,正视发现它的流程,通过边缘检查、单元测试、判定空,等方法,让自己的方法好好的经过一轮测试!

这样能最大范围的减少问题!

因为一定会出错,所以一定要重视单元测试!重视每一次异常暴露出来的问题,哪怕只有一点,可是也许就是这一点可能带来更多风险!切记!单元测试,正常流程!异常流程!边界值!期望输出目的输出!多个方面考察自己的代码!你会有更多成功的地方!

8 沟通是存在误差的,所以需要提前明确,也要及时修正

由于每个人的理解能力不能,同样的任务,交给不同的人,可能理解和完成都存在差异!这是很正常的现象,就像香农采样定律一样,信号传递是有损耗的,人也是如此。

  • 如果你是管理者
    请在布置任务的时候,尽可能明确自己的任务,特别是如果你本就对一些细节关键部位,有自己的想法!请一开始就明确,不要中间过程在说!布置任务不是猜谜题,具体的任务,明确的指标,更能推动事情的进展。
    此外,及时跟踪一下进度也是必要的,你要容许信号在传递过程中的损耗和偏差,并及时的修正!
  • 如果你是有心的开发者
    在不明确的时候,一定要事先沟通,你可以做好方案,然后在细节确认!不明白且重要的地方一定要明确!当然你应该也要理解管理者可能没有那么多时间,他们有更多思考的!如果你觉得方案不合适,请一定要先自己准备好备用方案,至少两个,让领导来决策,而不是让他帮你再想一个planB,这里的成长经历也就是我们自己提出两个方案经历,更是学习领导决策的过程,看他和你考虑问题的区别在哪里!

9 底层基础决定上层建筑

见识过一些技术大牛,听过不少课程,我发现牛人都是有许多相通的地方的,比如说基础很好!花哨的东西有很多,分布式,大数据,机器学习,人工智能,但是技术的瞬息万变中,还是蕴藏着许多不变的东西。比如你的数学要好,你的英语要6,比如对操作系统底层原理精通,再比如熟读tcpip原理,在于数据结构与算法!技术潮流可能每年都在变化,但是技术的思想还是那些我们上的基础----高等数学、概率论、复变函数,专业上来说无非就是网络原理、算法导论、计算机系统、操作系统等。
事实上主流的技术方向不过也是在这些基础上玩出来来的新花招,比如redis正是计算机缓存在业务领域的一个借鉴;再比如分布式,不过就是将cpu多核的特性应用在了多个电脑的并行计算;还有消息队列,怎么看它的可靠性保障都和tcp的传输有点像!
技术这条路上你的底层基础决定了你的高度和广度,这是不争的事实!
在此我也希望自己立下自己的flag,作为一个非计算机专业的coder,用未来的两年,好好去研究那些计算机领域、大学里的基础课,先写下来:

  • 加强英语学习,好的资料前言的方向都是外语的!
  • 拾起来数学,特别是高等数学、概率论、数据结构与算法,好好研究一下了;
  • 未来俩年的一些书单:
    • 《算法导论》
    • 《深入理解计算机系统》
    • 《unix网络编程》
    • 《tcp/ip原理》
    • 《深入理解linux内核》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值