[计算机] 自学简单编程可行吗?

查看:798 |回复:14 | 2021-6-29 00:56:56

您需要 登录 才可以下载或查看,没有账号?注册

x
正确的学习方法、学习路径,不要说简单的编程,转型都是可以的,但是自学编程有几个非常大的坑,很多人因此走了不少弯路
1、如果你不是计算机、工科专业,不是以编程为生的大学毕业生,不要去用国内的大学教材来入;不要去学考验人性的C/C++、Java、汇编等,
这些东西已经不适合你,推荐你去学Web前端(HTML、CSS、JavaScript)、去用PHP搭建网站、或者学Python(取代VBA来提升办公效率,替代Excel、PowerBI来做数据分析、可视化)、小程序等,一周可入门,好玩又好学,对工作有帮助,深入可提升工资,也不排除可转行;

大学教程讲理论比较多,所学的内容只有你在月薪2万以上才开始发挥作用。即使月薪2万以后,也不建议你使用国内的人写的计算机教程,国内越是名校,学历越高,就越会用国外写的教材。而美国学计算机理论之前在高中就有AP课程,而国内绝大多是计算机零基础。
C/C++、Java不学习半年以上,你是很难开发出一个实用的东西的。用C++写贪食蛇小游戏?别搞笑了,你觉得你这游戏实用吗?用Java开发安卓?你零基础学半年,能开发一个App上线吗?用Java做网站?稍微简单的JSP已经淘汰了(当然国内有些外包公司还在用JSP)。
如果你花半年时间学前端、Python、PHP,不仅可以开发出实用项目,你都可以来接外包、来找工作了,甚至可以转行了。
很多人居然推荐已经工作了的人或者不想从事编程行业的人从汇编、网络、C等等这些学起来,你可能大学是这么读过来的,但是这只适合计算机相关专业的人,不适合其他人,你的这些推荐太误人子弟了。
(计算机、工科相关专业还是要把C/C++或Java给学好的。)




2、不建议你学易语言,不推荐你学VB、VBA,因为这些没有前途,不建议你去学Julia,Dart,你没有基础就不要追逐过新的东西;

有些方向不实用,也就是实际开发已经不作为一个通用的解决方案了,比如JSP、Flash这些;
有些方向在国内用的人会越来越少,比如VB、比如http://ASP.NET
有些方向没有前途还会阻碍你的进步,花大量时间折腾没有意义,比如易语言;
有些方向不适合新手去学,新手学了没用,哪怕再怎么流批,比如汇编;
有些技术听起来很有前途,但是不适合新手去跟风学,比如Dart,Go,你啥基础没有你也学不通。

3、不要去买书来啃好几周,不要不动手光看视频光看书,学技术一定要先从安装开发环境开始,编程只有动手实战起来才会变得简单。很多人一上来就问,编程难么?我零基础能学会么?这个知识是用来干啥的?你问这么多干嘛?有些人收藏了几百篇好文章,花的时间不可谓不多,但是就是没有开始实战起来,这能学会么?

有些人买了一些经典计算机教材(通常比较厚),一啃就是几个星期,甚至个把月。更可怕的是直接去啃编译原理、算法导论、计算机系统、网络编程这些书,不说你啃不啃得下来,你即使学完了你也不知道可以干嘛啊!!!
JS直接啃犀牛书,这本书可有1000页。很多人啃了半天学不下来就说编程好难。你学习方式方法有问题,编程能不难么?
PHP、Python、前端这些如果你学习两天到一周都不能上手实际开发一个东西出来(非写几行代码),你就走了很多弯路。


4、大学生千万不要用考证的方式来学编程;如果学校对二级计算机等级考试有要求,就考Office或Python吧,混过去就行了,不要去参加什么软考之类的,浪费你的时间。

很多学生视野比较狭窄,他只能接受到学校和身边的人灌输给你的知识和观念,只能了解到有限的评价体系,觉得考了这些计算机等级考试和软考才算得上是优秀,学编程也往往以这些知识为目标。这些完全可以理解,因为我大学时也考过。
事实上评价一个学生在计算机方面是否真的优秀,一个是你对技术知识的深刻理解,这一点你可以像写论文一样多写写技术文章,培养自己的研究探索精神;二是你对项目产出能力,你能够证明给自己、给他人看的,项目是非常重要的一个依据。对于一个初学者,该如何输出自己的东西这里面有非常多的学问,以后我再整理一下。
学校对于优秀学生的评价体系与企业对于优秀员工的评价体系差异是非常大的,而你个人对于学技能的追求,你自己心里也有一套标准,这三者之间有很大的不同。但是很多零基础想学技能的人却被要求按照学校的标准与方式来学,怎么可能学得好?
(当然有些技术方向的证书是可以考的,比如网络工程师CCNP、运维工程师RHCE、RHCA,PMP这些行业还是比较认可的,软考什么的就算了)

5、学编程应该以项目开发为主,不要东学学西学学,到时候啥也没有掌握。不要看人家说Python好就去学Python,一会学C,一会学Java,招聘时就说自己掌握这些语言。要知道不没有开发出一个网站、一个网页、一个App,一个实际的东西、项目出来,你学再多,都等于半成品,都不算学会。

以项目为导向的方式来学习,即是符合程序员学技术的方式,又能让你对学技术欲罢不能。学习技术本来是一件可以让你很有成就感的事情,如果你学编程一个星期都受挫茫然没有效果,只能说明你学习方式不对。
国内编程教育思路很有问题,编程本来就是一项技能,所谓技能就跟做菜、骑自行车一样,你学了就可以实操。但是国内编程教育却要求你成为一个有品味的厨师,给你灌输菜系的知识,告诉你色、香、味、形、器、意、养等做菜的道理,就是不让你动手做菜。很多资深厨师会告诉你这道理太重要了,厨师不懂这些算个p的厨师,但是你明明想学的是做菜,有些人就说了,你只学做菜,跟进技校有什么区别?太low了。但是你明明就没有资格以及不想成为厨师啊....

6、很多编程零基础的人一上来就想学人工智能、大数据等这些看起来很有前途的方向,妄想通过培训半年就能找到好工作,这些都已经不切实际了。(特别刻苦肯学,有理工科背景,热爱数学、喜欢编程,能坚持学习一年以上的例外,国外这样的例子太多)。很多培训班不加限制不设前提就鼓吹这些领域的求职神话就是欺诈,严重误人子弟。这些方向甚至都不建议一般学校乃至一些985计算机专业的学生来学习。(有毅力、决心、恒心者即使是30多岁劝退的年纪零基础也可以,但是你这是在挑战人性,没有几个人可以做到)。

如果你想转型IT,成为互联网方向的职场达人,其实方向是有很多很多的,比如如果你对设计有追求,哪怕你没有绘画天赋,你仍然可以学UI、UX;如果你对互联网产品感兴趣,沟通能力比较强,产品经理就比较适合你;如果你自认为你喜欢研究数据,数据分析就有大量岗位等着你;前端、后端、移动端、测试、运维等等都有大量高薪有前途的岗位。
互联网(含EE、CS)相关岗位是非常丰富的,编程不只是会让你成为程序员,机会多的是,没有必要硬着头皮不切实际去成为算法工程师、人工智能工程师、大数据工程师这些你已经不具备进入资格的方向。
如果你想快速入门,建议找个人指导你,比你买书、自己去翻视频、自己摸索要强得多。

有不少计算机专业的学生出去找工作前会去培训班或者他们学习时都是到网上看视频看文章,很多知识也是自学的,这是因为一般的学校会教你知识,而培训班和网上的资源会教你技能。
如果你是计算机相关专业,系统而底层的知识是十分有必要的,它会决定你职场上的高度。如果你学专业课感到艰难,你也可以花点时间从我说的Python、PHP和JavaScript入手学起,然后再来结合专业知识。

转自知乎——作者:李东bbsky(仅用于分享学习)










2021-6-29 00:56:56  
 赞 赞 0

使用道具 登录

14个回答,把该问题分享到群,邀请大神一起回答。
2#
转载:https://www.zhihu.com/tardis/landing/360/ans/784240694?query=%E8%87%AA%E5%AD%A6%E7%AE%80%E5%8D%95%E7%BC%96%E7%A8%8B%E5%8F%AF%E8%A1%8C%E5%90%97&mid=5cb8148a55960830f9fae3cf3e977279&guid=DFA5F0D2E7C2FFA7280ACAB5D38A8B72.1621367196251
1对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转变。

在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真正上道的那一天。

这个思维转换就是:

不要把自己当学生,而是要把自己当开发者。

不同的身份认同感,最后会导致不同的行为模式,而这行为模式,会对你的编程学习造成非常大的影响。

区别一:记笔记 VS 写技术文章
学生有一个特点,就是他们喜欢记笔记,但是开发者不怎么记笔记,而是会把自己学会的东西写成技术文章、教程的形式发表在技术博客或者知乎等网站上。

一个很有名的学习法叫做费曼学习法,这个学习方法简单地说,就是在学完一个东西之后,去给别人讲明白,注意,是讲给别人听,当你写成文章发表在网上的时候,你自然会去用更通俗的语言,更清晰的逻辑去讲述这个事物背后的逻辑,这个过程,是对自己学习的一个检验,也是加深映像,整理思路的重要过程。

那么如果你是去记笔记的话,很有可能,你不会去试图讲清楚这个东西,而是倾向于去照抄,或是不完全照抄,以“提纲”或是“知识点”的形式抄在本子上,说句实话,照抄的笔记,真的没用,因为现在搜索引擎的能力已经可以让你把大多数东西快速找到,你为什么还要照抄到笔记本上呢?

从功利的角度考虑,技术文章的写作,别人可以直接访问,也可以逐渐累积你的影响力,一个好的个人技术博客,会给你的简历加分很多,而一个厚厚的笔记本,没有人会管你记了什么。

区别二:以学会XX为目标 VS 以做出XX为目标
你会发现,学生思维里面有一个重要的特点,就是他们总是特别关注自己“学会了什么”,不仅如此,他给自己定的目标,定的计划,永远都是”学会XX书第XX章内容“。

学生永远在准备, 而开发者早已动手。

如果你还在上学,学生思维是“这个学期我要学会XX课程”,而开发者思维是“这个学期我要做出XX”。

如果学Python,学生思维会拿起一本教材,开始从头到尾看,我不知道你们发现没有,几乎所有那种编程语言教材,长得都差不多,上来先是基本的语法,基本的整型变量,浮点型变量之类的,然后伴随着几个小的教学例子。

开发者学Python,他第一步绝对不是去书店买教材,而是先去了解,Python适合做什么,然后他了解到,Python适合做爬虫,数据分析,AI,还能很轻松地搭建Web后端,之后他逛了一下午Github,看了看那些Python高星项目都是做啥的,于是他给自己定下了这个目标:

半年时间内,我要用Python和Python周边的库搭建出一个网站,这个网站服务端运用爬虫技术爬取一些数据,可以提供知乎粉丝性别比例分析功能。

学生继续看书,一个个的知识点去记忆,拿着他的小本本去总结知识点,而开发者上官网简单的看了下Reference Doc的简单交互式语法教程后,便马上开始了变做边学的过程,有了一个实际的项目目标,朝着这个目标走,不断地发现自己不会这,不会那,然后有目的性的去补足知识,他了解到了beatuiful soup作为爬虫主库,flask作为后端web服务主库,然后会去看一些简单的教程,在这个过程中,基础语法得到了熟练,也训练了工程能力。

学生的成就感来源于学会了什么,开发者的成就感来源于做出来什么

开发者很功利,他们深知他们学会的所有东西都是为了开发出伟大的产品而服务的,所以他们绝对不会出现“在学一个东西,但是也不知道学这个用来干嘛”的窘境。

区别三:厌恶不确定性 VS 接受不确定性
学生们总是对“确定性”有一种几乎疯狂的追求,他们总问,“C语言学到什么程度就一定能被大厂录取?”,“掌握XX要几个月?”,“上课认真听讲,认真做笔记,考试是否一定能上80分?”

这种对确定性的追求,直接导致学生有一种下意识的举动:

干什么都等准备好了再去做,但是却“永远在准备”。

因为他们害怕那种不太会还要硬上带来的各种不确定性,他们渴求一种内功的修炼,寄希望于”把基础夯实了,就能顺畅的开发,所以还是先夯实基础吧!”

开发者选择接受这种不确定性,他们愿意”边学变做“,因为他们知道,最初学习敲键盘的时候,他们就是这么做的,边看某个按键在哪,边打字,做和学交叉进行,他们始终抱有疑问,他们又始终试图通过学习的延伸拓展去解决疑问,他们仿佛就像是拿着烛火在迷宫中行走的侠客,在游戏的一开始,对迷宫的结构一无所知,通过不断地摸索和碰壁,逐渐建立起对整个地图的认知.

区别四: 线性学习 VS 递归学习
学生喜欢线性的学习,因为线性的学习(拿本教材从头到尾慢慢看)正是符合了他们对确定性的追求,可惜这违背了学习的本来面目

开发者知道,人脑最不擅长的就是线性枚举,即便我们认识几千个汉字,但是我们无法去线性地去将所有认识的汉字枚举出来,我们的大脑,本就不是用来进行线性思考的,而复杂度上了一定程度的知识,线性的掌握,基本不可能。

有难度的知识,往往是这样的:为了搞懂A,而去学B,为了学会B,而去学C,这叫递归学习,递归虽深,但有回溯,它最终会回溯到我们的起点。

所以开发者的学习更偏向于递归式的学习,而且可能会以一个知识点为起点,去完成树状知识外围的遍历。(有点像搜索引擎去爬虫)

知识是树状结构, 或者网状结构.

当我们试图遍历一个树的时候, 最简单直接的方式就是递归, 如果你非要去"线性"的学, 那就你是把编程学习当成了链表, 还是“单向”的,这种算法怎么可能用来遍历树呢?

区别五:拿会XX定义自己 VS 拿XX项目作者定义自己
linus 从来不说自己精通 c 语言, 与其说他不需要, 不如说他不关心, 因为他是 linux 和 git 的作者.

linus 这个程序员之神就是一个典型的开发者思维的人.

我希望所有计算机专业的同学们, 等你们毕业了之后, 你的github应该是绿油油的, 而不是贫瘠的一片白.

我希望你们用你们的简历里写的是"用c语言实现了一个XX引擎, github链接http://github.com/xxxxxx"

而不是"精通c".

我希望学生们明白, 任何一个像样子的项目, 制作周期至少是按月计, 你的大学有四年时间, 哪怕一个项目做一年, 你也能拿出两三个好项目, 不一定有多少star, 但是要完整, 文档, 测试, 一应俱全.

我希望学生们知道, 做项目和写课后习题不一样, 课后习题一个小时, 而项目是长期不断努力, 不断学习突破的过程, 需要你每天都搞, 善始善终, 最终拿出成果来.

我希望学生们明白, 这个世界衡量一个人的成就, 从来都是"他做了什么", 而不是"他学会了什么", 不要总用修炼内功去感动自己, 必要时, 也请你为开源世界贡献一点自己的力量.

我希望学生们明白, 考上985, 拿奖学金, 这都不叫成就, 因为和别人没关系, 只有真正影响到别人的东西, 让这个世界变得更好的东西, 才是值得去"秀"的.

最后送给学生们一句话:

愿你早日忘记学生的身份, 以开发者的姿态, 面对这个世界
回复 收起回复
2021-6-29 01:11:18   回复
 赞 赞 3

使用道具 登录

3#
好像在哪里看过
回复 收起回复
2021-6-29 10:08:09   回复
 赞 赞 3

使用道具 登录

4#
可行,不少自学成才的
回复 收起回复
2021-7-10 10:36:18   回复
 赞 赞 1

使用道具 登录

5#
自学C#
回复 收起回复
2021-7-22 11:25:44   回复
 赞 赞 1

使用道具 登录

6#
可行,不过要付出更多努力和时间
回复 收起回复
2021-9-6 20:44:34   回复
 赞 赞 1

使用道具 登录

7#
可以
回复 收起回复
2021-9-18 13:42:32   回复
 赞 赞 1

使用道具 登录

8#
可行!最重要是有兴趣,如果没兴趣只能年薪千万,再也不能前进了!
但是有兴趣,可以创造算法,全人类受益!直接成为传说!
超越神都是有可能的!
回复 收起回复
2021-10-5 10:31:41   回复
 赞 赞 1

使用道具 登录

9#
建议可以自学点基础,基础好了然后再去找个地方系统学习下,纯自学,没任何经验永远只会是个半吊子
回复 收起回复
2021-11-3 09:15:30   回复
 赞 赞 0

使用道具 登录

10#
自学是可以,但是比不上科班出身的就是
回复 收起回复
2021-12-15 18:10:02   回复
 赞 赞 0

使用道具 登录

11#
可以  主要就是逻辑问题  要懂得想  
回复 收起回复
2021-12-17 15:23:55   回复
 赞 赞 2

使用道具 登录

12#
自学没问题的,我就是环球数码学的maya出来之后自己学unity,现在已经是公司TA了。
自己封装工具、自己写插件、时不时还能接点模型动画的单做做。
努力吧少年!祝你成功

告诉你我还是一名药师,有证能到药房上班的那种。只要坚持学习,啥都可能~~~~
回复 收起回复
2021-12-17 15:32:08   回复
 赞 赞 0

使用道具 登录

13#
本帖最后由 欧孝翔 于 2021-12-20 16:02 编辑

自学能力要强 多看教程补充自己没学到的地方
回复 收起回复
2021-12-18 11:11:50   回复
 赞 赞 2

使用道具 登录

14#
元素真是个好论坛啊,不错
回复 收起回复
2022-11-7 10:08:51   回复
 赞 赞 1

使用道具 登录

15#
元素是个好家园
回复 收起回复
2022-11-9 03:45:24   回复
 赞 赞 1

使用道具 登录

CG 游戏行业专业问题

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表