如何快速提高技术水平

对于标题提出的问题,笔者并没有足够的把握下一个武断的结论,谨发表一些个人见解,并欢迎各位读者批评指正。图片描述

在与其他开发者交流的过程中,笔者发现很多人都喜欢纠缠于一些过于细节的问题,总是试图对这些问题刨根究底,并且很享受徒手解决它们的过程。这样做导致的后果就是,写了半年的代码,水平并没有上一个台阶,而是仍然每天到处求教跟半年前相同档次的问题。而另外一些同行则不然,他们对于很多技术细节并没有刨根究底,但是他们总是能站在更高的视角上看待并解决甚至漫不经心地“绕过”这些问题。看似绕过,其实很可能本来就有一条坦途,而很多人因为看不清而走入了荆棘中。
有一句话大概是这么说的:对于一个手里只有锤子的人而言,他遇到的问题都是钉子。当你仍然享受并满足于用锤子砸钉子的时候,别人手里的锤子可能已经换成了挖掘机,工作效率已不可同日而语。
不知道读者对于围棋是否有所了解。围棋蕴含着许多非常有启发性的道理。很多时候在某个局部你自鸣得意地算出很多步,各种左冲右突,最后也按你的设想获得了作战的“成功”,可是结果却出乎意料地输了棋。为什么呢?因为对手比你更有棋感,他兴许一时算不清某个局部的变化,但是他知道往哪个方向走大概能赢棋,很可能他凭棋感漫不经心的一手棋占据了要点,而你却需要苦算很多手才能勉强维持局面的平衡。说了这么多棋理看似离题了,其实对于本文讨论的问题是非常有启发性的。
作为一个程序员,或者说软件工程师,虽然日常开发中遇到的问题绝大多数都是跟具体平台相关的,往往非常琐细,却不应该被这些问题牵着鼻子走。而是要认识到,之所以你总是碰到钉子,兴许是因为你手里只有锤子。如果可以用挖掘机一铲下去挖走所有障碍物,又何必用锤子一个接一个地撬钉子呢。
很多时候你之所以总是被各种低级繁琐的问题绊住,其实很可能是你程序架构不合理,导致维护性,复用性,扩展性等不高。就好比围棋中不好的棋形未必马上导致输棋,但是欠的债总是要还,兴许什么时候就需要你连补好几手都未必补干净,甚至越走棋形越差。如果代码结构不合理,就会匪夷所思地遇到各种琐碎的问题,你以为一个接一个地拔了这些钉子你的水平就提高了,实则不然,你只是在原地兜圈子而已。
所以笔者主张,对于某个层次的问题,一旦尝试解决了几次,积累了最起码的经验之后,就应该力争站在更高的视角上看问题。很多你原以为棘手的问题,当你站在更高的角度看的时候,很可能就会迎刃而解,或者不成为问题,甚至根本不会遇到。
说了这么多大道理,那么具体如何操作才能迅速提高技术水平,不断站上更高的角度看问题呢?其实也很简单,这里就推荐一种操作性很强的方法,并不是唯一的方法,却是非常简单而行之有效的。
每当你写完了一份代码,大到做完一个项目,小到实现了一个功能,不要急于庆祝大功告成然后将代码束之高阁,要养成一种近乎强迫症的习惯——重构你的代码。重构的标准也一点都不复杂,那就是你代码的逻辑是否足够简单,以至于你能做到不依赖于具体的实现细节读懂你自己的代码,如果你给别人解释这份代码,能做到不提及具体的实现细节——这其实是软件工程师的一项基本功,那就是抽象。如果你的代码还不够抽象,那么忘掉你已经实现了所有需求中提到的功能的自豪感,以吹毛求疵的强迫症态度重构它。重构可能不是一蹴而就的,更可能是分步分层次实施的,只要抓住抽象这个总的原则就可以,而且这个过程会非常有趣非常引人入胜。当你下次开发遇到类似的问题的时候,你就能根据之前重构的经验,做到在敲代码之前就设计出架构,而你敲完代码之后也得以在更高的层次上进行重构,从而获得更高层次的经验和领悟。
在这个过程中,你对软件开发的理解也会不断迈上新的台阶,直到达到这样一种境界——你在敲下第一行代码之前,就已经对整个项目的架构了然于胸,至于具体的编码实现,如果有这个闲情逸致可以亲自实现,如果没有也可以交给别人。
建筑工人和建筑设计师的区别是什么?一个看到的是钉子,而另一个看到的是宏伟的蓝图。

愿与各位码农共勉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值