10年架构师感悟:从问题出发,而非技术( 三 )


作为技术人员,我们往往会很乐意学习新技术,并且一旦掌握了这些技术,就会有强烈的欲望去应用它们 。有时候我们甚至会感觉自己被某个技术所“上身”,迫不及待地想要将其应用到工作中,而忽略了当前手头上的问题是否适合用这个技术来解决 。或许你也有类似的经历 。
冷静下来想想,我们每个人都明白,应该从实际需求、用户问题出发,而不是一味地从技术角度考虑 。然而,在实际工作中 , 我们常常不自觉地忽略了这一点 。就像拿着一把锤子 , 看到什么都想当作钉子来敲 。
然而,这种做法可能会带来很大的害处 。让我来分享一个故事,来自我之前工作过的一个团队 。
在那个团队中 , 有一位工程师维护着一个简单的服务,使用 MySQL 作为数据存储 。后来,他对当时新出的 DynamoDB 产生了兴趣 , 并学习了相关知识 。结果发生了以下情况:他决定使用 DynamoDB 替换 MySQL , 但这却成为了一个噩梦的开始 。很快就发现 DynamoDB 并不能很好地支持事务特性 , 而且性能极差的客户端类库导致了性能问题,效率大大降低 。
于是,他又尝试使用最终一致性技术,采用消息队列来实现 。但随之而来的是,实现相同功能的复杂性大大增加 , 维护成本也由一个人变成了整个团队 。
这个故事告诉我们,我们对技术的热情有时会让事情变得更加复杂,甚至会带来额外的烦恼 。我们应该始终从问题出发,而不是被技术所驱动 。
八、过度繁忙使你落后
我最近的第八个重要感悟是:过度繁忙使你落后 。
对于IT人员来说,忙碌已经成为了一种习惯,加班似乎也成了公司高效的标志 , “996”甚至变成了一种常态 。但是我们有时候需要反思一下,有多久没有在业余时间看与技术相关的书了?我曾经在公司里问过这个问题,百分之百的人都告诉我 , 下班后已经很晚了,回到家基本上没有时间再看书,刷一下手机,就可以直接睡觉了 。这是一个非常值得我们去思考的问题 。
作为技术人员,如果你不更新你的知识,或者繁忙让你没有时间更新知识,那会有什么样的结果呢?让我分享一个有趣的现象,我遇到过不少程序员,有些是之前的同事,有些是朋友 。他们换了一份新工作,一开始进入那家公司时会说 , “这个公司我不是特别看好,我了解一下它的技术,就准备跳槽了 。”可是过了两三年,我再问他们,“为什么还在这里,还没跳槽?”结果他们告诉我,“我觉得现在的招聘形势不太好,不太好找新的机会 。”几年下来,他们对公司越来越“忠诚”了 。实际上,在一个公司忙碌工作几年,没有留出时间学习 , 导致他们失去了跳槽的能力和勇气 。当他们想要重新回到市场时,却发现自己已经落伍了,技术已经过时了 , 甚至已经被淘汰了 。
在这个高速发展的时代,如果因为过度忙碌,导致你没有时间学习和更新自己的知识,那必然会让你落后 。即使你不跳槽,呆在同一家公司里,公司的业务不断发展,数据量会越来越大,用户需求也会越来越复杂 。如果你长期不更新知识,掌握的技能没有发生变化,你会觉得越来越难以应付,最终只能通过不断地加班来应对 。
另外 , 还有一种可能是 , 你不更新知识,不深入思考,那么很大概率,你所创造的技术和业务丧失了领先性,没有领先优势,只能被动紧紧跟随竞争对手 。而紧紧跟随就意味着你只能加班 , 这将导致更多的忙碌,更少的时间用来学习和提升自己的技能 。这实际上是一个恶性循环,你花越多的时间去忙碌,就越没有时间去学习,去提高自己的工作技能,最终只能靠加班来追赶,结果就更加忙碌,更加没有时间学习,最终你将陷入一个无法自拔的恶性循环中 。
当我在某个领域工作了一段时间后 , 比如三五年之后,我会逐渐变得对该领域的业务越来越熟悉,解决问题也会变得更加顺手 。但与此同时,我也会意识到能够学习到的新知识和技能会逐渐减少 。有些人可能会建议我离开这个舒适区 , 尝试去另一个领域,以激发学习新知识的动力 。但我觉得并不需要这么做 。
我认为,即使留在原来的领域,我也可以通过一些方法来持续学习和成长 。我可以有意识地摆脱舒适感,挤出时间来重新学习,然后尝试以不同的方式解决问题 。即使在相同的领域中,我也可以探索新的方法和技术,从而提升自己的能力 。


推荐阅读