我学编程时最后悔的事!

百家 作者:程序人生 2021-07-21 17:41:06


作者 | 鱼皮

来源 | 程序员鱼皮(ID:coder_yupi)

我是如何在大学期间做了那么多事情、学了那么多编程知识的?

但其实我要说,只要大家按照路径学习,一定能够比我学的更多更好 !

为什么呢?

因为首先,大学期间,我并没有 “死学习”,除了学习什么都不干,而是花了很多时间在学习无关的事情上。比如我作为班长要管理班级事务、我也玩游戏(手游 + 端游)、我也参加学生会和社团、也爱参加活动等。

其次,就是我对编程本身没有天赋,不是像大家说的一看就会,一下就能写出代码。之前也讲过,我在高考后自学编程读了几十页书就放弃了,大一期间也是各种踩坑,各种看不懂,甚至在 C 语言考试的时候链表题都做不出来。只不过后来凭借着我对编程强大的兴趣和更多地熬夜砸时间,并且持续总结踩过的坑和学习方法,才帮助我学到了这么多编程知识,才能找到一份大厂的工作。

但这些都不是关键原因,最最最最最重要的是,其实我在学编程的时候,有一个 坏习惯 ,直到毕业后才意识到真的因此 白白浪费了太多太多的时间 。

这也是我学编程时 最后悔的事 ,如果我能早点醒悟,应该能学到更多知识,身体和头发也会更好些。

下面把这件事以及我毕业后的自救方法分享给大家,希望帮助大家少走弯路,高效学编程。


最后悔的事


我学编程时最后悔的事就是:做事不分主次,花了太多时间在技术无关的纠结上。

举个例子,我在大三学习微服务的时候,独立开发了一个安卓 APP 叫 面试君主 。从产品功能、界面设计再到前后端开发和上线都是我一个人负责,断断续续做了两个多月。

当时做的 APP

听起来好像还不错对吧。但是如果我说,这个项目其实我写代码的时间大概不到一半,大家会怎么想呢?

当时完全没有计划这个 APP 要做多久,所以直到我做完这个项目,在总结复盘时才发现:我特么的竟然花了 60 - 70% 的时间在产品功能和设计上?!

产品功能倒还可以理解,毕竟你在写代码前要先明确要做什么、为什么做。但我竟然浪费了大量的时间在设计上!

一方面是纠结项目的界面,比如字体大一点还是小一点,框框宽一点还是窄一点。另一方面是到网上找素材,比如图标和背景的选取,一会儿觉得这个好看,一会儿又觉得另外一个好看,犹豫不决。。。老强迫症患者了。

哦,天呐!要知道,我是一个完全没有审美的程序员,本来在变量命名上我就已经很纠结了,为什么还要花了这么多时间在自己不专业的事情上!

大家肯定会问了,你怎么知道浪费了多少时间呢?

其实这只是粗略的估计,我当时每天晚上基本是在固定时间写代码,每天提交 1-2 次。通过分析两次提交代码的差异,我惊讶地发现,经常是间隔 2 个多小时,我就只改了图标或者界面的代码!

对比两次提交

本来做这个项目的 主要目的 是为了学习后端微服务,前端是 次要 的,只是为了方便看到效果。但没想到,竟然在上面白白浪费了那么多时间。所以对我来说,做这个项目的过程是极其失败的。

当然,这只是一个例子,我在学编程时,做过的无意义的纠结实在太多了。

而且我不知道大家有没有这种感觉,尤其是在夜深人静的时候,思考会更迟缓,无论是改 Bug 还是调界面都更容易使人陷入纠结,不知不觉时间就溜走了,有的时候我第二天醒来甚至都不知道昨天自己到底在熬夜做什么!

熬夜努力或许没错,但熬夜做无意义的事真的是罪过!

这个坏习惯一直陪伴我读完大学,直到工作后,我才意识到需要自救。


自救方法


上面说的是我自己觉得很后悔的事,不知道大家有没有同感。

接下来我要分享的 自救方法 ,不仅帮助我解决了纠结的毛病,还帮助我告别拖延、提高了做事的效率。

方法概括成一句话:将大的任务(目标)拆分为多个子任务,并且给每个子任务设立一个 deadline(最后期限),按照计划去完成。

为什么要这样做呢?分别解释一下。

任务拆解

我们总是本能地抗拒有难度的、或者较为庞大的任务。所以如果不对这些任务进行拆分,我们就很容易出现以下 3 种情况:

  1. 不想做,不愿做,拖到最后

  2. 做的过程中发现问题,中途放弃

  3. 直接放弃

而且大部分情况下,相信大家都是 直接放弃 对吧。

将大任务拆分为小任务后,我们就可以逐个击破,通过完成一个个小目标收获成就感,保持热血。

设立 deadline

很多时候,我们做事拖延、磨叽、纠结,就是因为没有事先给自己定下截止时间,所以总是不紧不慢,想些有的没的,忽视了关键目标。

像我上面讲到的,因为没有 deadline,导致自己在开发 APP 时很放松,才过分地纠结设计和界面。如果我当时给自己设立一个 deadline,就必须 1 个月内完成,那我相信自己也是可以做到的,而且可能会更好。

deadline 的作用在我的日常工作中体现的更加明显,以前在学校做项目的时候,除了课堂作业,很少有人给我 deadline,或者说比较宽松。但工作中,老板说这个需求这周上线,那你就必须在这周完成,除非有合理的理由,否则根本没得商量。因此,也是在工作后,我才意识到自己在学校的效率真的是太低了,才变得更加高效。

还有一个有趣的现象:在我自己维护工作室、以及跟其他小伙伴合作开发的时候发现,同一个任务,给他们 3 天的时间能按预期完成,给他们一周的时间反而完不成。

所以不仅要设置 deadline,而且要多设置,给每个子任务都设置 deadline,持续给自己压迫感,更有助于帮助我们完成目标。

推荐好文:为什么你的 deadline 永远只有 dead?

地址:https://zhuanlan.com/p/28404083


实际应用


方法介绍完后,结合编程举几个实际应用的例子。

做项目

以前参加比赛做项目时,我一般都是拖到最后才匆匆忙忙提交结果。

但如果现在让我做一个完整的项目,比如编程导航,我先定个目标:1 个月内上线。然后把任务拆解为:先用 3 天时间确定产品功能、再用 1 天时间参考同类产品的设计(花更多时间在开发上),用 1 天设计库表、用 7 天开发前端、3 天开发后端(1 天开发登录、2 天开发基础增删改查),剩余的时间拿来填充网页内容和优化。

这样一来,当我没有按照预期完成小任务时,我会反思原因,并且动态调整剩余工作的时间,以保证整体目标预期达成。

学编程

以前看书、看视频学习某项技术时,我可能就是想学什么、点进视频就开始学了。也没有想过计划用多少时间把它学完,结果就是导致学习节奏慢,每天看个几节课。可能今天的还没看,昨天的就忘了。

但假如现在让我学 Java,我会先扫一遍视频(书籍)的目录,根据视频的时长和章节,定下总的学习目标,比如 1 个月学完 Java 基础。然后将目标拆分成:3 天搭建 Java 环境和跑起项目,5 天学完 Java 基础语法、10 天学完 Java 面向对象、5 天做一个 Java 实战项目、再花 5 天学习高级特性和复习等。

刷算法

很多朋友跟我抱怨说自己会在一道算法题上纠结很久,多达几个小时,结果到最后也没做出来,非常难受。

我大一做 ACM 练习题的时候也是这样,想不通就硬想,生来倔强,就以为自己能做出来。现在想想,太亏了,虽然这道题自己想出来可能会很有意义,但不要忘了,你大学的时间是有限的啊!想出来一道题的时间,说不定别人都学了一个新技术了。

因此,我会给自己定下刷算法的目标:每天 2 - 3 道题,每道题限时 30 分钟,想不出来就直接去看题解,有了思路再去想,再多复习巩固。由此,最后我用了接近一年半的时间刷了 1000 多道算法题。

芯片龙头出大招!向梁孟松等 3944 名员工发 13 亿,每人到手超 34 万

腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判

福利内卷时代来临!腾讯为 3300 名员工发 11 亿红包

字节跳动接力反内卷:宣布取消大小周,直接降薪 15%?员工炸了!

因融资失败,应用崩溃,3 名程序员被“祭天”!

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接