Featured image of post 技巧 | 小狗熊学大编程继续行进中熊

技巧 | 小狗熊学大编程继续行进中熊

——这种绕一大圈的感觉就像跑马拉松归来还是起点

⚠考虑到这个其实可能是敏感话题,严肃些说,全文归根结底只是小编熊在一堆混乱的信息流中摸索的经验之谈(并且连载中随时可能推翻重写),有不恰当之处请友好讨论,没有谁出生就是专家,但是有熊出生就是暴君,小编会斩立决不友好的人,感谢配合。

1会不会有点意识流了

在(主动)误入Obsidian的坑后,自然而然熟悉了一些markdown语法,并且开始鼓捣(抄)一些插件——毕竟Obsidian本质就是洋娃娃换装游戏?!你需要给只有骨骼的小人安好肉和皮并且给小人穿上好看舒适的衣服(这换装游戏正经吗)——鼓捣鼓捣着,Obsidian作为我的半自动智能管家稍微把之前一团乱麻的生活变成了半团乱麻,但依旧太乱了,其实我们都知道整理乱桌子不如再找一张新桌子开始新的生活,呃听上去有点掩耳盗铃,但如果人性不如此吃着碗里的看着锅里的人类社会经济要怎么运行起来呢,意思是我看中了网友的建站教程。

那个时候一切知识都是新奇的,意思是一点都看不懂,主机是什么,vps是什么,web是什么,css是什么三件套是什么,你们为什么经常这种“你懂的”语气,我要从哪来又要到哪去?

每一个知识点都会引出一串新的名词,在知识的大海里我感到的不是捉到一个个美丽贝壳的惊喜,而是无尽的焦虑。

一气之下我决定——不如就彻底来直面深渊,不是它死就是我亡。(也没这么热血)

好吧归根结底只是我的大脑实在无法理解一个个无序的片段。

还有一点是程序员是公认的靠技术赚钱的行业而且不像其它技术多数需要线下有师傅带甚至需要一些家族血缘关系,至于前景,瘦死的骆驼比马大总比〇〇业好——对,我缺钱。

初心一开始只是为了建站吧……?但是现在这一刻起初心变成了,转行。

2互联网怎么不互联

都说互联网好,确实是好的,但如今“日记”着实有点多,大家本质是在记自己的日记,对于我个外人来说很难看懂,免费的还真就是最贵的,但是我也没钱找专人辅导,就导致在这个过程中花了不少探索的时间,只是为了找条入门学习路线。

毕竟,真的,门也太多了。

c++、java、python……看着就头晕眼花的语言,找着找着又听网友说什么操作系统计算机网络原理软件工程是必修课,又说现在你只学语言和这些可不够现在都是全栈工程师了什么前后端对了对了再加上人工智能可不能不学呀不然你就要被时代抛弃啦,然后我简单算了算,再过20年我应该能将将入门,敬请期待吧。

……我说等一下。

不对吧,这是入门还是入坟呢。这句话虽然常被人挂在嘴上但多数是调侃,你们来真的?

于是我想,是不是方向错了。方向比努力更重要就像我鼓捣了3天的Git命令最后发现在Github Desktop上就鼠标点点的事。(希望你会听懂这个有点残酷的黑色幽默小笑话)

我不需要那么精细的学习,就像我落笔写字的时候也没有说我必须通读全世界经典并且融会贯通才有写字的资格吧。如果真是这样,咱们臭码字的地位也不会——(下略)

我尽量不带恶意地想,或许是我搞错了工具书和工具书的区别,一个是可以跟着操作的,一个是类似于字典其实更适合查漏补缺的。

后来我再一想,其实这些问题都可以通过外包解决,也就是报班,市面上的编程课还是比较成熟的,指对科班有科班的卖课,对转码有转码的卖课,在速成就业上还是有套方法以及一般还是会和一些公司招聘有资源交换,可能甄别也不太好甄别的是报班之后这个团队靠不靠谱不仅指带课的老师还有后续的运营人员,但自己探索也会遇到无数坑,人生就这样!如果你已经报班了,那就听机构的,毕竟钱已经花出去了,相信钱的选择。

但是我也说了我没钱,这也是问题所在。(希望看到这句话的金主妈妈做出一些重要的决定比如说资助我领养我〇养我之类的)

在找了一堆所谓的入门素材后我发现脑子越来越乱,尤其是不同的博主都有自己的见解以及卖课的课程,以及我想到一个问题,我毕竟不是科班的,要不我们来看看科班学了些什么参考一下,于是在浏览了数份国内外的大学课程设置之后我先关闭了国内的。

常见的课程安排总是数学如影随形,怎么说,有点违背人性了。(只是因为对数学的恐惧)

这可能也是为什么字典型的编程工具书会喜欢把数学摆在第一课,因为确实现状也有一定的影响。

不过数学会是必要的,但我觉得不是现在。

不过在了解科班学习路径的途中我也了解到一个其实被我忽略的信息,每个专业在这件事上大同小异,即工作前如果要证明自己的专业度,通常办法是,考证书或是打比赛或是自己闯出个名堂。比较遗憾的是比较“亲民”的赛事一般只针对在校学生,毕竟不设置这个规则的话一些富有经验的老手应该会呈碾压之势,同时也说明黑客松也不会是我的首选除非有人想带我但到现在了暂时这群人还没出现 (暗示?!)

相对可以实施的可能也就看看通用证书,没想到兜兜转转又回到考试,这大考小考的一生……

会有人说要不要为了转行去考研408,这个想法不能说危险吧但。

人生苦短啊。人可以保持激情但是别疯狂,疯狂是不好的。当然,这是针对我自身情况得出的结论,不同情况需另外讨论。

说回通用证书,别说,还真有,就像工作软件计算机二级Office一样,计算机这边有个【计算机技术与软件专业技术资格(水平)考试】,为什么拿计算机二级举例呢,因为这玩意相当于一个初级考核,证明你确实达到了入门水准,至于你真实水平,是不能仅靠这一个证据来证明的。毕竟人类实在太多了行业竞争大。

按常见说法即“没有含金量”。

不过我不是很在乎什么含金量,真正的含金量是ip吧,这也是我做任何事的决策逻辑,即回过头来看我们需要什么,我需要一个能相对缩短了解计算机这个科目体系花费的时间并且得到一个转行入门的证明。

当然,从事后看来这依旧不是最佳策略,因为信息不够的原因导致我在稍微算是深入了解软考之后发现它其实更注重理论,所以它能补齐一些我理论欠缺的部分,但是实战部分它是缺少的,而编程实战是很重要的一环,重要到甚至理论后补也没关系(但是前情提要也说了我脑子没办法跳读),这也是计算机这行的卖课为什么可行,而一说到编程大家就说别问库库学语言跟着做项目学完就就业,从某种角度来说确实是的。

那么接下来我会以优化过后的方式来梳理一个此前没有接触过计算机行业的人怎样相对快速去了解计算机这个专业领域。

当然,仅供参考。

3半路出家的行动策略v1.0

3.1双线并行,量力而行

在上文中熊说到,一边是理论一边是实战,理论部分我依旧还是会以【软考】为例,来说一下我体感相对比较舒适的学习顺序以及我对每部分的个人理解,实战部分简言之即学语言,一般会分成两个路线,【前端】和【后端】,现在常说的一个人当三个人使的全栈意思就是前端+后端 (哦可能还包括产品经理客户经理之类的一个人就是一个组织) ,人话简单来说前端本质是展示数据的后端是维护数据的。

说到这里会不会有友友已经晕过去了,那么让我们在这里做个小总结:

我们需要解决2件事,即理论和实战,理论部分将参考【软考】大纲,实战部分将分为【前端】和【后端】。

从打工角度以及时间规划角度,实战的优先级高于理论,双线并行当然是最佳,但如果无法同时顾及就先学会抄代码,当然抄代码这里也需要解决1个问题,关于【前端】和【后端】的抉择。

大致参考的(编程领域真的很多男讲师,这对我这个小众爱好者来说感觉是非常遗憾的,欢迎向熊推荐女讲师非第一性讲师):

Java从零基础到做项目(女讲师赵珊珊,在bilibili有自己的账号叫“珊珊不爱唱歌”)

一些官方文档,官方文档对我来说更像字典很适合自查

3.2CtrlCV工程师(连载中)

3.2.1前端

前端的路径相对比较统一而且没什么争论,HTML+CSS+JS,而代码之外更注重的其实是美学的部分。前端和后端能够“分离”其实是人为的,因为理论上来说一个人不应该做那么多事 (不是从人文关怀角度而更多其实是从规避一个员工掌握太多公司信息从而公司被拿捏的角度) ……

3.2.2后端

现在国内市面上最火爆的毋庸置疑是JAVA,它有一套相对成熟的路线,但缺点是人真的太多了,多到你会JAVA不是优势你不会JAVA可能会是劣势,加上人一多想法就多,于是你就要学越来越多的东西……此外说得比较多的肯定是C++,Python,以及新兴又讨论得比较多的语言GO,关于语言排名可以带着相关关键词在搜索引擎上查找,关于语言的好与坏其实语言诞生之初都有其相对专攻的用途,如果是从打工角度其实不如打开招聘软件做参考,这也是为什么不会推荐新兴但没有人用的语言,因 为 没 有 人 用。

搜索引擎一搜能看到有不少做语言市场占比率排名变化的网站,像是TIOBE指数,对应中文版(我并不知道这是否是官方的)TIOBE指数中文,这些趋势也可以作为你起初选择一门语言的参考,以及这些分析语言使用趋势的网站也很爱进一步分析语言使用人数变化背后的原因,像是C#的使用背后很大原因是……游戏市场。

JAVA

阴差阳错之下我开始鼓捣JAVA,结合后知后觉的开悟浅说一下整个JAVA的学习其实就两部分,一个是基础语法一个是框架(即模板),中间有很长一段时间都会在框架上挣扎因为JAVA这个语言吧,人类需求越来越大框架也在不断推出新品,像近年常提到的框架是【springboot】。

所以通用路线其实是:

第一部分:【JAVA基础(也会有课程名叫JAVASE)】→【MYSQL】(放相对永久数据的地方)

到这里最基础的部分结束,迎来框架部分,第二部分:像这里其实可以灵活调节,因为从产品诞生的顺序来说是【JavaWeb】→【ssm(Spring框架、SpringMVC框架、MyBatis框架)】→【springboot】以及配合【经典项目实战(例如常被调侃的外卖系统、图书系统)】,但实际上JavaWeb里的一些东西在ssm出现后被“淘汰”了,ssm已经被springboot“淘汰”了(用引号是因为有些不是真的淘汰而是精简了),也有人可以接受【springboot】的逻辑所以可以倒着学即【javaweb的层(因为这是最底层的概念还是需要先了解)】→【springboot】→【ssm】→【JavaWeb】,因为逻辑上来说只要你会用springboot就可以开始做项目了,但如果没有办法适应可能还是需要按照上面说的顺序。再继续同样属于第二部分但有些课程会放在第一部分但其实要实际开发一段时间才懂在说什么的【设计模式】【多线程】【并发编程】【数据结构】【JVM】。

接下来的是太过常见的思维导图,思维导图比路线要详细很多但更多是查漏补缺用,不建议开局就一大片思维导图,思维导图实际上是我们有了基本认识之后回顾用的东西而不是按照思维导图进行学习安排,而且每个讲师习惯不一样如果依赖太详细的思维导图可能反而会导致知识点零碎,以下是我Ctrl C+V过来的一个思维导图:

  • JAVASE
    • 计算机基础
      • 简单的Dos命令
    • 笔记梳理(博客)
      • Markdown语法
    • JAVA初识
      • JAVA的诞生,版本SE ME EE
      • JDK 工具包
      • JRE 搭建环境
    • JAVA基础
      • 注释
      • 关键字
      • 数据类型
      • 类型转换
      • 变量常量
      • 运算符
      • JavaDoc
    • 流程控制
      • Scanner
      • 顺序结构
      • 选择结构
      • 循环结构
      • break & continue & return
    • 方法
      • 定义:修饰符 返回值 方法名(参数名)(return 返回值)
      • 调用
      • 重载
      • 命令行传参
      • 可变长参数
      • 递归
    • 数组
    • 面向对象
      • 类与对象
      • 构造方法
      • 封装
      • 继承
      • 多态
      • 抽象类
      • 接口
      • 内部类
    • 异常
    • 常用类
      • Object类
      • Math类
      • Random类
      • File类
      • 包装类
      • Date类
      • String类
      • StringBuffer
      • StringBuilder
    • 集合框架
      • Colletion
      • Map
      • Collections工具类
      • 泛型
    • IO
      • 字节流
      • 字符流
      • 节点流
      • 处理流
    • 多线程(了解)
      • 进程和线程
      • run() start()
      • 线程创建方式
      • 静态代理
      • Lambda表达式
      • 线程的状态
      • 线程同步
      • 线程通信
      • 线程池
    • 网络编程
      • IP
      • 端口
      • Socket编程
      • TCP
      • UDP
      • Tomcat
      • 聊天通信
      • 文件上传
    • 注解和反射
    • JUC编程
    • JVM(了解)
    • 设计模式(了解)
    • XML(了解)
    • 数据结构和算法(了解)
    • 正则表达式(了解)
  • 数据库
    • MySQL
    • JDBC (JAVA操作MySQL)
    • UML类图(了解)
    • 数据库设计
  • 前端
    • HTML
    • CSS
    • JS
    • jQurery
    • Layui / BootStrap
    • Vue
  • JAVAWeb
    • Tomcat
    • Http
    • Maven
    • Servlet
    • Session + Cookie
    • JSP
    • MVC三层架构
    • JSTL + EL表达式
    • 过滤器
    • 监听器
    • 文件上传
    • 邮件收发
    • 富文本编辑器(了解)
  • SSM框架
    • Git(工具)
    • MyBatis
    • Spring
    • SpringMVC
  • Linux
    • Linux基础
    • Redis
    • Nginx
    • Docker
  • SpringBoot
    • 基础
    • 配置及原理
    • 持久层操作
    • Web开发
    • 缓存
    • 消息
    • 检索
    • 任务
    • 安全
    • Dubbo + Zookeeper分布式开发
  • SpringCloud
    • 微服务及微服务架构
    • SpingCloud
    • Eureka注册服务与发现
    • Feign + Ribbon负载均衡
    • Hystrix熔断机制
    • Zuul路由网关
    • SpingCloud Config配置中心
  • Hadoop
    • 大数据时代
    • 基础
    • 环境搭建
    • HDFS
    • MapReduce
    • Yarn
    • Hive
    • Hbase
C/C++

C/C++和其它常说的语言不太一样的一点是其它语言是造车的轮子,而C/C++是造轮子的。

C和C#和C++的关系有点像……家族关系。由于熊还没正式从这里起步因此防止误导只谈这么一点。

通用路线

Golang

Golang的通用路线网友惊呼很简洁,不过我觉得其实是因为JAVA太……(欲言又止),逻辑也是从基础到框架,而数据库、前端那些是互通的也是几乎必备的:

  • 基础语法
  • 主流Web框架(Gin Beego Iris)

3.3理论基础超基础版

软考,全称是【计算机技术与软件专业技术资格(水平)考试】,需要说明的是,就和淘宝存在很多你看不懂的套餐一样,这个证书分了初、中、高三大类,然后其中又细分了数小类,加总起来将近30个小类,是针对不同需要的人群来的,按我们的需求相对符合的是中级的【软件设计师】,对应更高一级的是高级的【系统架构设计师】,高级与初级的最大区别其实是多出一个写800字论文环节……

顺带一提关于熊做真题的逻辑,首先,打印出纸质版,因为每天看手机的时间很长,当然,能适应的也可以用电子版。根据你参加考试的批次留出上一批次的试题,例如参加的是2024年下半年的考试,可以留出2024年上半年的试题放在中后期写,接下来从2023年下半年倒着往前写,这样就算时间不够也能确保你先把最重要的事情做了;选择题和客观题穿插着写,选择题可以一套一套做因为你理论上已经把知识点全过了一遍,没有可以蒙的主观题按【模块】练,而且优先练习不熟悉的部分。

大致参考的(比较遗憾的是绝大多数都是男讲师,欢迎推荐女讲师非第一性讲师):

2022年软件设计师学习路线(男讲师,下述各部分路线参考得最多的也是这篇)

物理视角通俗讲解编程(男讲师,有点仿油管动画讲解那个意思)

Java从零基础到做项目(女讲师赵珊珊,在bilibili有自己的账号)

从0到1速通java(男讲师,纯讲基础部分,那个时候还在连载中,前半部分到接口部分我觉得讲得算通俗易懂,后半部分我没看)

半小时看懂<计算机网络>(男讲师)

深入浅出数据结构(国外男讲师)

博主:爱上半导体(女博主,各种小科普)

软件设计师参考书及考试大纲

《大话设计模式》(男作者,里面的“时代局限性”有点严重)

——第一部分——

1.计算机系统(感想:计算机常识,涉及到一点点的数学小知识但实际应用中感觉大家会直接用码农专用计算器吧)(涉及到的知识点:硬件结构如CPU/IO/CISC/RISC、计算机内数据的表示及运算也就是进制、性能评测如校验码)

2.程序设计语言(感想:看似有一点代码但其实一点没有)(涉及到的知识点:汇编、 编译、解释)

3.数据流图(感想:主观题,等看完所有视频再回过头来看其实这个东西更像特意搞了个一般人能看懂的可视化手册,这很亡羊补牢)(翻了下参考用书,其实属于结构化开发方法里的内容,基本元素:实体、数据存储、加工、数据流)

4.知识产权(感想:因为只需要了解最基础的法律常识,很宝宝巴士)

5.数据库(感想:其实感觉更像逻辑题?!跟抄代码阶段说的数据库说有关系吧也有但是这个更多是代码之外的东西,一点点小小数学知识,一点点矩阵,不知道矩阵的花10分钟找个视频看下直到是个啥玩意懂两个矩阵相乘怎么算入门来说已经够够的了)

6.E-R图(感想:主观题,我的见解同数据流图,亡羊补牢,然而人类补牢一张网没法全补齐于是设计了很多张不同但本质大同小异的网,这很小小人类)

——第二部分——

7.(1)一门后端语言的基础知识(因为这个讲师选的JAVA于是我就用的JAVA,而近几年客观题都会考python知识,然后主观题4算法题是JAVA/C++二选一,因此语言是逃不过的?!最早期建议还是只选一个,不要学杂了……)

7.(2)面向对象(感想:等基础打好了再回来看应试的考点你会发现……至少能看懂在说什么了)(涉及到的知识点:类、对象、方法重载、封装、继承、多态)

8.UML统一建模语言(亡羊补牢三度袭来)

9.UML-用例图(主观题)

10.设计模式(感想:如果之前的代码知识打好基础了,这一部分就不会那么折磨,惨痛的教训之小编熊因为没能悟到这一块想要理解其逻辑应该回到打代码本身因此卡了2个月,而设计模式人话版就是因为各种情况各种需求大差不差,于是就有人开始公式答题了,代公式就是快(等),然后人类搞出来了26种模板,其实设计模式更多是工作几年之后才能理解到其中好处的东西(网友自己说的))

11.设计模式(主观题,如果没有自己打过代码可能会看着很抽象,所以打代码是逃不过的)

12.操作系统(一堆概念)(涉及到的知识点:进程、存储……)

13.结构化开发(感想:设计原则,说明开发过程中一些原则,内聚啊耦合的,主要是翻译不说人话!)

14.软件工程(涉及到的知识点:软件开发过程各种模型、测试方法、维护)

15.信息安全(感想:经常上网的人应该可以减轻很多阅读门槛,主要核心内容即人类在线下斗,在线上也要斗……)(涉及到的知识点:防火墙、病毒、网络攻击、网络安全)

16.计算机网络(感想:协议的部分在我看来很抽象……)(涉及到的知识点:协议簇、命令……)

——第三部分——

17.数据结构(感想:从这里开始聚焦于数学题………………建议油管上找到印度姐印度哥讲师配合着看)(涉及到的知识点:链表、栈、队列、树、图……)

18.算法(感想:看算法的过程中熊基本处于一种大脑放弃思考的状态,但是基础知识看得懂的就记住,原理不难?!本质就是人类想省钱省时间,人类真爱折腾啊……算法部分在客观题主观题都有,同理,建议油管上找到印度姐印度哥讲师配合着看)

3.4习惯问题

惨痛的教训之1:一定要跟着动手,无论是理论考试的应试还是抄代码,只用眼睛看你是真的不知道大脑多能欺骗你的。

之2:完美遵循计划很难(对我来说),但是需要大概估计出来2个重要时间:1.你一天能真正为这件事专注的时间是多久(以小时计)2.你一个月大概能为这件事腾出多少时间。因为以视频教学我们需要花费的时间是相对客观的(如果你选择了看书那么可能需要以x页或章/次来计算),战线拖得越长心理防线越容易被击溃而且大脑机制就是会清除掉你不常用的知识,因此我们需要先估计出一个大概的时间。要注意的可能是即便视频1.5倍速播放(我习惯1.5倍速),最好是按照视频原长度统计,因为你做笔记要时间,理解也要时间。

之3:不要想着一个视频一次搜索就能解决我们的小问号,在各种抽象概念的接连袭来下问号很多是很正常的,多用搜索引擎,不抗拒AI的多去折磨GPT,AI作为数据库太好用了,而且你问题再多再小白它也不会骂你,当然它可能“骗”你所以得到解答之后我们要去验证。

comments powered by Disqus