0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

掌握这6个技巧,自学编程就是不是难事

5RJg_mcuworld 来源:未知 作者:胡薇 2018-04-17 16:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有一天,我的一个在学编程的朋友问我:“我想快速学习编程,你有什么好的推荐吗?我曾在上大学的时候自学过编程,这么多年过去了,我意识到我或许是在用最困难的方式去学习和了解编程。本来我完全可以用更快的速度学习。因此,在回顾了过去之后,我写下了这些年来我渐渐掌握到的关于如何学习编程的一些事情。

对于“如何快速学习编程”这个问题,其实我真的不知道何谓“快速”。我觉得,通过遵循以下建议,你将很快地学习编程(至少你的成长/进步会快)。但你真的不应该眼中只有“快速”。

只追求速度反而会拖你的后腿,让你自食其果。“快速”学习的唯一可持续方法或许是采用浸泡式教学法。找到一种方法让自己沉浸在编程中很长一段时间(几个月?)。

为了让它奏效,你需要不断推动自己去学习新的东西,并迅速抽身离开。这是编码训练营的一个优点。当你出来时,尽管你还不是专家,但你会学得更快。这也可以通过专门的导师教导或与专门的初学者一起学习来实现。

1. 读>写代码>读>写代码(日复一日)

关于如何高效学习编程我要给出的第一条建议是在阅读代码和编写代码之间循环往复。阅读代码(书籍,博客文章,开源代码)将帮助你查看解决方案,了解最佳做法,并大致了解语言或系统。

但是在你这样做之后,你需要自己实际去写代码。可以是任何东西。可以是小的编码练习或业余项目,但确保你能将之付诸于实践,并用某种方式使用你学到的东西。如果你不这样做,那么你会发现自己面对编辑器会无所适从无从下手。

这方面的诀窍是让自己感到不舒服。这是相当痛苦的,但就应该这样。编码遵循80/20规则。花80%的时间在20%的代码或20%你所学的东西上。习惯于这种不舒服的感觉并克服它是关键。

这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。

2. 不要陷入僵局,请求帮忙

我最大的错误是在学习编程陷入僵局的时候用了太长时间。在被卡住时,我会花很多时间在一些愚蠢的东西或一些我根本上不明白的东西上。

有时候我需要花费好几天时间才能完成这些工作,而原本我可以用这些时间做更多的事情和学习更多的东西,如果我能找到更好的解决方法的话。卡在一个东西上面超过一个小时基本上就是在浪费时间了。

我推荐三件事情以避免僵局。第一是试着总是阅读更多关于你使用的技术,并总体掌握正在发生什么。通常,当你陷入困境时,意味着你对需要澄清的事情做出了不正确的假设。

第二是咨询互联网。这一点很显然,但依然值得一提。在网上查找并询问有过这个问题的人是一个非常重要的技能。Stackoverflow可以说是互联网上最好的网站。不要害怕在那里问自己的问题。通常,只要尽力正确地阐述你的问题就OK了。我真的希望以前我能多问些问题,但总是因为害怕会显得愚蠢而止步。

我的第三个建议是向你认识的人请求帮助。通常,你或许已经理解了技术,而且有了问题,但是你可能需要更高层次的上下文才能真正解开谜团。不要胆怯,大着胆子上前去问吧。

例如,当学习Docker时,我花费了大量的时间从头开始重新构建图像。我从根本上不明白docker缓存,并用20分钟时间来等待单个更改到Dockerfile通过。我可能花了8个小时就用在等待构建上。

如果我读过更多关于Docker或问一个知道的人,那么可能我早就搞明白了,还可以在更短的时间内学到更多。

3. 为项目而工作

在我的经验中,没有什么可以与工作于自己的项目以学习编程更有用的了。除了一些例外,我所知道的所有真正优秀的程序员都有一个习惯就是工作于业余项目(这也可能发生在工作中!)。有了一个点子并试图实现这个点子是非常具有挑战性的。它需要很强的自律心。

但是,通过尝试实际做一件事情,你可以学到如何分解问题并应用技术。你面对的各种问题,以及你如何解决它们才真正是所谓的编程。知道编程语言的每一个古怪细节的确是有帮助的,但它只会让你越来越落伍。

此外,想要完成项目的驱动力是继续学习的动力。从业余项目获得的满足感远远超过你在抽象中学习东西的满足感。

我对于选择业余项目的建议是,选择你感兴趣同时你也有想法如何实现的东西。能够在开始之前表达实现总是有助于保持我的动力。在此旅途之中你一定会学到很多!

4. 认识到深入钻研和搬运工之间的区别,相应地选择

有两种类型的程序员:完美主义者和搬运工。有些人希望一切都是正确的,他们希望完美,他们希望遵循所有的最佳实践,并写出漂亮的优雅代码。他们想要理解每一行代码。

有别于那些不管三七二十一,只要自己的代码能工作即可,即使对代码库有损害的人。平衡这两种技能是非常重要的。有时你应该深入钻研一个问题或项目,看看发生了什么。有时你应该让它工作即可,即使你不知道发生了什么。

每当你花费太多时间在某个东西上时,那就问问自己:我应该采取哪种方法?在大多数情况下,你会想取中间值。你想提供一个好的、坚实的解决方案,同时你可以自信地理解和修改,但没有耗费荒谬的时间。

随着你作为开发人员的成长,你会更好地明白什么时候就此离开就可以,以及什么时候需要以某些方式完成。

就个人而言,我喜欢我的项目80%完美。如果你的项目是绝对100%完美,没有一行代码让你觉得尴尬,那么很有可能你已经花了太多的时间。

5. 与其他程序员交谈

学习编程的一个很好的方法就是和其他的程序员交谈。不必谈论任何特定的内容。可以是你正在学习的东西,可以是你认为很酷的东西,可以是你正在工作的东西,皆可。

你会发现很多程序员并不喜欢只是聊编程。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你将了解到其他人是如何看待编程的。你会发现,你认为理所当然或从来没有考虑的事情在人与人之间是非常不同的。

如果你没有什么可谈的,那就回到编辑器战争或tab vs space的话题。

6. 尝试一切,如果搞不懂的话,那就等6个月

最后,我要说的是,一直以来在我身上发生着这样的事,我尝试过很多东西,但我就是不理解。在用30分钟尝试新的东西后,我会停下来。我想这在起步时是很正常的。

但是,我记得很多次,在6个月后(或3个月或9个月),我会回到同样的问题或技术上,弄清楚如何使用它。这是因为我又掌握了一些我以前不具备的知识,或者因为它只是另一种方式的框架。等待一段时间,然后回去,总是一种最有用的方法。

这方面的一个例子是学习如何使用终端。我记得很长一段时间我都害怕碰到终端,因为我不知道如何使用。我花了一段时间并按照步骤定期地使用它和理解它。当然,如果我认识可以向我解答的人,或者找到一个好的资源来学习,这样的事情就不会发生!

结论

这些事情可以帮助新手在他们漫长的旅程中学习编程。我知道我还有更多东西需要学习,并将继续学习如何永远地学习。最重要的事情说三遍,请继续,不要放弃,不要放弃,不要放弃。当然,说说容易,因为学习编程有时可能会令人非常沮丧!不要担心。这是正常的。每个人都经历过这样的心情。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3724

    浏览量

    97458
  • Docker
    +关注

    关注

    0

    文章

    537

    浏览量

    14411

原文标题:自学编程的六个技巧总结

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    洁净烘箱、氮气烘箱怎么选?搞懂4疑问,避免踩坑!

    做半导体、医药、电子高端制造的朋友,是不是经常遇到这样的问题——干燥后的产品出现灰尘污染、氧化变色,导致批次报废?选洁净烘箱担心洁净度不达标,选氮气烘箱又怕氮气消耗过高、成本失控?其实问题根源不是
    的头像 发表于 03-23 15:24 131次阅读
    洁净烘箱、氮气烘箱怎么选?搞懂<b class='flag-5'>这</b>4<b class='flag-5'>个</b>疑问,避免踩坑!

    你的EMC瓶颈,不是经验不够,是体系不全

    EMC你的EMC瓶颈,不是经验不够,是体系不全你现在的状态,是不是这样?产品送测前,心里完全没底,不知道哪一项会挂传导发射超标,换了十几种电容电感,还是压不下去静电打几下,系统重启,你只能安慰自己
    的头像 发表于 03-10 16:41 482次阅读
    你的EMC瓶颈,<b class='flag-5'>不是</b>经验不够,是体系不全

    Linux进程管理不用愁!6工具帮你搞定90%场景

    在 Linux 系统中,进程是资源分配的基本单位,无论是服务器运维、程序调试还是日常使用,掌握进程管理工具都是必备技能。今天就带大家梳理 6 最常用的进程管理工具,从查看进程到控制进程,一篇文章全搞定!
    的头像 发表于 02-04 16:23 3027次阅读
    Linux进程管理不用愁!<b class='flag-5'>这</b><b class='flag-5'>6</b><b class='flag-5'>个</b>工具帮你搞定90%场景

    嵌入式驱动开发,需要掌握哪些技能?

    有经验的老司机都知道,做嵌入式驱动开发需要掌握一系列的技能,包含编程、硬件、操作系统、调试等多个方面。 1、硬件知识熟悉原理图:能看懂原理图以及各种元器件的含义,以及PCB布局等。 了解
    发表于 01-20 16:46

    CW32F030是不是支持keil?

    各位大佬,请问CW32F030是不是支持keil 啊?
    发表于 01-19 07:02

    请问使用ChirpIoT 是不是可以实现mesh组网?

    使用ChirpIoT 是不是可以实现mesh组网?
    发表于 12-11 06:58

    使用TTP233H-BA66细节要注意!

    TTP233H-BA6TTP233H-BA6使用时6细节要注意在电子设计中,选择一款合适的触摸检测芯片至关重要。TTP233H-BA6
    的头像 发表于 12-10 17:41 1000次阅读
    使用TTP233H-BA<b class='flag-5'>6</b>时<b class='flag-5'>这</b><b class='flag-5'>6</b><b class='flag-5'>个</b>细节要注意!

    嵌入式应掌握的几种能力

    1. 编程语言 基本掌握嵌入式必备的编程语言。C语言为主,C++为辅。在资源有限的情况下,大多数嵌入式产品还是使用C语言为主的,特别是底层驱动开发。上层应用开发大多用C,在一些资源比较充足的平台
    发表于 12-08 06:05

    华秋DFM软件丨操作教程——工具菜单-分析工具篇

    、封装再也不是难事了,小编真的替大家开心!除了筛选定位,在日常设计和生产准备中,大家是不是也经常被这些问题困扰:◆设计完PCB,总担心有没有隐蔽的开路或短路问题,
    的头像 发表于 12-03 07:34 9660次阅读
    华秋DFM软件丨操作教程——工具菜单-分析工具篇

    请问IR 调制器是不是复用串口的啊?

    请问,IR 调制器是不是复用串口的啊?
    发表于 11-26 06:36

    设备管理系统移动端应用(APP):外勤维保效率提升6大实操技巧

    对企业而言,落地移动端的关键不是“功能多全”,而是“是否贴合外勤需求”,只要掌握6技巧,就能让外勤维保效率翻倍。
    的头像 发表于 10-24 16:09 907次阅读
    设备管理系统移动端应用(APP):外勤维保效率提升<b class='flag-5'>6</b>大实操技巧

    家电电路识图自学手册

    家电电路识图自学手册
    发表于 07-11 15:49 16次下载

    光纤跳线是不是就是尾纤

    光纤跳线和尾纤不是同一种东西,它们在多个方面存在明显区别: 定义与用途 光纤跳线 定义:光纤跳线也叫光纤连接器,是两端都带有连接器的光纤线缆,用于连接设备与设备、设备与光纤配线架等,实现光信号的传输
    的头像 发表于 06-18 09:58 1405次阅读

    comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一TIM呢?

    不是定时器的话 怎么能保证COMP1的消隐触发同步呢?假设pwm输出是tim1_ch2,那么我消隐源可以选tim4_oc3?是不是tim1_oc5跟合理?
    发表于 05-14 08:14

    CYUSB3014使用块传输和使用流传输,可达到的最大吞吐率是不是差很多?

    先问,使用块传输和使用流传输,可达到的最大吞吐率是不是差很多? 我的应用是这样的,FPGA通过3014传送数据,每150us传输两包的数据,每个包1024字节,上位机程序一直循环接收,实际的传输
    发表于 05-08 06:33