趁着元旦休假+春节,尝试把2018年期间让我受益的一些文章、问答,翻译一下。
欢迎指正、讨论,但愿对你也有所帮助。
原文连接:Things I Wish Someone Had Told Me When I Was Learning How to Code
说明:这一篇最没有干货java
要知道,如何编写代码主要是关于如何构建事物,了解你的最终目标会让学习路径更将清晰。若是你的目标只是“学习编程”,而不清楚最终程序的种类,以及它们如何让生活更美好,那你可能会以为过程充满沮丧。程序员
我有点惭愧地认可,我学习计算机科学的动机之一是想证实本身很聪明,但愿可以得到聪明人才能从事的工做。我也喜欢数学和理论(这本书曾在我敏感的年龄引发了个人注意),编程与之不谋而合。不过,在我找到将技术与我真正喜好的事物(好比音乐和文学)联系起来的方法以前,这种状态维持不了多久。编程
那么,你学习写代码是为了编写什么?网站?游戏? iPhone应用程序?成立一个创业公司一晚上暴富?交互很牛的软件?仍是但愿可以给领导留下深入印象,亦或用脚本跑一些繁琐的任务,这样你就能忙里偷闲看水獭图片了(译者注:不是很懂这个趣味)?也许你只是但愿更有竞争力,在简历中能写上会编程,或者学习编程只是你的一项自我教育的计划。全部这些都是值得的目标,不过你要找到属于本身的那一个,研究明白。框架
其实编程跟其余技能没啥区别。就像学英语,先学词汇和语法。也有点像数学,特定函数解决特定问题。还有点像各类工艺和制做技术,随着技艺的发展,针对不一样场景和任务开发出不一样的技术、工具,也总结出不一样状况下的最佳实践,随你选用。编程语言
这家伙(很是聪明,我很喜欢看他的文章)以为,在编程领域,真正的程序员和其余人之间有一条明显的边界线,边界线区分出了两拨人的编程智慧。这条线就包括指针和递归。函数
我在学校学到的指针和递归知识,当我学会它们的时候,仿佛颅内高潮了——正是这种智力上的愉悦感,让我想要深刻学习计算机科学。可是,在课堂以外,须要学习新概念才能完成项目的机会愈来愈少,帮人愈来愈多地完成有意思的项目,可后来几乎都学不到新的概念了。工具
没有必要怀疑本身是否足够聪明。固然,项目越复杂,须要的水平也越高,但这些在其余领域也同样。除非写代码成为你的本职工做,不然你也没必要把递归理解的很透彻才能完成项目开发。学习
第二次、第三次可能仍是跑不起来网站
第一次学习编程,你极可能遇到这样的状况:认为本身已经正确地写好了配置,也检查再三,可是代码仍然运行错误。你也不知道从哪入手修复,错误信息(能有错误信息就算幸运了)也显示“去你的吧”。极可能在你就在这放弃了,由于你认为本身不是这块料。我深有同感,在我第一次编译运行C++代码的时候,我获得的错误信息是“segmentation fault”。编码
其实这种经历对全部水平的程序员都很常见,甚至跟你的智力水平、编码经验都没啥关系。做为初学者或者老手都会遇到这种状况。主要的区别是,你要如何应对这种状况。
我发现,编程新手和有经验的程序员的最大区别是信念:相信程序出错时出于逻辑错误,是有迹可循的;相信bug能够被解决,相信总会有途径解决眼下的问题。相信让代码正常运行的方法虽然暂时没找到,但耐心钻研,确定能让程序跑起来。
花括号另起一行,花括号不要另起一行。用tab缩进,不要用tab缩进。你应该使用存储过程,不过实际上存储过程没啥用。你应该写注释,好代码不须要注释。这些互斥的建议会一直伴随着你。
问题老是存在多解的,没有惟一正确的方法。不少程序员喜欢推广他们的我的偏好,可是选择并不惟一。你们一直告诉我我是错的,而我一直试图弄清楚错在哪,这让我早期职业生涯感到压力的一个方面。
团队协做过程更是免不了有人反对你的编码方式。有时候反对你的人是对的,你要深刻了解,看看为何对,为何错。有的时候呢,你才是对的,反对意见只是想挑起一个毫无心义的争论,那就直接忘掉它,按着编码规范该怎么写怎么写。
HTML不是真正的代码。若是你不用vi,那算啥写代码。真正的程序员都会写C,没人作Windows开发。有些东西你永远不会,你不该该干这个。你不是真正的程序员。
编码这件事对不一样人而言意味着不一样的东西,相比过去,如今也发生了不少变化。并且颇有意思的一点是,愈来愈成熟的工具、框架和开源代码,让新手和老手都更容易开发项目。使用这些工具和框架会被认为不是“真正的程序员”。
这背后的阴谋是由于若是你们都称本身是程序员,那程序员这个称号就变得没意义了。这种自设门槛的行为害处颇大。
放手去使用简单的工具开发项目吧。基于Stencyl或者GameMaker开发游戏没啥不妥,第一次编程是写HTML和Excel宏也没问题的。坚持该坚持的事情并不会有坏处。
随着你越写越顺手,天然会发现更好用的工具。并且,大多数时候不多有人看你的具体实现,也不知道你用了哪些组件和工具。
再读一遍前一段内容吧。我曾经很是担忧本身被认为不是”真正的极客“,尤为是在学校,会担忧个人着装、个人立场或者本身的读物和选择的软件不够极客。
关于如何学习编程的文章不少。你能够经过书本、交互式学习或者调试其余人的代码来学习概念。并且,你也有不少编程语言来选择哪一个开始学习。
市面上有不少自学编程的课程或者论坛。这些学习过程以后最多见的抱怨就是你能够快速地学习完初学者的知识,而后学习曲线忽然就变得陡峭了。以后想要取得进步,变得很是困难。你知道如何写输出文本的代码,但不知道怎么开始写一个真正有用的项目。也可能会以为本身学得比较僵硬,没有真正领会精髓,责备学习材料不够好。
当你进入这个阶段,市面上大多数的教程和资料都没用了,由于那些材料面对的受众是很是初级的初学者。你当前的困惑是”不知道本身还不知道什么“,不知道本身接下来改如何更进一步。
我想说的是,不管你按照哪一个教程学编程,你都会碰到学习曲线变陡这堵墙。惟一的解决办法就是坚持不懈。你要学习更多的知识,尝试更多新鲜事物,逐步解决如何构建有用的项目。若是你都知道为何学习编程,那你必定会找到接下来进步的路。
梅花香自苦寒来,宝剑锋从磨砺出。我以前强调的信念,在这个阶段就会派上用场。保持耐心,坚持不懈,最终会找到答案。