当前位置: 首页 > news >正文

编程之道

版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45667385

早上看了CSDN上一篇大三学生写的博客,让我觉得自己万分的惭愧,就如同被狠狠地扇了一个耳光。说实话,我很讨厌自己,讨厌自己身上的那些缺点。当然不能因为自己很烂,就彻底的自暴自弃,我还是需要鼓起勇气,多学习一些知识终究会有好处。

切记一根筋

看完这个小节,都有点怀疑自己到底还能不能在软件这个行业上有所成就。这里还需要把作者给出的内容重复一遍。

问:“若要做好编程,必须要积累很多年经验才行吗?”
比尔盖茨说道:“不是的,我觉得在编程的3-4年后,你是不是一名优秀的程序员就决定了。”

我真的觉得自己就是一名不会编程的人,虽然我已经从事软件开发4年了,这还要抛弃大学的学习生涯。如果按照这个观点继续下去,我觉得我恐怕要放弃编程了,然而我无论可走,我只有在软件开发这个行业中才能生存,我没有其他的技能。我必须给自己一点自信,毕竟我的工作还是受到了重视和尊重,我的确不够优秀,但我至少比很多人要强,我并不会被淘汰。

成为更加优秀的程序员的方法是抛开编程。

多培养自己对编程周边事情的热情,让自己喜欢的范围扩大,进而在编程技能之外的地方也取得进展突破,这会帮助你成为更优秀的程序员。记得《代码大全》中写到软件构建的过程中需要用到隐喻,而隐喻就需要你能够更好的懂得生活。

我最近在极客头条上发表了一篇程序员们,你们在读哪些书?说说书名+收获,很多很多同仁所读的书都不会仅限于软件编程的书,他们在读《富国论》、《时间简史》、《解忧杂货店》等等,我觉得这就是一个优秀的程序员应该去读的书。

破窗理论

这个观点,Jeff其实发表过与其类似的博客,诸如《处理坏苹果》。这其实都表达了一个内容,就是:代码中如果存在瑕疵、错误,那么就要着力修改,不要放任小的错误不管,这终究会带来灾难。

关于“破窗理论”,如果你不知道的话,请了解一下吧,这其实和做人有一样的道理,“勿以善小而不为,勿以恶小而为之”,这是刘玄德的遗诏中一句话。

人的能力会与日俱增,那么当你看到你以前写的烂代码后,如果你有精力修改,那么就修改掉它。如果你正在负责的项目中也有,那么就花时间改善掉,不然整个项目会随之烂掉。

要么热爱,要么离开

这个观点其实也可以应用到其他领域,所谓“干一行,爱一行”,如果你选择的行业,你不够热爱它,那么离开它就是唯一的抉择。迫于社会压力,处在软件行业顶峰的人,诸如刘强东、马云,他们如明星般光彩照人,而处于低端的人,像我一样,苦苦的为明天而挣扎。

很多时候,我也在怀疑我自己是否适合做这个行业,但是我思前想后总结到,我离开这个行业,真的无论可走,与其这样说,还不如说我深深的爱着这片土地。

简单之美

这个观点也很普通,乔布斯也说“致繁归于致简”,几乎所有人都不喜欢繁文缛节,我们都崇尚于简约大方。观点表达起来都很容易,但是能够强制执行简单的做法却少之又少。

keep simple:保持简单,当在向我们的项目中添加功能时,尽量先在脑中过一过这个概念,保持当前添加进去的模块足够的独立,足够的简单,不去影响到已经存在的代码。

不要妄自推测:有很多人喜欢在写一个功能的时候,瞻前顾后,认为自己应该想得足够的充分,以致于本来很简单的功能最后繁杂沉重。举个例子,假如我们现在要为NBA的一场比赛记录分数,你可能想,万一哪天某一个超级英雄爆发个人得分单场超过1000分,那么我们的记分器就要做好充分的考虑,这就属于妄自推测,很明显,单场比赛总得分一个球队超过200分就不得了了。

自己动手:我记得,我曾发表过一篇名为《mysql:论证select count(*)和select count(1)的区别》的文章,是因为我的同事说怎么怎么样,结果经过我的论证发现和其说的观点有很大的冲突。自己动手,丰衣足食。

乐于删代码

我一直很厌烦别人把已经没有用处的代码留在项目中,即使那段代码曾经做过贡献,我觉得也应该尽早的删除掉,我甚至认为,不必说出任何理由。

      // 保证金和出金的冻结资金是累加的,对于结算程序来说,当日结算时需要减去上一日的结算后的占用资金
      // 重要:从银行清算结果看,银行在处理冻结资金时,冻结资金为当前账户所有的保证金+出金冻结资金
//   BankDailyPreSettlement preRecord = this.bankDailyPreSettlementMapper.getPreday(record.getUid());
//   if (preRecord != null) {
// record.setOccupyMoney(record.getOccupyMoney().subtract(preRecord.getOccupyMoney()));
//   }

看看我曾经这样干过,但是经过今天看Jeff的观点,我觉得我赶紧把这段内容给删除掉,并且连根拔起,删除掉这段内容,并且删除掉相关废弃的代码。

你是程序员这块料吗

的确对于我自身而言,在学习编程的过程中,我在以下这些内容上遇到了障碍。

  • 赋值和序列
  • 递归
  • 并发

这些阻碍足够让我觉得自己压根就不是块程序员的料,直到现在,这些内容让我惶惶不可终日。

然而,我该退却吗?答案显然是不,无论怎样,我觉得只要我还在努力,我就会在编程这方面取得成就。

int a = 10;
  int b = 20;

  a = b;

  System.out.println(a);//20
  System.out.println(b);//20

这个测试题,显然我又运行了一次,才来保证自己内心确认自己的观点是正确的。

我想说,我认为自己不适合编程,但是我依然坚信我能够在这个行业上取得一些成就,因为我还在努力。
坚持

相关文章:

  • ListView嵌套webView 事件冲突解决
  • mysql的binlog太大太多占用大量磁盘
  • MD5
  • C++实践参考——职员有薪水了
  • Linux下的远程桌面工具—tigervnc
  • 利用Yii框架中的collections体验PHP类型化编程
  • 盘点那些不知名却常用的 Git 操作
  • Linux学习笔记1
  • C# 客户端服务器开发 异步实现
  • 打印mac地址
  • (转)EXC_BREAKPOINT僵尸错误
  • phantomjs技巧之将html页面转换为pdf文件
  • 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
  • 入门到进阶:最全面Vim快捷键键位图
  • github帐号及文章选题
  • 分享一款快速APP功能测试工具
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • bootstrap创建登录注册页面
  • C++类的相互关联
  • Cookie 在前端中的实践
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Github访问慢解决办法
  • hadoop集群管理系统搭建规划说明
  • js继承的实现方法
  • NSTimer学习笔记
  • SpringBoot 实战 (三) | 配置文件详解
  • Spring框架之我见(三)——IOC、AOP
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序开发中的那些坑
  • 移动端 h5开发相关内容总结(三)
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​水经微图Web1.5.0版即将上线
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (3)nginx 配置(nginx.conf)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (编译到47%失败)to be deleted
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (六)Hibernate的二级缓存
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)LINQ之路
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net core 6 redis操作类
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net操作Excel出错解决
  • .NET构架之我见
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net项目IIS、VS 附加进程调试