[编程开发] 零基础如何自学编程?

[复制链接]
ruozhis 发表于 2023-12-4 22:25:56|来自:美国 | 显示全部楼层 |阅读模式
高中开始荒废,毕业后也是浑浑噩噩过了几年,如今马上23岁,不想再颓废下去,扪心自问不愿意就这样度过以后的日子,想选一个自己喜欢不排斥的工作,受得了苦,也不怕孤独,肯学,那么,请问如何从零基础长大为一个程序员? 问题补充: 1.完全零基础,任何语言都没有基础 2.肯学,自认为学习能力不差 3.年前工作之余,时间不多,年后脱产自学,时间有,倾向于Android开发方面 4.准备三个月的学习时间,之后尝试寻找offer 5.这份工作有什么需要注意的地方 6.这份工作,是否发达城市更利于发展 万望赐教!感激不尽!
全部回复6 显示全部楼层
xjhtbyz 发表于 2023-12-4 22:26:29|来自:美国 | 显示全部楼层
我的学校是荆州一所双非一本。
整个大一,我都没有怎么认真学习编程,每天就是出去玩,还有参加各种社团活动。
在大二上学期末,最终确定了自己以后要走的技术方向是走 Java 后端。于是,我就开始制定学习计划,开始了自己的 Java 后端领域的打怪升级之路。
到了大三,我基本把 Java 后端领域一些必备的技术都给过了一遍,还用自己学的东西做了两个实战项目。整个过程一共花了我一个暑假+半个学期,每天的学习强度基本都在 10 个小时以上。
这篇文章就简单聊聊:我是怎么学习编程的?
推荐2021最新实战项目源码下载
有哪些学习的途径?

一般来说,有了一个具体的学习路线,知道学习什么之后,我们通常有下面几个方向来学习:
视频

初学编程的小伙伴尽量多看视频,因为,视频教程比较容易理解。
不过,对于经验已经比较丰富的小伙伴来说,视频教程相比于文档教程学习起来会更慢一些。
像慕课网和哔哩哔哩上面有挺多学习视频可以看,只直接在上面搜索关键词(比如 Java、MySQL)就可以了。


提个醒哈!在哔哩哔哩上学习的时候,不要学一会就跑到别的分区去了,有点顶不住啊!


博客

网上的博客大多没有体系,推荐你在解决某一知识点或者问题的时候可以在网上找一些相关的博客看。
就比如我在学习消息队列 Pulsar 的时候,先把Pulsar 官方文档看了一遍。然后,自己在网上找了一些相关的文章来深入学习。

  • 《Kafka vs. Pulsar vs. RabbitMQ: Performance, Architecture, and Features Compared》
  • 《为什么放弃 Kafka,选择 Pulsar?》
  • 《7 Reasons We Chose Apache Pulsar over Apache Kafka》
  • 《比拼 Kafka, 大数据分析新秀 Pulsar 到底好在哪》
  • 《从 Kafka 到 Pulsar,BIGO 打造实时消息系统之路》
  • 《Apache Pulsar 在 BIGO 的性能调优实战(上)》、《Apache Pulsar 在 BIGO 的性能调优实战(下)》
  • 《Apache Pulsar 在能源互联网领域的落地实践》
  • ......
Java 领域比较成体系的博客,推荐 JavaGuide(项目地址: https://github.com/Snailclimb/JavaGuide)
推荐2021最新实战项目源码下载
官网(官方文档)

除非是一些国产项目的官方文档提供了中文版本,否则大概率是英文的。
另外,官方文档介绍的往往也比较粗糙,不太适合初学者作为学习资料。
不过,官方文档我们一定是要看的。通过官方文档你才能知道你学习的技术最新的技术动态,才能知道这个技术有哪些模块需要学习,才能知道这个技术具体可以帮你解决什么问题。
比如下面是 Spring 的官网,通过网站首页你就可以大概知道 Spring 可以帮助你:

  • 快速开发网站
  • 开发微服务架构的软件
  • 开发响应式架构的软件
  • ......


书籍

书籍的内容更成体系,更系统。不过,书籍存在时效问题。你可以通过一些手段了解技术最新动向:

  • 关注一些技术社区的动态比如 Github Trending
  • 关注一些公开的技术分享
  • 关注一些技术大佬
  • ......
自学过程中有哪些需要注意的地方?

英语阅读能力

大部分优秀的技术书籍都是国外的,几乎都是英文,并且,大部分技术的官方文档也都是英文的。
所以,提高自己的英文阅读能力很重要。英文阅读能力暂时比较差的也不要紧,有道翻译和谷歌翻译就是你最好的老师。如果是使用 Chrome 浏览器的话,我还推荐你安装一个 Mate Translate 插件。 这个插件对于网页阅读英文文档太友好了,可以一站式翻译您的网页以及标记的文字段落。
多练!多记!多实战!

不论是看视频还是看书,最好都要跟着一起练,记录一些关键的内容。
另外,如果你是看视频学习的话,最好可以边看视频边找一本相关的书籍阅读。
学习过程中没弄懂的知识点一定要尽快解决。如何解决?首选百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者网上认识的一些人。
另外,一定要进行项目实战!很多人这时候就会问没有实际项目让我做怎么办?我觉得可以通过下面这几种方式:

  • 实战项目视频/专栏 : 在网上找一个符合自己能力与找工作需求的实战项目视频或者专栏,跟着老师一起做。跟着老师做的过程中,你一定要有自己的思考,不要浅尝辄止。对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去深入学习。
  • 实战类开源项目 : Github 或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。Java 类的实战项目,你可以从 awesome-java 这个仓库里面找,里面有很多非常赞的项目。
  • 从头开始做 :自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。这个要求比较高,我建议你已经有了一个项目经验之后,再采用这个方法。如果你没有做过项目的话,还是老老实实采用上面两个方法比较好。
  • ......
做项目不光要做,还要改进,改善。另外,如果你的老师有相关 Java 后台项目的话,你也可以主动申请参与进来。
一定要学会分配自己时间,要学的东西很多,真的很多,搞清楚哪些东西是重点,哪些东西仅仅了解就够了。一定不要把精力都花在了学各种框架上,算法和数据结构真的很重要!
不要把学习编程还当做学生时代的应试考试来看

你或许也发现了。很多成绩特别特别优异的同学,他们的编程能力其实并不好。在大学的时候,那些编程能力最强的往往是那些成绩比较一般的。
为什么会这样呢?
我觉得主要是一个思维的转变问题。很多人学习编程的时候,总是想着我要把这个 API 记下来,把这个库的用法记下来。这样学习,导致的结果只有一个那就是你会很难受!因为,这些根本不是要死记硬背的东西啊!真还当这是上课考试啊!你要从如何用你学的东西来解决实际编程问题出发,站在做一个实际的项目的角度来学习。
拿我自己来说:我平时也会写 Python,基本就是自己看着官方文档或者一些书籍的教的语法跟着写。如果哪个地方不会了,我就去查一下。
多看优秀的代码

不看优秀的代码,你写的代码质量很难提高。
虽然要多看优秀的代码,但是也不要被 “最佳实践” 所束缚,很多时候实际是根本不存在适用于任何场景的“最佳实践”,没有银弹。
有哪些优秀的代码值得学习呢?
拿 Java 来说,不知道阅读什么源码的话,可以先从 JDK 的几个常用集合看起。另外,我比较推荐看 Dubbo 的,因为感觉会稍微相对容易一点,模块划分清晰,注释也比较详细。搞清楚了 RPC 的基本的原理,知道如何自己实现一个 RPC 框架之后,看起来就没那么吃力了。
另外,随便一个框架的源码都 10w+行了,都看一遍是不可能的。要挑选比较重要的地方看,就比如看 Spring 源码的话你一定要看 IoC 和 AOP,要知道一个 Spring Bean 是如何一步一步被创建出来的。你要看 Spring Boot 源码的话就要知道 Spring Boot 的启动机制是啥,Spring Boot 是如何实现自动配置的。
不要死记硬背

学习理论知识的时候,我们可以多花点时间整理笔记。
但是,在学习框架使用的时候,就没有太大必要花大量时间的整理做笔记了。
你完全可以随时查文档,记住关键词即可!比如 Spring Boot 你不知道如何接受 Query Param 的话,你直接搜 Spring Boot Query Param 即可!


再比如你不会使用 Redis ,你做的 Spring Boot 项目需要用到的话,你直接搜“Spring Boot+ Redis”就出来了各种详细的教程。


你要做的就是把常用的东西串联起来,知道有这个东西就好。根据自己的实际能力,再对底层的东西进行学习就好。
更多编程好习惯,请看:《成为一个不那么差的程序员》 。
我是 Guide哥,拥抱开源,喜欢烹饪。Github 接近 10w 点赞的开源项目 JavaGuide 的作者。未来几年,希望持续完善 JavaGuide,争取能够帮助更多学习 Java 的小伙伴!共勉!凎!点击查看我的2020年工作汇报!
原创不易,欢迎点赞分享。咱们下期再会!
上帝也疯狂 发表于 2023-12-4 22:26:47|来自:美国 | 显示全部楼层
有些朋友给我留言说,兴致满满的开始自学编程,但是拿到一堆书,却不知道从哪开始,最后的结果就像下面这个图:


那我们今天就来聊聊自学编程,怎么开始和需要注意什么。
1.首先,给你的学习编程一个重要的意义
做任何事情前,你都要首先明白为什么要做?这个理由不是学校开了某个编程课,你为了应付考试。或者看到其他人都在学,你没事干,也学下吧。这都是盲目的表现,就好比你追一个女孩,不是因为她家有钱,最重要你追她的原因是:你真的喜欢上了她。

所以从一开始,就给自己的学习定一个大的意义,这会让你不会中途放弃。而且能带给你前行的动力。
我当年学习编程,是因为觉得未来很多互联网的行业都于编程有关,意识到这是个基本技能,而且技能在手,不会哪天饿死街头。同时,编程的世界很纯粹,不像其他行业需要很多关系去维护,要想网上爬,的整日琢磨如何混好。但是,在编程的世界里,全靠技术说话:你行就行,不行就不行。
而且现在是人工智能时代,编程已经变成了像excel那样每个人都需要掌握的技能,你觉得学校编程意义大不大?更重要的是,学会编程你的收入概率会比其他人高。

2.如何选择你人生的第一个编程语言
很多人一开始是对编程有兴趣的,但是之前很多大学一上来就教C,C++。里面复杂的内容,也让很多人从入门到放弃。到最后连兴趣都没有了。没有兴趣是最可怕的敌人。
如果你是刚开始学编程,选一个比较人性化的编程语言,我建议从python开始。它足够简单,而且容易上手。而且现在连小学生都开始学python了。
我们再看看各大兵器排行榜上的python排名,它已经是人工智能的第一编程语言。,相信它的火热程度还会持续升温。


3.选择一本经典的书进行系统学习
很多人一开始为了追求快速,会选择一些比如xx天学会Python,xx天学会机器学习的书,这些书看上去高大上,其实是在误导你。世界上哪有xx天就能学会的,记住一条原则:越是有价值的知识,越难学,不然很多人都能学会了。
一般来说,一本书要比公众号的文章系统性强,一本某个领域的经典教材要比很多快销书系统性强。一个系列课程要比一次1小时的分享系统性强。所以从一开始就摆正心态,不要急于速成,有时候慢就是快。有了这个心态,就老老实实选一本这个行业经典的书,最好是国外的书。
既然在这个领域你是新手,就不要指望自己能把散落的信息整合成系统了,那是高手要做的事情。要想系统地学习,那就踏踏实实地拿出几个月的时间来,看几本这个领域的经典书,选一门系统课,或者跟着一个系统学习过的老师把这个领域的骨架摸清楚。
你又不比别人聪明几倍,却想用几分之一的时间,就掌握人家花了好长时间下了硬功夫,系统掌握的知识,怎么可能呢?
先接受一个已经存在的系统,再在上面修修改改,对于新手是最适合的方案。
有的朋友喜欢只听课,不看书,其实这是不对的。最好课程听了很多,但是还是不会编程。听课和看书必须是结合起来才有效果,正确的顺序是:先看书预习内容,把遇到的问题记下来,然后选择一个课程来学习,在课程中把之前预习的问题解决掉。带着问题学习才有效果。

3.选择一个有界面的编程环境
很多编程语言,一开始安装后,都是教你在命令台下写代码。面对这么一个黑洞洞的东西,你的兴趣又降下来了。


一开始编程不要在这个不友好的命令行下做。而是找一个集成开发环境(IDE),在里面敲代码。人对有界面的东东天然有好感和兴趣。比如学习Python,一开始用notebook就很容易敲出代码,而且运行结果也能实时的反馈给你。


当然最开始要做的事情就是先把环境搭起来,开始输出你人生的第一行代码:“Hello World”。这是简单的第一步,但是对于很多完全自学的同学都非常难了。好事情是,现在网上很多教程可以帮助到你。

4.重要的事情说三遍:多敲代码
编程是门手艺活,什么意思?就是你的多练习。这就好比,一个懂得再多泡妞理论的单身狗,都没有一个谈过恋爱的人,更懂得如何追女孩。
不要光看书,或者光听课。要多撸代码,在实践中成长。遇到不明白的地方,就多联系生活中的事情就类比想明白了。比如我在学习数据结构:队列,不明白的时候,就联想到了餐厅外婆家的排队叫号系统,就立马明白了。
其实编程中很多东东,都是为了解决现实生活中的问题,所以很多知识都能与现实生活中的实际事情对应起来。

5.学会记笔记
很多人刚开始学编程以往里面的很多东西都要记住,其实这是错误的做法。
不用去记住这些代码,理解代码比记住代码更重要。这里我们能理解代码是干什么用的就可以了。如果后面用的时候忘记了,反过头来知道在哪查找答案就可以了。这是学习的重要思想之一:知道在哪查找答案比记住更重要。
很多时候你感觉自己学会了,但是其实并没有掌握。我个人解决这个问题的办法就是记笔记。记笔记不是简单的罗列知识,而是将学到的知识,用自己的语言整理出来。同时,记笔记还能通过输出倒逼你的输入。下面是几个写实践笔记的讨论,对你应该会有帮助:





6.学会使用搜索引擎
刚开始学习编程,看到代码报错,就会茫然失措,脑子中立马闪出一个'funck'。
其实解决编程代码问题也是有套路的,这个套路就是:
能不用百度就别用百度,你要学会在宇宙第一大搜索引擎,和全球最大的技术问答平方:stackoverflow上搜索问题的答案。
一切的学习都是学习能力的提高。对于编程,真正的高手,就是遇到问题能从搜索引擎中找到答案。具体如何使用看这里:
如何用好搜索引擎?
如何优雅地使用 Stack Overflow?

7.多看大牛的技术博客
平日多关注这个领域顶尖高手的技术博客,选择你认可的人成为你心目中的榜样和导师。因为导师可以降低你加入一个新行业的成本,帮助你熟悉环境和行业规则,也会鼓励你完成心理方面的转变。
同时你也要 建立新的学习社交网络。如果你周围没有和你同样喜欢学习编程的人,会阻碍你的进步,更糟的是,有的人自己学不会,还会嘲笑你。过去的人脉关系会阻碍你的前进,因为他们是以过去对你的认知来评价你。感谢这个互联网时代吧,你可以在网上找到志同道合的朋友和你一起前进,新领域的人脉,会给你提供各种各样新的机会和情感支持,帮助你融入。
最后,人都是都是“快感型”物种。再加上学编程是一个长期的过程。所有需要你自己列个长期计划,并把长期计划分成段目标,每个目标完成后给自己进行激励。

8. 比知识更重要的是什么?
如果你有机会去互联网工作,就会发现你不会一直用一种编程语言工作的。很多时候,新项目来了,需要用新的技术,这时候老大会让你快速学会这个知识,然后在项目中应用。我之前做过的不同项目用到的编程语言来就有5种,而且是边学边用的。
回过头来看,比知识本身更重要的是你的学习能力。那什么是学习能力呢?
学习能力其实就是你能够做到“学什么会什么”。
有学习能力和没有学习能力的人差别是很大的。这就好比,你玩《王者荣耀》花钱找人替你通关,和你自己拼个人能力通关,所习得的技能和体验是完全不一样的。

提高学习能力的至少关键知识是什么呢?
其实就是两点:
1)习惯使用搜索引擎的能力
2)不做伸手党的能力
这两个能力看起来简单,但是长期养成却很难。
投机与投资的差别就是投机看重的是短期的股票涨跌,而投资看重的是一家公司长期的发展,希望你在学习编程的路上采用的是“投资”战略,并且培养了自己的学习能力。加油,你并不孤独。
我是猴子,中科院硕士/前IBM高级软件工程师/豆瓣8分《数据分析思维》作者,我和知乎知学堂研职在线联合出品的「数据分析训练营」即将开课,3天带你掌握数据分析实用技巧,包含课程+实战带练,工作提效、升职加薪必备神器!
报名还有独家Excel自学资料领取,点击开启数据分析升职加薪密码:
<a href="http://www.zhihu.com/question/29138020/answer/207547531" class="internal">如何系统地自学 Python?
hqw333333 发表于 2023-12-4 22:27:09|来自:美国 | 显示全部楼层
如果你正在自学编程和代码,并苦于没有优质资源,那么我就找对了地方。

接下来给你介绍21个免费学习写代码的网站,在办公室里或在家里即可轻松学编程。

编程初学者必必必必必必!看!
马!上!打包收藏这21个免费学习网站


精选21个有关代码、编程、Java、Python、SQL、Git、和Ruby on Rails学习的网站。这些网站为以下内容的学习提供了免费的优质资源:编程语言(Python和Java等) 、常用技术(SQL等)、操作系统(Linux等)、Web开发框架(Ruby on Rails等)、函数式编程语言(Haskel等)和构建网站等其它课程。

1. http://freecodecamp.org

传送门:https://www.freecodecamp.org/

这是最棒的社区网站之一,由Quincy Larson创建,在该网站可以免费学习写代码、进行实战训练并有机会找到一份开发人员的工作。

网站上有大量JavaScript、数据结构和算法以及前端开发等交互式教程和练习。

新手们可以在此开启精彩的编程之旅。此外,该网站甚至在脸书上拥有一个庞大的群组(freecodecampearth),供新手提问并分享学习经验。
2. Coursera


传送门:http://www.coursera.org
这是一个很棒的在线学习网站,由斯坦福教授Andrew Ng和DaphneKoller创建,提供课程学习、专业学习和网络课程学位。Coursera最好的地方在于其提供来自斯坦福大学、伦敦大学、密歇根大学、科罗拉多大学、伦敦帝国理工学位等多所大学的在线课程。
它提供免费和付费的在线课程和专业。我最喜欢Coursera上的一些免费编程课程是:

(1)RobertSedgewick“算法I和算法II”

传送门:http://bit.ly/algorithms-part1

(2)Andrew Ng “机器学习”

传送门:https://www.coursera.org/learn/machine-learning?ranMID=40328&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-j4CgBJn3pMyyWE9z_ko8Tg&siteID=JVFxdTr9V80-j4CgBJn3pMyyWE9z_ko8Tg&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=JVFxdTr9V80#enroll

(3)零基础Python入门专项课程

传送门:https://www.coursera.org/specializations/python?ranMID=40328&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80-iGW8bMtocjNJzvbVmtl_Hw&siteID=JVFxdTr9V80-iGW8bMtocjNJzvbVmtl_Hw&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=JVFxdTr9V80
Coursera还提供付费的课程认证,可用于领英个人资料展示。
3. http://Udemy.com

传送门:https://click.linksynergy.com/fs-bin/click?id=JVFxdTr9V80&offerid=323058.9409&type=3&subid=0
这是在线学习的最佳场所之一,在该网站可获得所有有关最新技术和编程语言的在线课程,如Java、Spring、数据结构和算法、Selenium、REST等课程。它提供免费和付费资源。
以下是一些可以学习有趣技术的免费课程:

(1)零基础Java教程

传送门:http://bit.ly/2zO3AHT

(2)高级数据结构轻松学

传送门:http://bit.ly/introduction-to-data-structures

(3)Python 编程入门

传送门:http://bit.ly/2D5vvnV

(4)高级和面向对象的JavaScript和ES6

传送门:http://bit.ly/2Dk46PJ
网站上的付费资源也很便宜,限时抢购常有发生,只需9.99美元即可购买到课程。网站上名师云集,拥有Colt Steele、Rob Percival、Stephen Grider、Josh Portilla和John Purcell等名师。
4. http://plurasight.com


传送门:http://pluralsight.pxf.io/c/1193463/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Flearn

这是学习任何技术或IT课程的最佳网站之一,可以在上面学习如Java编程语言,Spring framework Web开发框架Java编程语言、Spring framework和Hibernate等Web开发框架等课程。
该网站还收购了CodeSchool网站的课程,可以通过实战的方式学习web技术。使用该网站很快就能学到很多很酷的东西。
5. http://try.github.io


传送门:http://try.github.io/

一个很棒的网站,学习Git只需15分钟。这个网站最好的地方是它是一个元网站,这意味着它包含了一些最有用的在线学习Git的资源网站,比如LearnGit branching网站,在web浏览器上就能学到Git命令。

新手不仅会学习基本git命令,还会了解到一些具有挑战性的git概念,如分支、合并、撤销、择优挑选,变基等概念。

VisualizingGit(传送门:http://git-school.github.io/visualizing-git/)是另一个很棒的资源, 新手可在自由探索模式和一些构造场景下,学习git命令如何在web浏览器上影响存储库的结构。

6. http://onemonth.com


传送门:https://mbsy.co/sFqPc

通过这个网站,可以在一个月内学会写代码并搭建web应用程序。该网站并非完全免费,你需要买一个类似训练营的课程。

该网站有30天学习Python、Ruby和JavaScript的课程,而且训练营的教学方式非常有效。

另外,该网站提供免费试用的机会并开设《命令行》之类的课程。同时,网站上还将推出《一个月内免费学写代码》的播客。

7. http://codecademy.com


传送门:http://codecademy.com/

该网站提供交互式教程,免费学习JavaScript、Java和Linux等最流行的技术。同时还提供一些付费课程,来学习Python、Java和JavaScript等高级概念。

此外,该网站是将交互式学习与图片结合的开创者之一,而且它的JavaScript课程也许是最受欢迎的在线课程。

8. http://codingbat.com


传送门:http://codingbat.com/

这是另一个学习编程的好网站,包含了许多免费的编程练习,可以用Python和Java来建立对编程的感觉。
9. http://code.org


传送门:http://code.org/

学习编程和计算机科学基础知识的绝佳网站。孩子们可以在该网站上通过玩Minecrat游戏来学习编程。

10. http://code4startup.com


传送门:https://code4startup.com/?ref=javinpaul

这是一个由Leo Trieu创建的很棒的网站,可以通过搭建真实公司的网页和实战项目来学习如何写代码。

该网站是从零开始学习Web开发的最佳场所之一,可在3个月内学习搭建像Airbnb、优步等4家真实的企业网页,且不需要经验。

网站上还有许多免费课程,如下:

(1)菜鸟如何一小时搞定ReactJS

传送门:https://code4startup.com/projects/reactjs-for-newbies?ref=javinpaul

(2)学习Rubyon Rails、Heroku和Wistia APIs

传送门:https://code4startup.com/projects/hero-learn-ruby-on-rails-and-wistia-apis-by-cloning-code4startup-version-newbies?ref=javinpaul

11. http://codeabbey.com


传送门:https://www.codeabbey.com/

这是一个有很多编程练习的很棒的网站,可以学习写代码,并提高你在任一编程语言中的编程技能。

http://12.sqlzoo.net


传送门:http://sqlzoo.net/

毫无疑问,对于任何IT专业人士来说,SQL都是必备技能之一。但是不幸的是,很少有网站或免费课程提供SQL课程。

该网站是初学者学习SQL或已有基础的人提高SQL查询技巧的最好的地方之一。

网站提供了配有练习的交互式SQL教程,非常适合提高SQL查询技巧。

13.GitImmersion



传送门:http://gitimmersion.com/index.html

这是学习Git和GitHub的最佳网站之一。Git是当今程序员必备的技能之一,通过该网站的学习,能一览Git的基本原理。该网站的灵感来自于这样一句话:实践出真知。

这是学习Git最好的课程之一,由已故的重量级程序员Jim Weirich编写。

如果在.bashrc 和.gitconfig中配置别名,则该课程可以大大提高工作效率。

14.LearnGit branching


传送门:https://learngitbranching.js.org/

分支和合并是任何源代码控制工具(如SVN、CVS)都难以掌握的概念之一,在Git中也曾如此,但现在通过该网站并没那么难以掌握。这个交互型网站将以与众不同的方式提供git合并和分支的课程。

该网站是在网上学习Git最直观、最具互动性的方式之一,根据逐步演示的强大功能,提供了许多针对不同水平具有挑战性的练习,还能在学习过程中带来不少的乐趣。

15. http://codecombat.com


该网站可通过玩游戏,学习如何用Python和Javascript写代码,这是最具互动性和最有乐趣的在线学习方式之一。
16. http://tryhaskell.org


传送门:http://tryhaskell.org/

通过免费的互动课程学习Haskell。
17. http://railsforzombies.org


通过观看视频和完成练习来学习Ruby on Rails。该网站现在已与Pluarlsight网站合并。

18. http://thinkful.com


这是一个与众不同的网站,你可以在其中选择课程,并获得导师指导。

19. http://rubymonk.com


通过该网站的交互性材料,可以在浏览器中发现Ruby的习惯用法。该网站为初级、中级和专业Ruby开发人员提供了进一步提高Ruby编程语言的机会。

20. http://tryRuby.org


这是另一个在线学习Ruby的好网站。现在该网站也与Pluarlsight合并,只有注册了会员才能获取课程资源。

21. http://learnpython.org


传送门:http://learnpython.org/

这是学习Python基础知识的好网站,Python是近十年来最受欢迎的编程语言之一,无论是在简单的自动化工具还是在开发网站上,都可以用Python进行许多操作。现在Python可用于机器学习和数据科学。
<hr/>接下来,针对你另一个问题。
开发人员拥有广泛的技能,资历往往不能决定一个人的能力。
拥有5年、10年甚至15年的“工作经验”的并不一定是一个有能力的高级开发者,甚至称不上高级开发者。在成功的高级开发者中肯定会有一些不太好的代表——但在高级开发者的梯队中,有一些特征和知识是共享的。

这不是一个商业秘密,而是一种可以开发知识点和思维方式的办法。认真学习,努力做到以下几点,才够格迈向一名高级开发者,

1 编程范式


SOLID、面向对象和函数式编程三种编程范式形成了大部分代码创建的思维模式。

许多初级开发者在编写代码过程中忽略了编程是一种语言,也就是说其超越语法规则。编程是一种通信工具,可以多种方式构成,且编程范式有助于在代码通信方式上创建一个特定立场。

任何人都可以编写代码,就像任何人都可以在亚马逊上写文本邮件或简短的书评一样。但这种编写和斯蒂芬·金的小说并不相同。编程范式作为高级开发人员代码的指导力量,正如情节结构对于小说家的作用。所有语言都是由公式组成的,高级开发人员能通过内在化的水平进行理解,这是许多初级和中级开发人员还未体验过的。

2 创建能力


当开始使用for循环语句和if else语句时,会通过复制和粘贴代码来找到答案。如何理解区别于新初级开发者和低水平中级开发者的技能不同。

然而,高级开发者会更进一步。在没有谷歌强大的知识库帮助下,他们会在沙箱中创建类似于mini-gods的功能。高级开发者清楚自己正在做什么,明白行为会意味着什么,也见证或至少预测出突发事件,知道如何完善代码中的漏洞。

对于高级开发者来说,如果知识水平有差距,则会看得更远,而不仅仅是表面。对工具箱中的所有内容都会有更深的理解,属于代码的世界也是不同的。

3 客观评判


每个人对此都有偏见。初级和中级开发者会根据个人经验而不是与代码相关的论证来表现各自的极端偏见。个人偏好、风格、命名惯例和思维方式是可能遇到的任何建议或评价的核心。

这并没有错,因为这是成长过程的一部分。真正的客观性是在有一系列足够的相反经验给开发者提供一个中心效果时得到的。没有正确的编码方法,只有基于不同情况下的有效方式。高级开发者明白并承认其代码并非最佳,还有改进的空间。

高级开发者往往是有能力的代码看守者,标注同辈造成的麻烦和结构中的薄弱部分。能够退一步看到未来可能发生的更大情况,根据最意想不到的负面影响做出选择,并且不受任何一种代码风格或范式的约束,而是侧重于解决方案而不是工具。

4 好的软件和工作软件之间的区别


开发者编写运行代码。一部分人会终止于编写运行的代码这一步。另一些人则会更进一步,想办法收拾残局。最好的资深开发者是在编写代码时不断进行编辑和重写——因为他们知道好的软件和工作软件之间的区别,会接受出现的问题和失败,并且尽快改进。

大多数老板只关注软件是否正常工作,但是好的高级开发者知道得更多。他们了解技术债和代码异味的隐藏成本,懂得如何平衡工作软件和好的软件之间的需求——在项目按时交付和扩展协商中维持平衡点。

知识的广度和对结构和语言的理解使其成为区分好的软件和工作软件的专家——以及如何创建两者——并且有能力在情况需要时提出创造性的解决方案。

5 教学能力


普通的老师只讲述事实,好老师解释事实,优秀的老师展示事实,伟大的老师激发学生去思考。威廉·亚瑟·沃德

真正的高级开发者会有一定的热情,这激发了在该领域里经验较少的同辈,帮助打磨下一代。




图片来源:pexels.com/@josh-hild-1270765

编程本身就是想法的集合,高级开发者有能力将这些想法转换为简洁易懂的东西。在不同接口和媒介间进行通信和翻译代码的能力表明了对其选择的语言的真正掌握度。

成为一名教师需要一定的熟练程度。虽然“经验”可能通过简历上的项目和在不同公司的工作时长的形式展现,但教学是一种技能,只有真正了解自身行业的人才能掌握。

真正的高级开发者具有多方面技能,有时在主要工具包领域外用语言伪装成初级或中级开发者,但在编程哲学上有很强的基础。

然而,上述特征体现在个性和知识的深度,会比一般程序员更快熟知未知的代码领域。这些人往往是考虑大局的人,以明智心理看待代码。

在不形成破坏导向力的情况下,会提倡并引导同辈养成干净的代码习惯,正确看待他人错误,并坦然接受个人错误——旨在教育和学习,而不是摧毁自我。

以上,希望你能够在开发人员这条路上遇走越宽~


留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
foxfly 发表于 2023-12-4 22:27:14|来自:美国 | 显示全部楼层
对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转变。
在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真正上道的那一天。
这个思维转换就是:
不要把自己当学生,而是要把自己当开发者。
不同的身份认同感,最后会导致不同的行为模式,而这行为模式,会对你的编程学习造成非常大的影响。
区别一:记笔记 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, 拿奖学金, 这都不叫成就, 因为和别人没关系, 只有真正影响到别人的东西, 让这个世界变得更好的东西, 才是值得去"秀"的.
最后送给学生们一句话:
愿你早日忘记学生的身份, 以开发者的姿态, 面对这个世界。
zsqffff 发表于 2023-12-4 22:27:27|来自:美国 | 显示全部楼层
本人在这之前自学了大半年的编程,现在还在一直自学,今天就把自学过程中遇到问题和经验分享出来,希望可以帮其他人可以少走点弯路。
做好心里准备
自学编程的弯路多得数不完,坑多得踩不完。如果你决定要自学编程,就意味着踏上了一条面对困难、挫折和失败的无尽之路,要想清楚自己能不能承受这些挫折,自己能不能坚持走到最后。
自学编程过程中总会遇到这样一些问题:
* 编程环境?不会搭建
* 知识点好多,定义概念,格式规则,缺点优点。。。
* 刚学的知识怎么又忘了,怎么这也不会那也不会
* 这个语法是什么逻辑,搞不懂
* 教程这样做可以,我这样做怎么就不行?
* 敲了半天代码,一运行怎么全是错误?
* 错误解决不了,想放弃,狗带
* 学了这么久,感觉还没入门
* 教程内容都是旧的,学起来费力
* 技术更新了,旧知识不管用,又要重新学
如果没有一颗能战胜这些苦恼的勇敢的心,我劝你还是尽早放弃,免得心灰意冷,身负重伤。而如果你喜欢挑战艰难险阻,能直面失败,并能在失败与痛苦中砥砺前行,那么恭喜你可以踏上编程之路,努力的去追寻自己的梦想吧。
选定方向
编程的世界是多元纷繁的,大的方向就分前端开发、后端开发、移动开发、云计算、数据处理、智能硬件、物联网、虚拟现实等等,光编程语言都几十种。如果没有做过功课,贸然进入只会分分钟懵逼。所以最好是根据自己的兴趣爱好再结合市场前景,先选定一个方向,再选择一门语言,然后头也不回的深深扎进去。
我当初开始自学编程的时候,因为工作时学了点Linux,就准备学Linux。Linux没学几天,发现游戏编程的Unity 3D挺好玩的,就转学Unity 3D。Unity 3D学了段时间又觉得大数据很火,感觉接下来是大数据的时代,要跟上时代的脚步,然后又去学习Python。后面才意识到自己在移动应用上面有极大的兴趣并有一些自己的想法,再加上本人很喜欢Google,遂最终决定好好学习Android移动开发。
如果自己对自己兴趣爱好没有深刻的认识,没有明确的学习目标,只是一味茫然的去尝试,最终只会像猴子掰玉米一样,不但浪费了自己宝贵的时间,还会一无所获。
####制定学习目标计划
选定了方向之后,剩下的就是朝着目的努力前进了。自学的过程是枯燥乏味的,也没有人陪伴督促,所以要想自学有一定成果,除了要有清晰明确的目标计划,还要有很强的自我约束能力,还要善于自我及激励。不然很容易自由涣散,三天打鱼两天晒网,看起来花了不少时间,实际上没学到什么。
我开始的时候就是凭兴趣漫无目的的学习,结果发现收效甚微,于是才制定学习计划,开始系统的学习。我先是学习了JAVA基础语法,然后将整个Android开发涉及到的所有知识面简单快速的学习一遍,这样对整个体系框架有一个全面大概的认识,然后在详细具体的学习每一部分,尽量搞明白其中的实现逻辑和原理,以达到掌握知识的目的。最后开发练习的时候再根据自己要实现什么功能,去查相关的资料。
优化学习方式
一、做好笔记,记录经验
我们大多数人并没有过目不忘的神技,很多时候我们学了也不一定马上掌握,需要过后花时间慢慢领悟,而且还有忘掉的风险,所以对于重要的知识点都要做好笔记。
编程的过程中总会遇到各种各样的问题,比如编程环境的配置,常用的快捷键,编程过程中的错误、异常,软件更新问题等等。这些问题往往会不只一次出现,所以我们面对这些问题都是如何解决的,一定要记录下来,一是增加自己解决问题的经验,而是以防下次出现。
我做笔记记录的方式:
* 截图
* 拍照
* 思维导图
* 写Word文档
除了最初用纸质笔记本做过笔记,后面都是用上面的方式。用电子的方式方便快捷易于分享,而且我还能传到手机上,利用其它时间随时随地阅读。
二、认认真真敲代码
二、认认真真敲代码
二、认认真真敲代码
编程没有捷径,只有勤奋努力。

三、多看官方文档,外文资料
互联网是一个更新迭代很快的行业,所有编程语言都会不断的更新新功能和修复旧Bug,网上查的资料很有可能是旧的解决方案,现在已经不适用了。所以最好最快的方法就是查看官方文档。
毕竟互联网技术还是国外发展起来的,所以在很多技术问题方面,人家还是有优势的。有些问题在国内不一定能找到答案就去外网找。
四、进入行业圈子
只有进入行业圈子与其他人交流,你才了解最新的行业动态,才知道自己需要更新哪些技能。最重要的是有了这群人,自己遇到问题解决起来嗖嗖的,那速度才叫“倍爽儿”。
进入行业圈子的方式:
* 混迹各行业网站论坛个人技术博客
一般在搜问题时很容易就搜到这些网站
* 关注各种行业话题和人
比如知乎、微博、微信公众号等
* QQ群、微信群
交流基地,技术后援团
* Github
互联网圣地,行业大圈子就在这。
五、动手做项目
我们学习编程的最终目的就是用所学的做出具有一定功能的项目,而做项目又是最好的学习和巩固知识的方式。如果前期能力不足就先做一些简单的功能模块,一步一步慢慢来,不要一开始就要实现各种酷炫炸天功能,遇到不会的就在网上查, 现在互联网这么发达,获取资源也及其方便。而且开发前也最好在网上查一下有没有已经成型的框架或模板,编程界有一句很流行的话“不要重复造轮子”,什么都自己做一是很耗费时间,二是自己技术能力不足还可能留下不少坑。
收获回报
自学编程说起来到处都是苦,但也并不是完全一无是处。客观地看,自学编程还是有很多好处的。
* 培养自学能力
* 掌握一门技术
* 锻炼毅力和独处能力
* 提高解决问题能力
* 提高面对挫折失败的承受能力
* 改变思维方式
* 享受沉浸专注的快乐
* 享受创造的快乐
资源分享
1. 自学视频网站:
[慕课网](慕课网(IMOOC)-国内最大的IT技能学习平台)    本人主要学习网站,课程分付费和免费两种,不过视频中的技术大多比较新,有课程计划和在线编程。
[极客学院](http://www.jikexueyuan.com)  课程全多,部分课程需要VIP,有的课程比较旧。
[麦子学院](麦子学院 - 专业IT职业在线教育平台) 大多要报线上培训班,不过好像有免费入口,反正我看的Android全部免费。
[51CTO学院](51CTO学院_专业的IT职业在线教育及实战培训平台) 没用过
[网易云课堂](网易云课堂 - 领先的实用技能学习平台) 只用过网易公开课,没用过云课堂。
[咪咕学院](咪咕学堂 - 学海无涯,咪咕一下) 没用过
[MOOC学院](MOOC学院(慕课)) 果壳慕课网,比较杂,没用过。
2. 手机应用
[SegmentFault](SegmentFault) 专业互联网问答,有PC版。
[开发者头条](开发者头条 - 程序员的首选学习分享平台) 程序员学习分享平台。
[掘金](掘金) 高质量技术分享平台
[码云](码云 - 开源中国代码托管平台) OSChina旗下云端开发者服务平台
[涂书笔记](涂书笔记官方网站) 有道云笔记、印象笔记这些大家都知道了,图书笔记的特点是可以上传照片并识别照片中文字。主要针对读书人群。
Mindjet Maps   思维导图,大名鼎鼎MindManager的Android版,免费
极品思维导图 Android版,功能齐全
[奇妙清单](奇妙清单 | 待办事项清单、提醒、事项 、任务、备忘) 待办事项清单
[种子习惯](种子习惯 - 最专业的习惯养成应用) 习惯养成应用
3. 到外面看看(被建议修改了)
自行发挥创造力
4. 浏览器

  • Chrome浏览器 各种开发工具,各种插件,开发者大多都用Chrome浏览器(去广告,翻译轻轻松松)
Robacf 发表于 2023-12-5 18:30:06|来自:美国 | 显示全部楼层

How to change my password jinriwenda.com ??

foxfly ??? 2023-12-4 22:27
?????????,??????????,??????,????????????????
????? ...

Can you tell me how can I change my password?  
What am I doing wrong?  
Need your help.
Thank you.

快速回帖

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

本版积分规则