type
status
date
slug
summary
tags
category
icon
password
学习编码的 12 条规则
Dr. Angela Yu
The App Brewery 的 iOS、WatchOS 和 Web 开发人员首席讲师
1. 用20分钟法则欺骗你的大脑
学习编码有些类似于去健身房。即使你全力以赴,花了整个周末在健身房锻炼,你也不会看到明显的身体变化。只有经常学习编码,你才有可能看到编码技能的显著提升。
然而,问题是你从哪里找到时间呢?在全职工作、陪伴家人和生活管理之间,你何时才能安下心来练习“日常编码”呢?
在我当医生的时候,我每天大约有12个小时在医院,1个小时在通勤路上,还有大约2个小时用于吃饭和其他维持生活的事务。因此,我每天只剩下9个小时。理论上,其中2个小时可以用来练习编码,剩下的7个小时用来休息。但最困难的是,当你本可以坐下来吃着一桶冰淇淋看《权力的游戏》时,却要说服你饱和的大脑去学习编码。然而,后来我发现了一个窍门。作为人类,我们有很多惰性。这可能对我们不利,我指的是那些“24”盒装。然而,我们也可以将其转化为我们的优势。我发现,一旦开始编码和实践,我就会全身心地投入到项目中,不再关注电视、食物或睡眠。有好几个周末,我一直编码到天亮。
那么,我们如何利用这种惰性呢?首先,你必须明白切换任务是非常困难的,需要巨大的动力。如果一回到家就瘫坐在沙发上打开电视,那么你已经浪费了那个晚上。这是因为任务切换,做一些不受进化驱动的事情(比如吃饭、睡觉等),是一项艰巨的任务。
这就是为什么当你进门换到一个新的环境时,那一刻是至关重要的。如果在这一刻,你告诉自己只是要进行20分钟的编码练习,那么你很有可能会成功,并利用自己的惯性来进行编码练习一个小时甚至更长时间。大脑不会认为20分钟的任务很费力,你最终会欺骗自己的大脑来利用晚上的时间。
下一步是培养习惯。研究表明,要养成一个新习惯,你必须在一个月内每天执行任务。我在许多不同的事情上都尝试过这个方法,从锻炼到编码,无一例外都非常有效。在使用这个方法之前,我想让你想象一面墙上挂着五幅画,其中四幅完全对齐、完全水平,但有一幅歪了。现在想象一下,你是否想要修复它。
现在,让我们想象一个月历,用方框表示每一天。如果你在某一天养成了新习惯,那么你就在这一天划一条线。如果你在第二天继续坚持,那么你就把这条线延长,以此类推。保持连续的线是大多数人继续养成习惯的动力。尽管听起来很奇怪,但有很多次,我本想放弃,但却因为一条连续的长线而不得不继续下去。
2. 有明确的目标,拥有一个项目
在我刚开始学习编程的时候,我曾多次尝试,然后又放弃,一次又一次。这种情况经常发生在那些自学成才的程序员身上。回顾过去,教授了许多学生之后,我终于意识到了其中的原因。许多初学者在开始学习编码时,会选择一种任意的编程语言,然后跟随一系列教程。他们逐行复制代码,有时编写计算质数的代码,有时则找出所有的偶数。但你知道吗?我可以通过谷歌搜索更快地找到质数,而选择偶数真的没有多大意思。
事实就是如此。如果你只是为了学习而学习编程,那么你很难掌握它。像编程这样需要大量时间和精力来培养的技能,会削弱你的内在动机。内在的激情会让你忘记吃饭和睡觉。可以坦率地说,为自己的项目编写代码是我最喜欢的事情之一。它结合了逻辑思维和创造力,最终你会有所收获。在大多数情况下,这是世界上从未见过的东西。它可能会让你的生活更轻松、更愉快,也可能会让许多人的生活更轻松、更愉快。就像在自己的车库里制作一辆疯狂而美丽的定制摩托车。
这正是大多数人的动力所在,创造的一部分。因此,我邀请您开始学习编程,按照教程学习,这样您就可以创造出任何东西。当然,一开始你可能不会写出像《部落冲突》或《英雄联盟》那样的代码。但你可以做一些有趣的东西。可以是一个骰子游戏,也可以是一个闪卡应用。只要教程结束,你就可以制作出能用的东西并开始使用,这样你就会更有动力坚持编码。
在我们的所有课程中,我们总是要求学生设计一个简单的应用程序。利用他们在课程期间学到的技能,但也让他们的能力得到一些扩展,因为他们已经知道如何添加一些新功能。
我们有一个学生制作了一个应用程序,可以帮助他们每天早起一分钟,以适应早起的时间。还有一个学生制作了一个定制的幻灯片应用程序,作为母亲节的礼物。还有人开发了一个基于牛排重量和厚度的计时器应用,用于制作完美的牛排。
你的想象力是无限的。当你开始独立开发应用程序时,因为没有逐步说明,会感到困难,但这也会极大地提高你的编码能力。
3. 没有完美的编程语言
每当我进行大型演讲时,总会有人问我:“我应该先学习哪种编程语言?
人们普遍认为对于新手程序员来说,有一种完美的语言,有人说是Python,有人说是Swift。”然而,我认为他们都是错误的。编程语言只是一种工具,与其他任何工具一样。如果你想敲钉子,你应该使用锤子;如果你想修理水管,你可能需要一个扳手。是的,你可以用扳手的侧面敲钉子,同样一种编程语言也可以用来解决不同类型的问题。木匠会告诉你,他最喜欢的工具是锤子,而水管工会说是扳手,但这并不能证明它们是“解决问题的最佳工具”。
Web开发人员会告诉你,JavaScript是初学者的最佳语言;统计学家会建议你最好使用R语言。然而,归根结底,重要的是你想用你的工具做什么。如果你想制作iOS应用程序,那么请学习Swift;如果你想制作网站,那么需要使用JavaScript。不管使用哪种语言,编程的核心概念,如循环、条件、函数等都是相同的。它们的区别主要在于语法。就像在英语中,我们有“werewolves”,而在德语中有“Werwolfe”。它们都是在月圆之夜出没的撕裂衬衫的哺乳动物,只是拼写不同而已。
用Swift向控制台打印:
print("Hello Werewolves")
用Java向控制台打印:
printin("Hello Werwolfe")
因此,首先确定你要完成的任务,然后选择最适合的工具。
4. 理解你写的东西
对于大多数编程教程的编写方式,我持有一些意见。在许多教程中,您会发现存在“这就是如何绘制一个猫头鹰”的现象。
程序员的初衷是好的,他们一步一步地教你如何完成每一项任务。然而,后来他们意识到自己陷入了一项无法完成的任务,于是放弃了。我曾经看过这样的教程,作者一开始就详细到令人发指的程度,然后在中途又回到“现在您只需建立一个云数据库”的程度。请注意,这些教程是针对初学者的!
这导致了许多问题。最常见的问题是学生只是简单地复制教程中的代码,而完全不了解这些代码的作用。他们为什么要在解析 JSON 后添加一行代码?
在这种类型的教程中很容易陷入其中,因为它们承诺教你如何制作“Flappy Bird”或“Candy Crush”。然而,在进行到三分之二的时候,你输入的东西变得毫无意义,而且屏幕上到处都是红色。出现这么多错误是为什么?你不知道,什么也运行不了。最后三个小时都在复制代码,除了一堆糟糕的代码,你什么也没学到。不要陷入这个陷阱。如果你看到一个教程在第三行后就从初学者跳到高级阶段,或者过于频繁使用“简单”一词,或者根本不解释任何代码,那就停下来。离开那个教程。
海里有的是鱼。
有时,作者确实试图解释他们在做什么。但即使如此,你仍然不明白他们在说什么,那说明你处于一个高级教程,这对于提高你的编程水平没有帮助。它可能试图构建一些宏伟的东西,特别是当博客承诺任何人都能做到的时候。然而,如果你不知道发生了什么,最好的方法是打下更好的基础。
学习代码的关键在于循序渐进。你希望反复学习,并将新知识建立在先前知识的基础上。如果坡度太陡,你会迷失方向。如果坡度太浅,你会感到无聊。正确的梯度对每个人来说都是不同的。这就是为什么我们鼓励学生在我们的教程中自由使用速度变化功能。如果你对这些概念感到满意,你可以以双倍速度学习,如果你对某些概念不熟悉,你需要减慢速度以更好地理解和吸收知识。
5. 不知道也没关系
据报道,软件工程师是患有自卑综合症的人数最多的职业。自卑综合症是一种心理现象,表现为个体对自身技能和能力的严重低估,以至于产生自我欺骗的错觉。
程序员倾向于对自己进行自我批评,总觉得别人的编程能力优于自己。根据研究,有70%的人患有冒名顶替综合症。
最近我在问答网站Quora上看到一个帖子,其中有人提问:“如果我被发现使用StackOverflow作为参考资料,是否会被谷歌(或其他大型科技公司)解雇?”他从在谷歌、亚马逊和其他大型科技公司工作的工程师那里得到了多个出色的答案。任何一位从事软件工程的人都会告诉你,不查阅参考资料是不被鼓励的。实际上,我敢打赌,你找不到一个在谷歌工作的程序员不使用Stack Overflow。(如果你不熟悉,Stack Overflow是一个面向程序员的协作问答网站)。
许多新手程序员担心通过查询推荐信和向他人寻求帮助会暴露自己是一个不懂编程的骗子。没有人能够将所有相关信息都牢记于脑海中。例如,这是一个iOS方法的名称:
- (id)initWithBitmapDataPlanes:(unsigned char **)planes pixelsWide:(NSInteger)width pixelsHigh:(NSInteger)height bitsPerSample:(NSInteger)bps samplesPerPixel:(NSInteger)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(NSString *)colorSpaceName bitmapFormat:(NSBitmapFormat)bitmapFormat bytesPerRow:(NSInteger)rowBytes bitsPerPixel:(NSInteger)pixelBits;
字符数量约为400个!
在iOS编程领域,存在800多个类和9000多个方法,且持续增加。每周都会有新的网络开发框架出现。没有人指望你能记住所有的代码。这正是我们成为程序员的原因,我们可以让计算机帮助我们处理那些乏味的任务。例如,录制声音的代码只需搜索一下就能找到,为何还要记住呢?
大多数雇主在招聘时重视的是思考能力。在这个信息匮乏的世界中,知识备受重视。19世纪,只有富人才能接触到优质书籍和优秀教师。如今,只需点击鼠标,每个人都能获得他们所需的所有信息,甚至更多。信息正在失去价值,而思考能力才是值得投资的资产。因此,不要害怕搜索,不要害怕在StackOverflow上提问,也不要害怕寻找资源来帮助你解决问题。最优秀的程序员都会这样做。
你需要培养的技能是提出好问题并理解答案。如果你对StackOverflow答案的工作原理一无所知,那么从StackOverflow答案中复制粘贴代码是没有意义的。因为StackOverflow采用声誉系统,所以回答越清晰越好,这样才能被标记为正确并获得好评。
在大多数情况下,一遇到问题就立刻去搜索StackOverflow是没有意义的。首先应该尝试自己解决。你的程序在我输入最后三行代码之前运行得很好,但现在不按预期运行。那么,让我们看看最后三行代码是如何破坏我的程序的。
如果真的搞不清楚,可以从谷歌开始。搜索你的问题,如果遇到错误,请粘贴错误代码和错误信息。作为初学者,你在编程中遇到的问题很可能很常见,甚至可能有人花时间编写了简明扼要的教程来帮助你理解错误。随着你的编程技术越来越熟练,你会遇到越来越复杂难懂的问题,但如果你遵循其他11条规则,希望你也能成为一个更有能力的程序员,能够自己解决问题,或者准确地知道去哪里寻求帮助。
你应该从谷歌开始学习的另一个原因是,StackOverflow的搜索算法是根据问题和答案的新旧程度而不是流行程度来组织的。你在初学时会遇到的许多问题几年前就已经有人提出和回答过,但现在仍然非常流行。
因此,明智地提出问题,你将从社区中获益。有一天,当你成为代码专家时,你也将回馈社区,帮助下一代程序员。
6. 做一个模仿者
在我刚开始学习编码时,我误以为学习编码的方法就是大量阅读书籍。我购买了关于C++、C#、Java和其他语言的书籍,无论你能提到的,我都买了。然而,除了让我感到困惑外,这些书籍并没有起到任何作用。我读过它们,也做过标记,但最终我都忘记了它们。我甚至在读书时睡着了。
书籍是很好的参考资料,如果你想深入了解代表和协议,你可以阅读相关章节。然而,如果你真的想学习,那就动手做些实际的东西。你想做什么呢?
如果你缺乏创意,那就模仿吧。制作自己的记事本,制作自己的MSPaint,制作自己的钢琴。如果你喜欢游戏,那就制作扫雷、俄罗斯方块、Flappy Bird等游戏。这些项目不仅对你有一定的用处,而且也是你摸索方法和获得帮助经验的绝佳机会。对于像全息智能手机投影这样的全新事物,没有人能够为你提供帮助。通过制作仿制应用程序或程序,你将踏上许多人在你之前已经走过的道路。这样,当你遇到困难时,你就能够最大限度地得到他人的帮助和建议。
7. 对某人负责,展示你的工作。
在线编码课程面临的主要问题是学生缺乏责任感。毫无疑问,当前有许多出色的大规模开放在线课程(MOOC),如Coursera、Udacity、Udemy和Skillshare。然而,如果学生不完成作业或错过一个月的课程,将没有任何后果。没有人会在意。
面对现实,我们每个人的内在动力都不够强大。我们总能找到上网消遣的理由。我自己都无法计算报了多少门在线课程,却从未听过一堂课,也没有完成过任何作业。
你需要培养学习的责任感和决心。回想一下大学时代,如果一切都不重要,你会在凌晨三点费心完成那篇论文吗?如果你不在乎及格或不及格,你还会去听讲座吗?
因此,我们尝试在课程中引入问责制。我们意识到,为学员配对一个伙伴会有所帮助。一个与你水平相当的初学者有时会帮助你,有时则需要你的帮助。如果大家的学习进度不一致,或者你和一个懒惰的人配对,你可以换一个新伙伴。由于这个系统完全是自愿的,因此在一定程度上,那些擅长团队合作、受他人激励的人可以自行选择。就像如果你和伙伴一起报名,你就更有可能去健身房一样,如果你有一个编码伙伴,你就更有可能学习。
因此,如果你没有参加我们的课程,那就自己去找吧。Facebook上有许多专门为学习编程的人开设的群组。还有一个完整的子论坛(r/learnprogramming)专门讨论这个问题,我相信你会在网上或线下的某个地方找到志同道合的人。
接下来我要告诉你们的事情可能会引起争议。我们认为,人们不会重视没有价值的东西。这就是Coursera取消大量免费课程的原因。他们看到有数百万人注册,但没有人选修任何课程,更不用说完成任何项目了。提供免费课程实际上不利于学生的学习。我们每个人都有一定程度的囤积倾向,很容易注册一大堆东西,而未来的你却可以忍受这些东西。她说,明天总会到来。
因此,如果你的学习动力更多来自外部而非内部,那么不妨尝试用一点经济动力来推动你的学习。想想一项生活技能对你来说值多少钱,然后把钱用在刀刃上。看看在有或没有资金投入的情况下,你是否更喜欢课程内容。在很多地方,你都可以支付一些负担得起的费用来激励自己养成定期学习的习惯。
这条规则的最后一部分是努力接受评估。好吧,就人们喜欢的程度而言,接受评估与死亡和税收并驾齐驱。但在学习任何东西时,获得反馈总是很重要的。你将获得对自己当前技能水平的客观评估,而不是觉得自己是个冒牌货或充满虚假的自信。Coursera有一个学生互相批改作业的系统。在App Brewery,我们使用Github Education测试你的代码,查找代码中的错误和问题。但如果你参加的编码课程没有这样的系统,那么值得你去找一位代码导师,他可以审查你的代码并给你反馈。只有经过衡量的东西才能得到改进。
8. 持续学习
成为一名出色的程序员有点像麦当娜。
不要匆忙购买尖锐的胸罩,我指的是编程领域的不断发展。为了不被时代所淘汰,你必须持续不断地进行自我革新。
新的趋势、新的技术和新的编程语言层出不穷。优秀的程序员乐于学习新事物,即使这意味着他们需要重新成为初学者。
世界在不断进步,如果你固步自封,最终将被时代所遗弃。我认识一些程序员,除了掌握Fortran之外,从未学习过其他编程语言。我也认识一些Objective-C程序员,尽管苹果公司告诉开发者Objective-C将被淘汰,但他们仍然无法说服自己去学习Swift。我们都知道,苹果公司从不空口承诺,看看光驱的命运(很快还有耳机插孔?)。
不要成为光驱。或者说,不要成为一台试图播放CD的笔记本电脑。如果你的需求发生了变化,就要学会使用新的工具。不断学习,与时俱进。
你是否一直梦想从事移动开发作为网络开发人员?选择一个平台,学习iOS或Android。你是否是前端开发人员,但对全栈开发很感兴趣?使用Node学习网页开发。如果你已经掌握了核心编程概念,那么学习多门编程语言将会比重新开始容易得多。
"y分钟学会x"是现有程序员学习新编程语言的绝佳资源。点击这里查看他们的资源:Learnxinyminutes.com。
9. 玩桌上足球
当您在好莱坞电影中看到程序员时,他们通常坐在笔记本电脑前敲击键盘,仿佛在进行某种高风险的“砸鼹鼠”游戏。
然而,真正的程序员在工作时通常呈现如下状态:
是的,没错。不打字,只是盯着看,一直盯着看。
在公司中,人们常常抱怨程序员总是玩桌上足球或从事看起来不像工作的活动。人们可能无法察觉,但实际上他们正在努力工作。
当你看到他们在桌上足球中玩得兴高采烈,欢笑不已时,他们的内心可能正在经受煎熬。因为总会有隐患,总会有问题。或者说,他们的代码中存在一些神秘之处,无法解决。也许代码运行得很完美,但却出乎意料(顺便说一句,程序员不喜欢任何意外情况)。例如,他们可能一口气敲了一千行代码,却意外地没有出现任何错误。
对于其他人来说,也许很难理解,但在这种情况下,通常情况下,远离你的代码并给予一些时间和距离是非常值得的。
如果你的代码遇到了无法解决的错误,不妨休息一下,玩玩桌上足球,散散步。很有可能问题会迎刃而解。只有极少数情况下,你可能会遇到无法解决的问题。
这可能听起来有些奇怪,但我建议你少写代码,多思考。一旦你匆忙编写了代码并将其带入现实世界,你就不可避免地需要回头逐行检查你的代码,进行重构和删除。这通常是一次痛苦的经历。
因此,请记住,最容易删除的代码就是那些从未编写过的代码。
10. 寻找一位导师 - 尝试结对编程
在我学习法语的过程中,我发现通过 Skype 进行语言交流是一种极具效果的方法,可以显著提升我的口语能力。我会与母语为法语且有兴趣学习英语的人进行配对,我们每周花费一个小时的时间,其中半小时用法语交流,半小时用英语交流,以提高我们正在学习的语言水平。
在法语对话中,我的配对伙伴会纠正我的发音和语法,并给出造句建议,以使我的表达更加自然流利。
结对编程是一种基于类似原则的敏捷软件开发技术。学习者和指导者会坐在同一工作站,共同研究问题。学习者负责编写代码,指导者则逐行审查代码。
起初,这可能会让人感到不舒服,因为错误会让人感到尴尬。但是,如果有一位优秀的导师,他们将能够在几个小时内传授数十年的智慧,从而极大地提升你的能力。
你将有机会接触到那些花时间磨练技能、找到高效方法的人,并向你展示他们是如何编程和解决问题的。好的导师不会直接解决你的问题,而是采用苏格拉底式的提问方法,让你自己思考。如果你问我如何编写网络电话,我可以简单地给出答案,然后让你复制。但这对你没有帮助。相反,如果你向我展示你是如何处理问题的,我也向你展示我是如何处理问题的,那么你将能够学到更多。
下次遇到不同的问题时,你可以运用同样的方法开始解决问题。请记住,信息是廉价的。一个世纪前,要了解疾病的原因,可能需要成为贵族或为师傅劈柴挑水,成为他们的学徒。而现在,你只需在谷歌上搜索,几秒钟就能找到答案。
因此,不要迷恋信息,而是要学会思考,学会处理问题,学会分解问题,学会构思问题。这些技能将使你比简单的记忆和复述更有价值。
那么,如何找到导师呢?几乎每个城市都有与编程相关的聚会。你可以访问 www.meetup.com,找到与你所学语言相关的聚会,参加聚会,结识朋友,用你的专业知识交换他们的专业知识。也许有人需要会计帮助,也许有人需要法律咨询。你可以用你的时间换取他们的时间,而不是直接向他们说:“你愿意做我的导师吗?”没有人愿意为陌生人浪费自己的空闲时间。相反,用你的帮助来换取他们的帮助,你将有 95% 的机会成功找到导师。
11. 养成分解问题的习惯
您有一个非常出色的应用程序创意。然而,考虑到您目前的技能水平,该创意可能过于复杂。您应该如何解决这个问题呢?加入"分块快车"。
不,我所说的并非指艺术电影,而是指将您的编程问题进行分解。
举个例子,假设您想要制作一个能够给吐司涂黄油的机器人。(如果有人正在制作这样的机器人,我很愿意资助您的Kickstarter!)机器人对吐司、黄油或刀子一无所知。您可能不相信,但实际上,我们的大脑需要相当复杂的电路才能完成如此简单的任务——给一片吐司涂黄油。(这也许就是我不喝咖啡就无法完成的原因。)
因此,创造一个能够自主完成所有这些任务的机器人确实非常复杂和困难。然而,由于我们都是优秀的程序员,我们可以将问题进行分块和分解。
机器人并不需要知道吐司、黄油是什么,我们又不是在制造天网,因此我们只需关注实际的任务。我们需要机器人完成以下三个步骤:
- 拿起一片吐司,并将其放置在涂黄油的理想位置。
- 拿起一份黄油。
- 将黄油均匀地涂抹在吐司上(这可能是最具挑战性的部分)。
接下来,您需要进一步将每个模块进行分解。在此过程中,您可以考虑其他解决问题的方法。例如,机器人是否需要"涂抹"黄油?或者只需将黄油融化在吐司上?它是否需要学会拿起刀?或者它是否可以具备某种内置的刀臂,就像监狱里的海盗小刀一样?
问题分解得越细致,并明确要解决的问题,就越容易将代码打包成小块。代码越简洁,处理起来就越容易。
因此,下次当您想要制作"Snapchat和Evernote的结合体"时,请记住将问题分解成可解决的小块。
12. 修改别人的代码
要想从初学者一跃成为成熟的程序员,其中一个最重要的步骤就是了解如何寻求帮助。每个人都需要帮助,就连那些所谓的 "神级程序员" 也不例外。
如何利用帮助会决定你作为程序员的进步速度。在 StackOverflow 这样的网站上,仅仅复制并粘贴别人提供的代码是非常诱人的。你的程序会如你所愿地运行,然后你就可以继续快乐地编程了。然而,除了代码依赖之外,这个练习并没有教会你任何东西。因为当你下一次遇到同样的问题,但情况不同时,别人提供的代码片段可能就不再起作用了。那么你该怎么办呢?你被卡住了。
这就是为什么编程中有一条规则说 "永远不要复制粘贴你不理解的代码"。那么,当你遇到一段代码可以解决你的问题,但你却不知道它是如何工作的时候,你应该怎么办呢?工作原理?分解代码。
第一步 - 将代码复制并粘贴到程序中。(是的,是的,我知道我刚说过不要这么做,耐心,耐心)。
第二步 - 确保你的程序或应用程序按预期运行。即确认该代码块确实解决了你的问题。
第三步 - 逐行删除复制粘贴的代码块。
第四步 - 每删除一行,检查一下有什么地方被破坏了。应用程序还能运行吗?错误代码是什么?删除这行代码对程序有什么影响?
第五步 - 即使你认为自己知道某行代码的作用,也要删除它。作为一名程序员,最重要的任务就是经常根据结果测试你的假设。作为程序员,最令人愉快的感觉就是现实世界验证了你的假设。你知道当你的男朋友/女朋友/丈夫/妻子说出那神奇的几个字时有多开心吗?
"你是对的"。
就像这样,但更好。
第六步 - 将一些线条调换一下。换一下行的顺序能否实现同样的功能?为什么要按照原来的顺序写?
通过逐行分解解决方案的代码,您将学习并理解每一行的作用以及编写的原因。这样使用别人的代码要比直接粘贴并寄希望于最好的效果要好得多。一旦你理解了每一行代码的必要性,下次再遇到类似问题时,你就能自己找出问题所在并加以解决。
一旦掌握了从 StackOverflow 破解代码的方法,下一个目标资源就是 GitHub。它是程序员用于协作的工具,同时也是最大的开源代码库之一。
那么,如何利用它成为一名更好的程序员呢?假设你想制作一个 Instagram 克隆版。但不幸的是,你不知道该怎么做。于是,你前往 github.com,搜索 "Instagram "或 "照片应用程序"。
难免会有一些用 Swift/Objective-C/Java 写的东西,你可以下载看看。想想他们的程序结构。看看所有的类、常量和相互作用。修改代码。它还能运行吗?为什么要修改?是否存在你没有发现的环节?问自己一堆问题,通过苏格拉底式的方法学习。拆解项目,了解它是如何构建的。
当你开始熟练掌握这一点时,下一件事就是逆向工程。在 GitHub 上找到一个知名程序员制作的小项目,下载该应用程序。运行它并查看其所有功能。玩一玩。
然后从头开始构建,完成后将你的代码与他们的代码进行比较。你是否可以提高效率?是否有你无法解决的问题?现在,你才真正进入了大联盟。
就到这里吧,伙计们。你们还在等什么?夜色还年轻!今天就开始编码、制作、学习吧!请访问 www.appbrewery.co 开始你的编码之旅!