找到升华思想的大门和钥匙

    俗话说“授人以渔不如授人以渔,授人以渔只救一时之急,授人以渔则可解一生之需”。

    想要跟大家分享一些在我工作中因为懒惰+勤奋而学到的东西,因此总结一句话:

    懒于做重复的事,勤于思考如何不做重复的事

    这种思想可以驱使我思考如何使生活、工作的一切一切变得更简单,腾出的时间可以做更多自己想做的事情。


    前篇说过发现价值的眼光,我们应该多思考在我们思考和行动的过程中,哪些才是真正有价值的,或者相对而言价值更大的。因为人的一生真的很短暂,所以更加需要充分的放大自己的价值实现一切。短期内没有人发现你的价值也不要紧,怀才就像怀孕,时间久了才能发现,慢慢地你会遇到能发现你闪光点,以及懂得欣赏你能力的伯乐,千里马常有,而伯乐不常有,所以这需要时间。

   

    前面的文章中提到这样一句话:简单比复杂更复杂。因为化繁为简的过程就相当复杂,但是掌握了这种能力,就能搬得动大山了,软件开发恰好很需要这种能力,如果说一个好的程序员能够把事情变简单,那差的程序员也就会把事情弄的更复杂。降低复杂性的手段一般包括:分类、分层、抽象等等,这在做很多事情时,很难有固定的模式或者流程可以套用,这需要训练和具备多种思维:结构化思维、抽象思维等等,我目前无法给出很确切的学习方法,但是我知道的是,起码第一步要有意识到一些事情的重要性,然后才会想要改变自己,变则通。


    学习软件开发开始就有提到复用的思想,复用能提高效率,降低维护成本。我们需要找到变的东西和不变的“东西”,而且还要考虑扩展的问题,这种思维促使我去发现事物的共性以及个体的特殊性,我们站在巨人的肩膀这毋庸置疑,那开始多看看前人的设计和实现总是好的,我们一直就在使用它们。多看别人产物的时候学习别人的思想是主要的,也像上一篇文章提到的爱因斯坦那句话:脑袋用来记录书上没有的东西。之前跟很多人聊过是否要学习轮子原理和自己造轮子的问题。这里有篇文章觉得还不错,作者的一些想法我很认同。http://blog.jobbole.com/97161/?utm_source=tuicool&utm_medium=referral


   人本身是有很多缺陷的,很多话告诉了我们这个道理,比如好记性不如烂笔头。说到存储,你用脑子存储绝对没有你用工具记录下来更完整和持久,所以我们要善用工具来帮助我们记录和记忆。还有类似:语言是很苍白无力的。软件系统的机制以及实现细节,代码是最终产物,通过它我们可以了解组成部分、运行机制、实现细节等等,但是通过代码阅读效率其实是比较低的,包括人类语言也一样,我们生来具备双眼,可以看到这个物理世界,这是最直观的,所以图形化传送信息的效率是很高的,我这里也提到两个概念:图形化思考和图形化交流,这里借用高焕堂老师的一句话:代码+图示=图文并茂。所以掌握很多图形表达方式例如UML这真的很重要,提倡分析与设计的时候多画图,这有利于直观体现和预览以及共享你的想法。顺便提下我为啥喜欢用note和surfacepro,因为他们都有笔。。。


    在实际开发编码中,很多人没有意识到我们开发时的思考和执行过程:分析->设计->编码,这是做很多事情的模式,只是很多人没有清晰意识到前面两个步骤,大部分人往往上来直接写代码,但是代码作为逻辑表达的产出物,前面必然是会有分析与设计的,直接写代码大部分的情况是,分析与设计的工作是在短时间脑内完成的,大概想了一下需要怎么编写代码,这样分配给分析与设计的时间是很短暂的,很多想法也只是缓存在脑中,随着编写代码描述想法的同时,很可能会遗漏一些,而且短时间分析与设计不能保证从整体的角度去分析和解决问题,会造成的结果就是,随着系统实现的越来越复杂,越来越庞大,代码量也越来越大,后面会发现可读性会变差,维护性会降低,扩展也变的不太容易,等等。虽然我很感同身受现在浮躁的工作环境中很难挤出时间,但是不代表我们不能浮躁中求冷静,长期这种快速实现不利于提升自己,我们需要时间来思考。现在我们了解到如果是上手直接写代码会带来很多后续问题,我们何必不在一开始进行相对系统和专注的分析与设计呢?,虽然设计很难一步到位,但是设计一样可以迭代可以演进,设计过程中能产出很多方便我们以后参照和修改的产物。我很想和大家分享一下我在工作中分析和设计的一些自己的心得,希望能让大家从码农升华一下,思维模式转变,软件的魅力我现在觉得在于用你的所有认知去在抽象的世界中搭建假象的系统。我一直认为思想和思维方式以及主观能动性是一个人与别人差异化的核心价值所在,技术不是某个人的,他是客观的外部事物,我们用到一切工具来自于大自然,唯独智慧是自己的。思想和思维这是在现实生活中无时无刻就可以学习和改变以及提升的,所以请保持观察和思考。


   很多新手学习了一门编程语言然后和平台的一些工具的使用和框架的接口以及运行机制掌握,就上手开发了,前期必然有个熟练过程,这是在建立对软件开发的整体完整了解以及特性熟悉的过程,一旦熟练之后,就可以开始尝试挖掘平台提供的框架的设计思想,比如广播机制用到了观察者模式,有序广播和无序广播对应同步和异步架构,适配器用到的适配器模式思想,视图树用到的组合模式,还比如Android实现的线程间通讯用到的消息队列等等。之后的内容很多都是自己思考的,不是很系统或准确,也请看官海涵,但是我觉得比较接地气吧。我会先以一些基础组件和工具封装优化来开始,以后把我的框架开发经历再慢慢叙述来。


   前面的文章我会先以基础的工具、组件、模块一些封装和抽象开始,后面站在系统的全局来架构设计。主要以实践中自我发现和总结的一些案例呈现出来的方式来描述,我觉得自我积累工具和组件、框架和设计思想这是很有必要的,因为在你以后想做的东西愈加庞大和复杂时,就是体现你自己轮子和框架价值的时候了,它能支撑你快速实现想法。


by LuoJ

  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值