什么是务实

务实程序员他们总是在面临问题时,透过问题看到本质,从具体的场景出发,从大局着想,了解整个问题的来龙去脉,他们会对自己的行为负责,在项目面临问题时,他们不会撒手不管或者任由风险一步步扩大直至无法维护。

大多数人都不是务实的程序员,因为成为务实的程序员并不满足 短期的利益,需要长期的打磨和持续不断的学习、思考反思。大多数人不是务实的程序员的原因只有一个:惰性使然

程序员是有戾气的,许多人向我抱怨

  • 工作很久了,年龄也比较大了,感觉工作这些年以来在技术方向上没什么提升

对这些人我有话说:没有及时反思,可能也是由于工作一直很忙,没有停下来静心思考。因为我相信任何有时间思考的程序员,都不会有这种想法。善于反思自己你会及时调整最近的状态,系统化的学习,提高自己的核心竞争力,让自己成为公司不可轻易替代的人才。

  • 整天 CRUD,项目技术栈用的比较老旧,想要接触新项目,想要去互联网

对这些人我有话说:整天 CRUD 不是你找理由的根本!CRUD 的业余时间完全有时间提升自己!我也是 CRUD,但我不是一个 CRUD 程序员!千万不要给自己扣各种 CRUD 的帽子。项目技术栈用的比较老旧,我想说,计算机世界发展了 60 多年到现在,仍然只能识别 0 和 1 ,要专注于不变的根本。如果你学完操作系统,你就知道软件最终离不开操作系统,你就知道管程是怎么回事,操作系统实现不同调度算法的抉择时什么。我曾经说我喜欢技术,想要接触新的技术栈,当我被问及你知道哪些 hibernate 思想到现在仍然流行,mybatis 哪些思想仍然很老旧的时候,你就会发现,技术的新潮只是一时的,没有永远不过时的技术!我听很多前辈讲起,在零几年的时候谁说自己进了互联网那完全是等着被人嘲笑的!为什么互联网现在流行?因为它符合我们大众的诉求!无现金支付,工作之余的放松,饿了就不想自己去买饭,实体购物又麻烦而且还要化解和各种店员的尴尬!!!但是互联网是无法落地的,在发展到一定规模和平台后,互联网也是最重要被淘汰的!而硬件、芯片、通信这些才是永远新潮的技术,只不过无法获取眼前的 feedback,很多高素质人才也不想从事罢了!

  • 我应该学哪些技术

对这些人我有话说:这个问题本身就没有意义!没有人能够指导你学哪些技术!问这句话的目的就是想走捷径,但是学习是没有捷径的!学你想学的,学和你工作相关的,学能够让你提升核心竞争力的!如果非要让我说出要学什么话,我建议学基础,学基础,学基础,基础就是计算机组成原理、操作系统、网络、编译原理

针对上面这些人,我认为他们只是难以接受改变,我认为这类人是 煮熟的青蛙。这个故事你一定听说过,它说的就是把青蛙放在慢慢加热的锅炉里面,刚开始青蛙感觉温度很舒适,随着慢慢加热,青蛙已经无力跳出锅炉了!

而另外一种人是 把青蛙仍在滚烫的锅炉里 的人,它肯定想尽办法跳出来,这类人会想尽一切办法克服困难。

不要给自己的人生设限

李小龙曾经说过:我活着不是为了满足你的期望,正如你也不是因为我的期望

说的丧一点就是 诸君看我多装逼,我料诸君应如是

软件开发行业绝对是最吃香的行业,因为我们收入颇丰,因为我们可以选择我们想要的工作,我们可以选择办公地点,我们可以实现财务自由,但这些前提是你要有能力。

为什么有人喜欢抱怨呢?因为他们不曾想着改变,Martin Fowler 说过 你可以去改变组织,或者让自己换一个组织,总的来说,你是自由的,你可以做你想做的。

不知道你听过 墨菲定律 没有?最简单的表达形式是越怕出事,越会出事,拿我们老祖宗的话就是 怕什么,来什么,但是在软件开发中,出现问题是再正常不过的事情了,就算你有完善的需求、设计文档,完备的自动化测试流程,多轮测试迭代,还是会出现问题,推迟交付,未曾预料的问题的出现。

所以,不要惧怕问题,因为问题任何时刻都会出现,当问题出现时,我们应该依靠我们的专业性去解决问题,我们犯了错误要勇于承认,我们必须坦诚。

勇于承担责任,不要把问题归咎于别人或者其他事情上,也不要寻找藉口,不要把问题归功于环境、编程语言、时间或者同事,这些因素可能影响你,但不是让你找的借口

设想一下,比如银行职员、超市售货员、汽车修理工搪塞或者敷衍你的时候,你是什么反应?是不是恨不得想他了他们的门店?你会如何看待他们的公司?那如果是你呢?你的上司或者甲方会怎么看你?

破窗效应

破窗效应说的是,如何把一座富丽堂皇的别墅变成一片废墟?也许你只需要一扇破窗,这就是破窗效应的威力。

那么为什么破窗效应的威力这么强大呢?一扇破窗,如果一段时间不去修理和修复,别墅中的主人就会潜移默化产生一种这座别墅很老旧的想法,久而久之更多的窗户也慢慢积满灰尘,不去打理,直到整个别墅成为废墟。

拿到软件开发中就是,如果一扇破窗(糟糕的设计、错误的决定、没有注释的代码,混乱的逻辑)不去修理,慢慢的就会有更多人作出破窗决定,导致整个项目混乱不堪,无法维护。俗称一块臭肉坏了满锅的汤。

编制合理的谎言

有三个在战场中的战士已经很久没有吃饭了,他们看完前面有个村庄,但是村庄里面没有人,但是士兵没有气馁,他们烧了一锅水,小心翼翼地在锅里放了三块石头,诡异的村民们都出来围观,然后战士就说:这叫石头汤,你们就在汤里放这个?嗯,是的,士兵回答道,但是有点胡萝卜味道会更好,一个村民就跑回家把自己家里的胡萝卜拿来了,随后士兵又说,如果有牛肉那就更好了,又一个村民跑回家把牛肉拿过来了,最后,他们煮了一大锅汤,士兵把石头扔掉,最后和村民们一起吃了一顿美餐。

这在软件开发中同样适用。你可以通过一个小改动入手,渐渐的拓展全局,但是一定要注意方式和方法,一定要假装你不在意,这时候应该坐下来,等他们开始向你问你要不要加些你原本想要的功能。加入一个推进中的成功项目更容易一些。

让用户参与评审和设计

你是否经历过这种,你做的东西拿给用户看后发现这并不是他么想要的,每次都需要打回重做。但是没办法,那是你的用户,你们的共同职责就是做出一个双方都满意的软件。为了达到这种目的,沟通就扮演了至关重要的作用。或者说,你还不够了解你的用户,要多和他聊聊,这或许是程序员的短板。多让你的用户参与评审,多问他们这样怎么怎么样。

如何学习知识

知识理财

本杰明富兰克林说过:投资知识,收益最高 。知识和经验确实是你最需要的资产。投资知识在某种程度上和 理财 是一样的。什么?这两种毫不相关的概念怎么会扯到一起去的?别着急,且听我慢慢给你分析。

  • 首先,理性投资者具有周期性投资的习惯,周期性投资就是定投
  • 理性投资者会衡量或者说平衡高风险高收益和稳定收益的组合
  • 采取多样化是打持久战成功的关键因素
  • 投资者最核心的准则就是低买高卖获得最大的回报
  • 定期审查、反思自己的理财组合

为什么说学习知识和理财一样呢?

定期投资

就像金融定投一样,你必须定期为你的技术栈找到合适的学习组合,即使数量有限。

风险管理

不要把所有的鸡蛋都放在一个篮子里,你要学新潮的框架同时也要专注于永恒不变的基础知识。这样会让你不止于思考框架,同时也会让你跟进时代的进步适应这个社会。

多样化

你知道的越多,你的作用、你的价值也就越大。如果你是一个只专注于某个业务的程序员,一定要从整体把握,不要局限在自己的一亩三分地中。如果你不喜欢业务,那你就要从整体考虑用到什么技术,计算机技术变化迅猛,今天的热点技术可能明天就会被废弃。你要多熟悉技术,成为 T 型人才。T 这个字的写法一定是先横着写再竖着写的,知道广度后,才有可能选择一个切入点深入进去。

低买高卖

你在 Java 流行之前绝对不会想着去学习 Java,但是当 Java 流行之后,那些早起的用户已经积累了相当丰厚的回报。

重新评估

重新评估你的技术栈,推陈出新,查漏补缺。

知识组合

这里有一些对你学习知识的几种组合方式,也是一些建议:

  • 每年学习一门新的编程语言:培养自己从不同的角度思考语言这回事,权衡语言的利弊,解决了什么样的问题
  • 每月读一本技术书:这个可能有些费劲,因为一本黑皮书你不可能一个月就读完了,除非你什么都不做,天天只看书,但是有的实战类的书还是可以看完的。这里只是告诉你一个大致的读书周期
  • 读技术书:你的人生不仅仅只有计算机,还有生活,计算机也是通过人类制造出来的,你要站在人的角度思考问题。
  • 上课:去本地大学上课是一件很不错的事情
  • 参加城市技术圈子交流:不要只当听众,要参与进去,了解其他人都在做什么
  • 与时俱进:还是那句话,关心一下你的技术栈,阅读相关的新闻和技术帖子,这是一种很好的方式。

持续投资非常重要,计算机不是一件速成的事儿。

碎片学习的机会

你要如饥似渴的学习,如果你无法找到问题的答案,去寻觅有能力找到答案的人,而不是要让问题 沉寂下去。和其他人交谈有助于构建你的人际网络,而且你会很惊讶的发现,在你寻找答案的这个过程中,你会不断扩大你的知识面。

所有的阅读和研究都需要时间,而时间是永远不够的。所以你需要时刻准备好,确保在无聊的时候有东西可以读。在医院排队也不要忘了放弃阅读的好机会 --- 一定要带上自己的 kindle 或者电子阅读器

批判性思维

最后一个要点是要具有批判性思维,批判性地思考读到和听到的东西。

网络不是那么干净的。永远不要低估商业的力量。他会把黑的说成白的。

网络搜索引擎会把热门的东西放在前列,而不仅仅是正确的东西,也并不是对你有用的东西。书店会把一本书放在显眼的位置,但并不能说明这是一本好书,有可能包装好,有可能封面好,有可能只是标题吸引人,有可能这本书很流行或者很畅销。

批判性思维有五个你需要思考的方向

  • 重复性的问 为什么
  • 谁能从中受益,了解资金流的转向
  • 什么背景下发生的这件事情
  • 开始后会发生什么,结束后会发生什么
  • 为什么这是个问题

你可以 CRUD,但你不是 CRUD 程序员!的更多相关文章

  1. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  2. 原来,多年以来,我一直是个curl/CRUD程序员

    curl,就是create,update,remove,list的首字母简写.说是CRUD似乎更流行些,不过无所谓,知道是一个意思就好. curl程序员,就是增改删查程序员,中文说增删改查更加顺口. ...

  3. Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)

    Elasticsearch(5)--- 基本命令 这篇博客的命令分为ES集群相关命令,索引CRUD命令,文档CRUD命令.这里不包括Query查询命令,它单独写一篇博客. 一.ES集群相关命令 ES集 ...

  4. 程序员除了会CRUD之外,还应该知道什么叫CQRS!

    今天主要跟大家分享一下什么是 CQRS,以及在项目中如何去使用.   CRUD系统 我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.然后通过业 ...

  5. Hibernate(4)——主键生成策略、CRUD 基础API区别的总结 和 注解的使用

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: hibernate的主键生成策略 UUID 配置的补充:hbm2ddl.auto属性用法 注解还是配置文件 h ...

  6. EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)

    前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Ord ...

  7. 应用程序框架实战三十六:CRUD实战演练介绍

    从本篇开始,本系列将进入实战演练阶段. 前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠.不过我的精力很有限,文章进度 ...

  8. 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】

    一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...

  9. ADO.NET与ORM的比较:NHibernate实现CRUD(转)

    原文地址 http://blog.csdn.net/zhoufoxcn/article/details/5402511 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spr ...

随机推荐

  1. 关于Excel去空格问题

    做开发,导入导出是一项基本功能,基本每个系统都有. 导入日期字段难免碰到因为空格问题引起的日期格式化Bug 下面分享一项Excel识别空格以及去空格的方法. 一:识别空格技巧(不要相信你的眼睛,有些空 ...

  2. OSCP Learning Notes - Exploit(3)

     Modifying Shellcode 1. Search “vulnserver exploit code” on the Internet. Find the following website ...

  3. 用Python把20年的GDP、人口以及房价数据进行了可视化

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 提到一线城市,大家马上会想到北上广深这四个超级大都 ...

  4. echarts 实战 : 怎么写出和自动生成的一样的 tooltip ?

    找到答案很麻烦,但答案本身很简单. 假设 需要给 echarts 的数据是 option. option.tooltip.formatter = (params) => { return `&l ...

  5. 发布一个自己做的图片转Base64的软件,Markdown写文章时能用到

    markdownpic 介绍 Markdown编辑时图片生成base64 软件架构 使用了.netcore winform框架 安装教程 直接运行即可 使用说明 拖拽图片文件 双击选择文件 复制粘贴图 ...

  6. 一张PDF了解JDK11 GC调优秘籍-附PDF下载

    目录 简介 废弃的VM选项 Source-File Mode Code Heap状态分析 AppCDS 总结 简介 JDK11相比JDK10,添加了一个新的Source-File Mode,可以直接通 ...

  7. websphere8.5配置db2数据源

    websphere8.5配置db2数据源 1. 打开websphere控制台  2.进入websphere变量页面  3. 进入DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH变 ...

  8. socket链接

    服务端: package com.batch.service.impl; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

  9. BUUCTF-web web1 (无列名注入)

    注册并登录后发现,sql注入,注入点在广告申请的界面.加单引号发现报错 先通过insert插入数据,然后再通过id查询相应的数据,所以是二次注入. 常见报错函数updatexml,floor以及ext ...

  10. matplotlib图表介绍

    Matplotlib 是一个python 的绘图库,主要用于生成2D图表. 常用到的是matplotlib中的pyplot,导入方式import matplotlib.pyplot as plt 一. ...