1. 选择一个难学的语言
首先选择一个难学的开发语言,在这一点上不要投机。
也许你听人们说过C++或Java对于初学者而言太难了,但是即使这些难学的语言也只需要一点额外的耐心和坚持。
可能你会选择一个老式的开发语言,例如COBOL或PL/I,或者相当底层的语言例如汇编甚至机器码?那为什么不试一下像Malbolge或Befunge或INTERCAL这样深奥的语言呢?
无论怎样,不要选择一个现代的、到处在用的开发语言例如JavaScript、Python或Ruby。虽然这些开发语言可能有巨大的需求,网上也有很多的学习资源,例如像汇智网这样专门针对自学编程者提供的在线学习服务,有系统的教程,也有助教答疑。
2. 搭建一个糟糕的编程开发环境
你可能听说过众多的可以免费下载或试用的文本编辑器和集成开发环境,例如Sublime、Atom、VSCode、IntelliJ…
有些人声称这些工具可以更舒服和高效地写代码,请忽略他们。
确实…自动完成、语法高亮、代码检查、以及各种各样的扩展包,听起来可以让开发变得简单。不过现实完全不同。真正知道如何开发软件的人不需要这些东西。
事实是这些被业界专业人士和熟练开发者使用的编辑器和IDE与开发是无关的,它只是一种阴谋而已,毫无疑问。
基于终端的编辑器,例如Vim或Emacs,常被认为是难学的,不过即使这些也是可以在实践中掌握的。
在一个更有挑战性的开发环境中,可以尝试windows写字板,反转你的键盘,拔掉你的显示器,可能看起来是这样:
3. 早日开始大型项目
如果你是认真对待学习编程这件事,那么每个人都知道你应当帮助世界进步。
毕竟,你应当能够在第一个星期就做出一个实时分布式视频流媒体平台,然后在第二个星期添加基于人工智能的推荐系统,然后一个月左右差不多就可以搞出来一个百亿美元估值的高科技企业了。
无论如何,不需要在意那些针对初学者的分步学习项目,也不需要为流行的开源项目做贡献。绝对不要在这些事情上费神。
4. 永远不要寻求帮助
在软件开发领域,新手这个词实际上指的那些天生有很多年经验和编程知识的人。
这就是为什么开发者从来不寻求帮助的原因。另外,对某些东西感到生疏是一种典型的示弱。
你不想表现的软弱,因此当你可能需要时不要寻求帮助。为什么你可以用本办法学习时还寻求帮助?
问答网站例如stackoverflow看起来有各种经验层级的开发者回答彼此的问题。但是他们真的了解什么?
需要承认,他们许多人都是专家级的软件专业人士,他们希望与所有阶段的开发者分享他们的知识。但是他们绝对帮助不了我们…
5. 休息6个月再学
你知道什么是比学习编程更难的吗?
花两个小时学习开发,然后休息六个月,接着回来学。
每个人都知道成功的关键是不坚持。有些人声称他们经常做小练习是学习新技能的最好办法。他们也说一天20分钟就会有效果。不管从哪方面说,他们都是错的。
一个六个月长的休息可以完美地忘记之前学习的东西。如果你不能休息六个月,怎么也得休息至少三、四个月才行。
只是不要把学习变成你的日常生活的一部分,就像刷牙和冲马桶一样的日常生活。没有人可以通过天天做一件事达到擅长。
6. 不要围绕主题阅读
互联网时代的一大缺陷就是,网上你没有足够的东西去阅读、去听、去看。
可能你听说过博客、在线出版物、播客、视频教程等等。坏消息是,我已经确认过了,这些东西根本不存在。
除此之外,有人会真的相信主题阅读可以帮助你更广泛地理解吗?或者那些偶然看见的文章可以激发你深入之前从未考虑过的方向?
即使这些神奇的资料真的存在,谁敢保证它们的高质量、或者是专家写的?
可能你应该试着去书店或图书馆看看?
不过还是坏消息,现在没人再出版纸质书了,因为没人看。互联网杀了它们。
7. 避免和更有经验的开发者打交道
学习任何东西的第一规则就是:远离专家。
这是因为大多数专家只有短期记忆,记不起来他们开始学习时的情形。这不是他们的错,他们的脑子里只是充满了太多你不懂的东西。
经验被高估了…对吗?对。
很多家伙说结对编程是向有经验开发者学习技巧的好办法。实际上,你更可能学习他们的坏习惯或错误的世界观。
另外,回忆一下上次有人向你咨询他们关心事情的建议,想像你的感受有多糟糕?
因此,你真的认为有经验的开发者喜欢讨论他们做的事情吗?当然不。
8. 远离实习和工作申请
最后,避免寻找你学习领域内的实习机会和入门级开发工作。
在你已经开发出可以登月着陆的代码之前,不要申请任何工作。在拿到比尔盖茨和蒂姆库克的联名推荐信之前,不要申请任何工作。
是的,实习可以提供现实中在开发团队中的工作经验,可以让你的工作获得实时反馈,也可以帮助你决定是否为一个特定的工作角色做好了准备。
但是!如果你认为这些实习和初级工作有助于你成为一名专业的开发人员,这种想法是错误的。
每个人都知道实习生是廉价劳动力。事实上,你的时间将被用来煮咖啡。记住,所有的关于学习编程的成功故事都有意忽略了这一关键的细节。
类似的,申请工作也是一个糟糕的想法。
是的,查看工作申请可以让你知道下一步要学习什么技能。但是记住,企业总是希望你的技能比简历里的多得多,这是一个没有尽头的过程。
即使你申请了一个工作,也接到了面试邀请,一定要拒绝。面试很可怕,而且永远与经验无关。更好的做法是闭上眼,等着工作来找你。
补充说明
当然,如果你希望轻松学编程,请参考以下建议:
- 选择一个现代的、随处可用的开发语言,例如JavaScript、Python或Ruby
- 使用业界广泛使用的代码编辑器和集成开发环境
- 自动完成、语法高亮、代码审查以及各种扩展包可以让编程更轻松
- 有很多对初学者友好的、逐步深入的学习项目
- 向流行的开源项目贡献代码从未像今天这样简单
- 善用stackoverflow…那里有各种级别的开发者彼此回答问题
- 求助那些有经验的专家,他们通常乐于分享
- 经常做小练习是学习新技能的最好方法
- 每天即使只练习20分钟也会有巨大的收获
- 让编程称为你的生活一部分
- 围绕一个主题进行阅读可以拓宽你的视野
- 偶然碰到的文章可以激发你研究从未考虑过的方向
- 网上的教程也可以是高质量的、或者由专家撰写,比如汇智网的教程
- 去图书馆或书店看书
- 结对编程是向高手学习的好办法
- 有经验的开发者喜欢讨论他们在做的事情
- 向有经验的开发者咨询他们开始学习时是如何处理问题的
- 实习可以提供团队工作机会,获得真实反馈,也可以帮助你决定是否为某个工作做好了准备
- 查看工作要求可以让你评估下一阶段的学习方向
- 面试…经多了就简单了
汇智网翻译整理,转载请标明出处:Learn to code, the hard way