Nothinglin的个人博客
不积跬步无以至千里,后继才能薄发

思考|造轮子还是用轮子?

nothinglin
2021年12月05日
0
独立思考
image-20211206011336744

近期的迷茫

近期的迷茫和焦虑还是很多的,有关于未来的,也有目前的烦恼。未来的问题就是关于实习和考研的选择,毕竟现在已经到了大三并且大三第一学期也即将结束,迎接过来的就是要努力的一年了。目前的问题就是对于学校的课程学习的焦虑,因为我个人挺不喜欢学校的古板教学模式,并不是我对这门课不感兴趣,大部分课堂时间我都是混过去的。其实我也尝试过想利用一下课堂的时间,但是终究是我无法挣脱学校的游戏规则。本来许多课程的知识内容我是挺喜欢的,比如安卓移动应用开发,这是我上学期学的课程。最终还是考试挂科了,原因也是很简单,我不喜欢那个老师的教课模式,最终整学期的课程浑浑噩噩的过去了。

像安卓移动应用开发本应该是非常好玩的一门课程,自己可以设计与开发出一个好玩的移动app到手机上,然后非常惊叹的和同学说:“这是我开发的手机app”。当然这都是我的幻想,结果我在第三个星期之后彻底失去了上课的兴趣。我最不能忍受的就是,同时也是我发现老师的教学目的是:大家认真听!这个知识点期末一定考!!

我很失望,你教我安卓就是教我考试的吧?每节课不管是大课还是小课,都跟我们讲一大堆理论。合着都是做一些无聊的组件demo。都不见带着我们完整地接触一个完整的移动端应用开发的整个项目流程,我最期待的还是老师能够带着我们完整的经历一个项目的流程,并且讲解项目里面的技术细节,这样虽然没能学到什么具体细节,但是也能够照猫画虎地仿照一个应用开发,再慢慢地去学习,一点一点的学习。结果摆明这是不可能的,老师直接就跟我们讲一单元一单元的知识内容,还是完全的读PPT,这样一学期下来,合着课程设计的项目也是让我们自己来,自己摸索。唉,本想让老师带着我们做的,结果让我们自己做。因为太失望,导致上学期对安卓一点兴趣都没有,课程设计也是到GitHub引用别人的,结果答辩那个时候一个班出现5、6个课程设计雷同的,最终课程挂科也是注定的,还好后面补考通过了。真的是一言难尽,所谓师者传道授业解惑,自从上大学之后,我觉得大部分老师都不能叫做老师了。

不过根据上面的迷茫,我总结了几条自己的焦虑:

  • 考研还是实习?
  • 如何高效学习?是造轮子还是用轮子?
  • 未来我会成为什么样的人?码农和架构师之间有什么不同?

考研or实习?

大三下学期就需要对考研或者实习做一定的准备了,如果决定考研的必须这个时候就要考试备考了,开始巩固基础知识。如果师决定实习的话也要考试背面试题了。

我的主观意愿还是趋向于考研的,毕竟我的学历是二本院校的。如果以后想更好的晋升或者进大厂,肯定要有一个好的院校里的学历。但是客观情况来看,我又有点想去实习,毕竟实习有钱拿,可以早日实现经济独立。

不过从长远的眼光发展来看,考研还是要试一试的。今年12月到明年12月刚好一年的时间备考,希望自己好好把握时间复习,可以考个好的院校吧。

造轮子还是用轮子?

这一个问题是来源于这样一个思考:如果我需要实现一个功能,我是需要重新开发这样一个功能轮子呢?还是到开源社区寻找一个已实现的功能轮子进行调用?

其实对这个问题我自己也是有明确的答案了的,就是要看我的目的了。如果我的目的是处于一个学习的态度的话,那么我就需要自己独立开发这个功能。如果我的目的是快速为该系统实现这个功能的话,我们就需要调用现成的功能库。如果我们对已有的功能库的功能不满意的话,那么我们就需要去魔改轮子了,需要我们去改造这个功能。再者就是没有现成的轮子,只能自己造。

所以总结一下有以下几种情况:

  • 以学习为目的
  • 以系统开发为目的
  • 对现成功能不满意
  • 开源库中没有对应功能

不同的情况就需要用不同的方法去处理。

未来我想成为哪种人?

最近我在B站刷到一条视频就是,有位程序Up主跟我们吐槽自己接私活被放飞机的视频。出于好奇我就点击看了一下,Up吐槽的经过是这样子的:

他说有位粉丝求他帮忙开发一个小程序,600块钱。在粉丝的苦苦哀求之下,Up勉强答应了,后面Up被粉丝放飞机了,然后发视频在吐槽粉丝,并且说自己的项目很完备,怎么样怎么样… 表示自己不会再接这种私活了…被放飞机的项目也开源出来分享

因为我对这种私活项目的价格不清楚,我感觉600块钱真的很多了,但是600开发出来的样子会是咋样的?Up也在视频中给我们进行展示,看完之后我也是挺无语的。

丑陋的界面堪比我的课程设计,如果这个小程序值600的话,我觉得我应该也可以接私活了。我看了下评论区和弹幕,奇怪的是很多人都在说这样的项目600都不够,600也接?起码2000!

我不知道是不是开玩笑的或者是讽刺的话,真的!那样子就跟我们的课程设计一样,这样的小程序,用来运营还是学校的课程设计答辩?

如果粉丝是想用来团队比赛运营的话,这样的小程序真的拿不出台面,也难怪粉丝会放飞机。后面我又看了Up的其他视频,有个50000的私活项目。我也比较期待的去观看,50000的开发项目应该长啥样?我最后也还是失望了,界面堪比我的课程设计!可能在服务器运营方面做得比较好,但是根据Up的自述,他应该三十多岁了,还是大厂辞职的,目前主要工作就是在家接私活,发视频。

不应该!这么长的开发年龄开发出来的项目竟然让我看着像课程设计。真的,去哄一哄大学生让他们做一个项目出来说是要去比赛,他们或许还可以帮你做出一个更完备的项目出来。

总体来看,我上面说的Up就是我最害怕我最终成为的那种程序员或者码农。一路走过去,没有多大的技术成长,还喜欢唠唠叨叨,斤斤计较,对未来也还总是充满焦虑,忧心忡忡。

但是又有几位大神是我向往的,比如:稚晖君

从稚晖君的博客中了解到他从大学本科到研究生这些阶段都不断地做一些小项目,参加比赛,一点一点地进行技术积累,而且他在B站分享地视频都是非常硬核地项目成果演示也非常高质量。最后从Oppo的算法研发岗位到华为的天才少年计划,整个过程都是非常让我受鼓舞的。

我就是希望自己能够这样一点一点的进行技术积累,能够不断成长起来的这种,而不是成长到某个阶段就到了停滞期,如果跳不出这个停滞期估计后面的人生都要废了。

而稚晖君在面对网友的提问是如何学习地,他的回答我是真的十分赞同的。

他说他比较喜欢问题驱动型学习,就比如我们在遇到某个问题的时候,我们要解决这个问题,于是我们就有针对性地去学习相关的知识来解决这个问题。或者是在学习完某些知识之后,就设计出一个项目来把这些学过的知识都运用起来,进行更深刻的理解。

我觉得这个回答可以回答困惑我很久的一个问题就是:如何高效学习?

这个回答对我的学习观的构建起到了一个非常重要的启发作用。

未来我们就是要面对问题和解决问题,对于基础性的知识就是普及性的浅度理解,对于需要运用来解决问题的知识就要深刻地去理解,运用到现实当中来解决问题。

未来发展就是这样一个发现问题、分析问题、解决问题、总结问题这样一个过程。

如果这一个过程做得好的话,我们就跟有可能突破未来的瓶颈期。

码农和架构师

根据我自己的理解,码农和架构师之间的关系就是:

架构师把系统设计做出来,把各种系统架构都明确开来,再分派开发任务到底层的码农手上。码农只需要按照自己收到的开发任务,用代码把系统功能给实现出来。

大致就是上面这样一个关系吧。

所以根据上面的描述,我自己也有了一点思考:

系统设计难?还是代码开发难?

感觉功能代码只要需求明确了,几乎只要是合理的或者是可实现的话,基本代码开发并不难。难的是系统设计,为什么这么说?

比如一个精美的建筑,拿北京体育馆鸟巢来举例吧,建筑工人在没有建筑设计师的设计稿图的指导之下能不能建成一个鸟巢?

一个建筑设计师设计稿图的时候需要考虑建筑材质、结构分析、耐损分析等等过程步骤…如果其中哪个环节出问题都会导致建不出高质量的建筑物来,如果受力分析没做好,建筑物还可能面临倒塌的风险。

同样对于一个软件系统来说,如果没有考虑到各种设计细节的话,那么这个系统就会处于一个不安全的状态。所以从难度和压力的角度来比较的话,架构师的工作会更难和更重要一些,虽然架构师不用重点负责代码开发,但是架构师必须给系统开发指定技术路线,这里就可以看出,架构师其实对技术的理解比码农的层次要高很多。

码农只要需求明确就可以开干,但是思维不会得到成长,因为软件系统设计的思维调动性要比代码开发强很多,码农给不了系统一个很好的决策,但是系统设计师却能够在面对不同问题的时候给系统一些决策进行调整。

所以说,从长远的目光发展来看的话,我建议自己不必急于学习什么Java代码开发之类的知识,先学设计,先设计出一个系统项目来,然后再学习对应的编程语言,看那些代码能够实现自己项目中的功能。这就是一种问题驱动型学习思路。

这就好比有几个比较有争议的话题就是:实践得真理还是真理再实践?

我比较赞同实践得真理这一说法得,这就是在实践的过程中发现问题、解决问题、总结问题,最后得出真理的一个过程。

问题驱动型学习思路,系统设计难就难在我们的思考必须要非常全面,如果有什么疏漏的话就回导致不可预期的风险,这需要不断积累和学习地,系统设计明确之后,我们就开始有问题了,我们要怎么实现这些功能,于是我们就带着问题去学习编程语言,比如java,Java可以实现我这个系统中的这个功能吗?然后针对性的学习,再给系统总结技术路线。

在传统角度上,我们通常都是直接找一本Java的教程书籍,从头到尾刷一遍下去,刷完之后还不知道要做些什么?有些好的书籍还会到我们实战一个项目,但是这些项目是我们要的吗?对我们有意义吗?如果意义不大那么我们学习地效率就很低,因为没多少成就感,没解决我们的问题,还没能运用对应的知识来解决我们的问题,这种状态非常低效。

学习一门编程语言首先就需要有一个明确的目的,这个编程语言能解决我什么问题,这样我去学它才有意义,否则我不知道它有什么用我就去学它,可能效率会非常低下。

上面的内容其实很早就像写了,只不过一直梳理不清自己的思路,知道接触问题驱动型学习这个思路之后,我才发觉学习设计模式比学习代码开发还要重要。当然包括数据结构和算法分析这些基础知识。希望自己好好消化,慢慢学着去学习基础知识,学习设计模式,学着去发现问题、解决问题…

如果喜欢这篇文章,可以给作者评个份哦~

原文声明: "转载本站文章请注明作者和出处Nothinglin ,请勿用于任何商业用途"

公众号:苦逼的学生仔

文章目录:

成就墙:

考研倒计时:

  • days

  • hours

  • minutes

  • seconds

最新留言:

订阅作者: