最近计划着要转行,可总是静不下心来。想来想去时间一天天的过去,一天天的耽误,心里也是着急。前天,朋友的话让我有所悟。做事得心无旁骛才行,尤其是影响比较大的事。
用程序的方法看待心无旁骛
每个人的生活都是一个小小的系统。而系统的稳定性和健壮性也是每个人都追求的。然而,维持系统的稳定性和健壮性并不是一件容易的事情。心无旁骛说的就是系统不受外部因素影响。
用程序的方法解决杂念
要做到心无旁骛,就必须解决杂念。杂念其实就是变化。变化总是能够给系统带来不稳定因素,对系统造成各种干扰。不过,仔细来看,变化则是外部系统功能弱化,存在度降低的过程。当这个过程传递到子系统时,需要子系统对其进行代偿,继而维持自身的存在度。而子系统为了代偿这些弱化的功能,便需要找到更多的能代偿的子模块。这些子模块的集合就构成了子系统的存在。当子系统再也找不到可以为其代偿的子模块之时,便是子系统湮灭之时。正所谓皮之不存,毛将焉附,就是这个道理。因此,外部的变化和模块的代偿能力便是一对相辅相成的矛盾。每个模块的存在都是做到了调和变化和代偿的矛盾。然而,如何才能调和这对矛盾呢?
变化的开始是随机的,并且变化一旦开始,它的传递是强制的,单向的,如水波纹一般,要么遇到坚硬的石头反弹,要么被较软的物体完全吸收。因此,我们可以从反弹和吸收方面入手。
病从口入,尽量减少系统的出入口,来减少传入系统内部的变化量,消耗系统的代偿能力。引入满足自身需要的模块增加自己的代偿能力。基于此,我们如果要调和变化和自身代偿的矛盾有以下几个方法:
拥有四面的铜墙铁壁,封装严密
要做到封装好就必须有铜墙铁壁。然而,要做成这样一堵墙,就必须有一个与外部系统格格不入的模块来完成。也就是我们常说的倔脾气。它能够帮人保护好自己不受外界的侵害。此外,减少与无效信息的接触,也是个抵御侵害的方法。
当然,封装也有不良后果。系统代偿能力的固化。由于系统的代偿能力的变化是随着引入外部变化而变化的。如果外部的变化极少引入,那么系统的代偿能力便会固化,甚至萎缩,更严重的带来系统的消亡。并且,在这个过程中,由于外部系统会主动贴近发生交互多的子系统,脱离交互少的子系统,因此,会造成自身被脱离,增加遇到来自原系统之外所带来更不可控的变化的风险。因此,适当的不务专业一些,拥抱变化也未尝不可。至少它能够帮你背靠大树好乘凉。
建好门,内外松耦合
耦合度高,在程序架构中带来的问题就是牵一发而动全身。松耦合的作用就是将系统中各个组件的依赖程度降到最低,避免出现牵一发动全身的现象。而松耦合的实现方法就是把接口设计好,也就是建好门,不单单是大门,还有各个房间的小门与窗户。要做到这些,需要对自身资源进行归整,对主动引入的变化做好归整,对被动引入的变化做好归整。然后将这三者很好的组合到一起。
当然,松耦合也有不良后果。耦合度过于松散,换句话说就是功能的固化。就仍然回到刚才封装的不良后果中。此外,如果封装是主动屏蔽变化,那么耦合就是主动引入变化。当接口的过滤设计的不好时,会引入自身处理不了的变化,引起中毒,也会引入过少的变化,饿死机体。
维护好可靠的外交关系,拥抱变化
拥抱变化看似与刚才的封装相互矛盾,实则是为了弥补封装模块的缺陷所提出的。不过,也不是什么变化都要引入,只引入自身需要的。然而,新的变化总是富有风险的。因此,在引入变化的时候千万不能盲目。一定要按部就班,根据自身系统所能容忍的程度来引入,一步一步,由小到大的来。
此外,引入新的模块之后,系统内部必须有一个沙盒一样的东西,也就是个试验场。在这个试验场里,只能引入足够小规模的变化,以防失控对主系统产生威胁。因此,要做好这个沙盒,首先内部得有足够的空间承载这些引入的变化。
勤劳致富,高内聚
高内聚意味着内部模块足够小的时候应该牺牲安全换取紧耦合。目的是为了提高单个模块的代偿能力。而紧耦合也就带来了频繁的变化。所以,勤劳在这里起作用。勤于修整因为紧耦合所带来的自身的资源的混乱。勤于处理传入的变化。这两者都是为了提高自身的代偿能力。
放到生活中来说
生活中有很多问题都可以基于以上的理论来解决。比如,我自己的实现转行到区块链这件事。这件事是在我自身的Android工作无法代偿生活带来的压力的背景下,拥抱变化而发现的一个新行业。我的目的依然是代偿生活这个模块给我带来的变化。因此,我需要开辟一个沙盒,将其引入。主要做几件事:
1. 观察这个模块可否能够代偿生活给我带来的变化。
2. 这个模块和我原有的各个模块是否耦合。
除此之外,我需要尽量让其对我原有的系统造成较小的侵入。所以,我需要对我的工作模块中包含的子模块进行归类。对生活的子模块进行归类。对外部引入的变化进行归类。对生活,我们的目标是找个以后能方便照顾父母,不耽误孩子前程,自己喜欢的地方定居。目前满足这三个条件的有郑州,荥阳,巩义三个地方。这对我们带来的压力就决定着,我们的家庭目前有三名成员,我,孩子和媳妇。我和媳妇的工作又都在郑州才有。不耽误孩子前程的条件如果是让孩子至少是个一本的话,其实放在巩义就可以。然而,这就和我们俩的工作产生了不兼容。所以,为了保持兼容性,郑州是个合适的选择。然而,在郑州定居的话,我们俩的工作是家庭几乎所有的代偿能力,我们的代偿能力就产生了不兼容。为了保持兼容性,我就需要转行,媳妇也必须工作。然而,孩子此时此刻就没人照顾。只能引入父亲来帮忙。而父亲也是需要我们进行代偿的。因此,整合如下表:
变化 | 兼容 | 代偿 |
---|---|---|
孩子的未来(巩义) | 郑州 | 媳妇和我(郑州) |
孩子的现在(和妈妈在一起) | 郑州 | 父亲(老家),媳妇,我(郑州) |
父亲 | 郑州 | 我,媳妇(郑州) |
媳妇(郑州) | 我,媳妇 | |
我(郑州) | 我,媳妇 |
从表中就能发现家庭这个系统中,我和媳妇在代偿方面占主导地位。我和媳妇50%,孩子30%,爸爸%20。只有提高我的收入是个方法。于是就有了转行区块链的目标。
为了实现这个目标,根据以上理论,我需要做到以下几条:
- 对区块链的代偿能力和接收变化的方向做出归类,也就是区块链的技术要求和工作。
- 做好归类以后,少做变化。然后明确目标,努力提高。
目前区块链的工作在郑州只有10家,技术要求比较宽泛,普遍要求熟悉以太坊,超级账本,比特币的原理,熟悉常见的几种共识机制及实现方法。其次,就是些基础的编程语言,如java,golang,c++等,另外还有些高要求的有带领团队,对分布式系统,数据库熟悉。而我目前从事Android只有java基础,但是自学能力强,学习语言不成问题,对新技术新理论的掌握速度也还行。所以,我应该先从以太坊入手,了解其智能合约。然后从ethereumJ项目入手了解项目的原理实现。完了之后同时把golang语言学会,依葫芦画瓢的看geth的源码。学完之后接下来仍然用java学习比特币,用go和java学习超级账本。至于C++就到工作中在学把。学习的目标是:
- 以太坊的智能合约可以发币。
- 手写一个Android端的以太坊钱包。
- 画出一个以太坊原理的思维导图,并根据这个思维导图写出个简单的以太坊的原理框架来。
- 画出一个比特币的原理思维导图,并且根据这个思维导图写出个简单的比特币的原理框架来。
- 总结各种共识机制。
- 画出超级账本的实现机制的思维导图,并使用超级账本实现一个应用。
经过以上学习目标,此时市场的工作岗位也应该会翻倍了。
说完工作,说生活。媳妇需要上班,孩子来到郑州之后,学习的时间会变的更少。不过,有了监督以后学习也会更高效。
洋洋洒洒写这么多,算是给自己的生活做个总结归整把。
评论
发表评论
元芳你怎么看