你可以 CRUD,但你不是 CRUD 程序员!
什么是务实
务实程序员他们总是在面临问题时,透过问题看到本质,从具体的场景出发,从大局着想,了解整个问题的来龙去脉,他们会对自己的行为负责,在项目面临问题时,他们不会撒手不管或者任由风险一步步扩大直至无法维护。
大多数人都不是务实的程序员,因为成为务实的程序员并不满足 短期的利益
,需要长期的打磨和持续不断的学习、思考反思。大多数人不是务实的程序员的原因只有一个:惰性使然
。
程序员是有戾气
的,许多人向我抱怨
- 工作很久了,年龄也比较大了,感觉工作这些年以来在技术方向上没什么提升
对这些人我有话说:没有及时反思,可能也是由于工作一直很忙,没有停下来静心思考。因为我相信任何有时间思考的程序员,都不会有这种想法。善于反思自己你会及时调整最近的状态,系统化的学习,提高自己的核心竞争力,让自己成为公司不可轻易替代的人才。
- 整天 CRUD,项目技术栈用的比较老旧,想要接触新项目,想要去互联网
对这些人我有话说:整天 CRUD 不是你找理由的根本!CRUD 的业余时间完全有时间提升自己!我也是 CRUD,但我不是一个 CRUD 程序员!千万不要给自己扣各种 CRUD 的帽子。项目技术栈用的比较老旧,我想说,计算机世界发展了 60 多年到现在,仍然只能识别 0 和 1 ,要专注于不变的根本。如果你学完操作系统,你就知道软件最终离不开操作系统,你就知道管程是怎么回事,操作系统实现不同调度算法的抉择时什么。我曾经说我喜欢技术,想要接触新的技术栈,当我被问及你知道哪些 hibernate
思想到现在仍然流行,mybatis
哪些思想仍然很老旧的时候,你就会发现,技术的新潮只是一时的,没有永远不过时的技术!我听很多前辈讲起,在零几年的时候谁说自己进了互联网那完全是等着被人嘲笑的!为什么互联网现在流行?因为它符合我们大众的诉求!无现金支付,工作之余的放松,饿了就不想自己去买饭,实体购物又麻烦而且还要化解和各种店员的尴尬!!!但是互联网是无法落地的,在发展到一定规模和平台后,互联网也是最重要被淘汰的!而硬件、芯片、通信这些才是永远新潮的技术,只不过无法获取眼前的 feedback,很多高素质人才也不想从事罢了!
- 我应该学哪些技术
对这些人我有话说:这个问题本身就没有意义!没有人能够指导你学哪些技术!问这句话的目的就是想走捷径,但是学习是没有捷径的!学你想学的,学和你工作相关的,学能够让你提升核心竞争力的!如果非要让我说出要学什么话,我建议学基础,学基础,学基础,基础就是计算机组成原理、操作系统、网络、编译原理
针对上面这些人,我认为他们只是难以接受改变,我认为这类人是
煮熟的青蛙
。这个故事你一定听说过,它说的就是把青蛙放在慢慢加热的锅炉里面,刚开始青蛙感觉温度很舒适,随着慢慢加热,青蛙已经无力跳出锅炉了!而另外一种人是
把青蛙仍在滚烫的锅炉里
的人,它肯定想尽办法跳出来,这类人会想尽一切办法克服困难。
不要给自己的人生设限
李小龙曾经说过:我活着不是为了满足你的期望,正如你也不是因为我的期望。
说的丧一点就是 诸君看我多装逼,我料诸君应如是
软件开发行业绝对是最吃香的行业,因为我们收入颇丰,因为我们可以选择我们想要的工作,我们可以选择办公地点,我们可以实现财务自由,但这些前提是你要有能力。
为什么有人喜欢抱怨呢?因为他们不曾想着改变,Martin Fowler
说过 你可以去改变组织,或者让自己换一个组织,总的来说,你是自由的,你可以做你想做的。
不知道你听过 墨菲定律
没有?最简单的表达形式是越怕出事,越会出事,拿我们老祖宗的话就是 怕什么,来什么,但是在软件开发中,出现问题是再正常不过的事情了,就算你有完善的需求、设计文档,完备的自动化测试流程,多轮测试迭代,还是会出现问题,推迟交付,未曾预料的问题的出现。
所以,不要惧怕问题,因为问题任何时刻都会出现,当问题出现时,我们应该依靠我们的专业性去解决问题,我们犯了错误要勇于承认,我们必须坦诚。
勇于承担责任,不要把问题归咎于别人或者其他事情上,也不要寻找藉口,不要把问题归功于环境、编程语言、时间或者同事,这些因素可能影响你,但不是让你找的借口
设想一下,比如银行职员、超市售货员、汽车修理工搪塞或者敷衍你的时候,你是什么反应?是不是恨不得想他了他们的门店?你会如何看待他们的公司?那如果是你呢?你的上司或者甲方会怎么看你?
破窗效应
破窗效应
说的是,如何把一座富丽堂皇的别墅变成一片废墟?也许你只需要一扇破窗,这就是破窗效应的威力。
那么为什么破窗效应的威力这么强大呢?一扇破窗,如果一段时间不去修理和修复,别墅中的主人就会潜移默化产生一种这座别墅很老旧的想法,久而久之更多的窗户也慢慢积满灰尘,不去打理,直到整个别墅成为废墟。
拿到软件开发中就是,如果一扇破窗(糟糕的设计、错误的决定、没有注释的代码,混乱的逻辑)不去修理,慢慢的就会有更多人作出破窗决定,导致整个项目混乱不堪,无法维护。俗称一块臭肉坏了满锅的汤。
编制合理的谎言
有三个在战场中的战士已经很久没有吃饭了,他们看完前面有个村庄,但是村庄里面没有人,但是士兵没有气馁,他们烧了一锅水,小心翼翼地在锅里放了三块石头,诡异的村民们都出来围观,然后战士就说:这叫石头汤,你们就在汤里放这个?嗯,是的,士兵回答道,但是有点胡萝卜味道会更好,一个村民就跑回家把自己家里的胡萝卜拿来了,随后士兵又说,如果有牛肉那就更好了,又一个村民跑回家把牛肉拿过来了,最后,他们煮了一大锅汤,士兵把石头扔掉,最后和村民们一起吃了一顿美餐。
这在软件开发中同样适用。你可以通过一个小改动入手,渐渐的拓展全局,但是一定要注意方式和方法,一定要假装你不在意
,这时候应该坐下来,等他们开始向你问你要不要加些你原本想要的功能。加入一个推进中的成功项目更容易一些。
让用户参与评审和设计
你是否经历过这种,你做的东西拿给用户看后发现这并不是他么想要的,每次都需要打回重做。但是没办法,那是你的用户,你们的共同职责就是做出一个双方都满意的软件。为了达到这种目的,沟通就扮演了至关重要的作用。或者说,你还不够了解你的用户,要多和他聊聊,这或许是程序员的短板。多让你的用户参与评审,多问他们这样怎么怎么样。
如何学习知识
知识理财
本杰明富兰克林说过:投资知识,收益最高 。知识和经验确实是你最需要的资产。投资知识在某种程度上和 理财
是一样的。什么?这两种毫不相关的概念怎么会扯到一起去的?别着急,且听我慢慢给你分析。
- 首先,理性投资者具有周期性投资的习惯,周期性投资就是定投
- 理性投资者会衡量或者说平衡高风险高收益和稳定收益的组合
- 采取多样化是打持久战成功的关键因素
- 投资者最核心的准则就是低买高卖获得最大的回报
- 定期审查、反思自己的理财组合
为什么说学习知识和理财一样呢?
定期投资
就像金融定投一样,你必须定期为你的技术栈找到合适的学习组合,即使数量有限。
风险管理
不要把所有的鸡蛋都放在一个篮子里,你要学新潮的框架同时也要专注于永恒不变的基础知识。这样会让你不止于思考框架,同时也会让你跟进时代的进步适应这个社会。
多样化
你知道的越多,你的作用、你的价值也就越大。如果你是一个只专注于某个业务的程序员,一定要从整体把握,不要局限在自己的一亩三分地中。如果你不喜欢业务,那你就要从整体考虑用到什么技术,计算机技术变化迅猛,今天的热点技术可能明天就会被废弃。你要多熟悉技术,成为 T 型人才。T 这个字的写法一定是先横着写再竖着写的,知道广度后,才有可能选择一个切入点深入进去。
低买高卖
你在 Java 流行之前绝对不会想着去学习 Java,但是当 Java 流行之后,那些早起的用户已经积累了相当丰厚的回报。
重新评估
重新评估你的技术栈,推陈出新,查漏补缺。
知识组合
这里有一些对你学习知识的几种组合方式,也是一些建议:
- 每年学习一门新的编程语言:培养自己从不同的角度思考语言这回事,权衡语言的利弊,解决了什么样的问题
- 每月读一本技术书:这个可能有些费劲,因为一本黑皮书你不可能一个月就读完了,除非你什么都不做,天天只看书,但是有的实战类的书还是可以看完的。这里只是告诉你一个大致的读书周期
- 读技术书:你的人生不仅仅只有计算机,还有生活,计算机也是通过人类制造出来的,你要站在人的角度思考问题。
- 上课:去本地大学上课是一件很不错的事情
- 参加城市技术圈子交流:不要只当听众,要参与进去,了解其他人都在做什么
- 与时俱进:还是那句话,关心一下你的技术栈,阅读相关的新闻和技术帖子,这是一种很好的方式。
持续投资非常重要,计算机不是一件速成
的事儿。
碎片学习的机会
你要如饥似渴的学习,如果你无法找到问题的答案,去寻觅有能力找到答案的人,而不是要让问题 沉寂下去
。和其他人交谈有助于构建你的人际网络,而且你会很惊讶的发现,在你寻找答案的这个过程中,你会不断扩大你的知识面。
所有的阅读和研究都需要时间,而时间是永远不够的。所以你需要时刻准备好,确保在无聊的时候有东西可以读。在医院排队也不要忘了放弃阅读的好机会 --- 一定要带上自己的 kindle
或者电子阅读器
批判性思维
最后一个要点是要具有批判性思维,批判性地思考读到和听到的东西。
网络不是那么干净的。永远不要低估商业的力量。他会把黑的说成白的。
网络搜索引擎会把热门的东西放在前列,而不仅仅是正确的东西,也并不是对你有用的东西。书店会把一本书放在显眼的位置,但并不能说明这是一本好书,有可能包装好,有可能封面好,有可能只是标题吸引人,有可能这本书很流行或者很畅销。
批判性思维有五个你需要思考的方向
- 重复性的问
为什么
- 谁能从中受益,了解资金流的转向
- 什么背景下发生的这件事情
- 开始后会发生什么,结束后会发生什么
- 为什么这是个问题
你可以 CRUD,但你不是 CRUD 程序员!的更多相关文章
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- 原来,多年以来,我一直是个curl/CRUD程序员
curl,就是create,update,remove,list的首字母简写.说是CRUD似乎更流行些,不过无所谓,知道是一个意思就好. curl程序员,就是增改删查程序员,中文说增删改查更加顺口. ...
- Elasticsearch(5)--- 基本命令(集群相关命令、索引CRUD命令、文档CRUD命令)
Elasticsearch(5)--- 基本命令 这篇博客的命令分为ES集群相关命令,索引CRUD命令,文档CRUD命令.这里不包括Query查询命令,它单独写一篇博客. 一.ES集群相关命令 ES集 ...
- 程序员除了会CRUD之外,还应该知道什么叫CQRS!
今天主要跟大家分享一下什么是 CQRS,以及在项目中如何去使用. CRUD系统 我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.然后通过业 ...
- Hibernate(4)——主键生成策略、CRUD 基础API区别的总结 和 注解的使用
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: hibernate的主键生成策略 UUID 配置的补充:hbm2ddl.auto属性用法 注解还是配置文件 h ...
- EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)
前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Ord ...
- 应用程序框架实战三十六:CRUD实战演练介绍
从本篇开始,本系列将进入实战演练阶段. 前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠.不过我的精力很有限,文章进度 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
- ADO.NET与ORM的比较:NHibernate实现CRUD(转)
原文地址 http://blog.csdn.net/zhoufoxcn/article/details/5402511 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spr ...
随机推荐
- Unity安卓共享纹理
前置知识:安卓集成Unity开发示例 本文的目的是实现以下的流程: Android/iOS native app 操作摄像头 -> 获取视频流数据 -> 人脸检测或美颜 -> 传输给 ...
- Java常用类-Object类
一.java.lang.Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Obj ...
- three.js 曲线
上几篇说了three.js的曲线,这篇来郭先生来说说three.js曲线,在线案例点击郭先生的博客查看. 1. 了解three.js曲线 之前已经说了一些three.js的几何体,这篇说一说three ...
- Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...
- 用Vue实现一个简单的图片轮播
本文已收录至https://github.com/likekk/studyBlog欢迎大家star,共同学习,共同进步.如果文章有错误的地方,欢迎大家指出.后期将在将GitHub上规划前端学习的路线和 ...
- 在Access中执行SQL
1.基本介绍 Microsoft Access在很多地方得到广泛使用,例如小型企业,大公司的部门.喜爱编程的开发人员亦利用它来制作处理数据的桌面系统.它也常被用来开发简单的WEB应用程序. 2.Ace ...
- websphere8.5配置db2数据源
websphere8.5配置db2数据源 1. 打开websphere控制台 2.进入websphere变量页面 3. 进入DB2UNIVERSAL_JDBC_DRIVER_NATIVEPATH变 ...
- 雪碧图——CSS Sprites(精灵)
在日常开发打开文件包,打开static文件夹,有一张图片,里面融合了这个应用都会用到的小图标,其实,主要是减少应用渲染出现繁多的请求,加速页面渲染. 解决方案:使用css背景定位 icon {widt ...
- shell变量子串
表达式 说明 ${parameter} 返回变量$parameter的内容 ${#parameter} 返回变量$parameter内容的长度(按字符),也适用于特殊变量 ${parameter:of ...
- phpcms视频模块实现列表页打开内容页直接播放视频
摘自phpcms论坛 原链接地址:http://bbs.phpcms.cn/thread-557691-1-1.html 之前下载研究过“化蝶自在飞”开发的视频模型,发现功能不错,但唯一的缺憾是,我想 ...