本帖最后由 小痞痞 于 2013-12-6 13:56 编辑
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。 Cecily Carver 在你学习编程之前思考一下你的目标 要知道编程大多时候就是在创造,当你有最终目标感时道路会更加的清晰。如果你的目标是“学习编程”而不是更具体的学习哪种程序及如何让你的生活更好,那么你可能会发现这不过是一次令人沮丧的实践。 我有点惭愧地承认我学习计算机科学的部分动机是为了证明我聪明,及我想干“聪明人”的工作。我也喜欢思考数学和理论(《哥德尔、艾舍尔、巴赫:集异璧之大成 》这本书在我易受影响的年纪进入了我的脑海),编程是一个不错的选择。当然这并不足以使我坚持这么久,真正让我坚持的是我发现了编程可以将科技与我真正喜爱的东西(如音乐和文学)连接到一起。 那么,你想要写什么?网站?游戏?iPhone应用?致富的商业软件?交互艺术?你是想让老板印象深刻?或你是想自动执行一些乏味的任务以让你有更多的时间看水獭照片吗(译者注:这里应该指有更多的时间看外面的风景)?也许你只是想更具有就业竞争力,因为可以将技术流行词添加到简历,或者只为了实现你的教育需求。所有的这些都是有价值的目标,你得确定知道哪个才是你想要的目标然后相应的去学习吧。 没有什么神秘的东西 编程跟其他东西一样,是一门技术。跟语言学习一样,有需要掌握的语法和词汇;跟数学一样,有解决特定类型问题的流程方法;像各种工艺和艺术创作一样,有技术、工具以及人们经年累月发展起来的最佳实践方案,专门解决各种不同类型的任务,你可以自由的使用、修改或弃之不用。 Joel Spolsky(一个非常聪明的家伙,他的一些其他的观点我也很喜欢且频繁认同)曾论断:在有着“程序员真正思想”的人和缺乏该领域成功所必备的知识能力的任何人之间有一条很清晰的界限。据他所言,这条界限包括指针和递归(这里和这里有为感兴趣的人提供的入门资料)。 我在学校学习过指针和递归,当我掌握了过后,大脑发生了一次愉悦的波动—这种智力快感使我想要将学习计算机科学排在第一位。但是,除了课堂练习外,其他时候用指针和递归来完成任务的次数就相对较少了。后来在一次次的帮助他人学习时,我发现大家根本不用掌握这两项技术中的任何一项就可以完成一些非常有趣有益的项目。 想知道或怕知道自己是否“足够聪明”其实没什么意义。当然,你的任务越复杂越深奥,你需要掌握的知识水平就越高。不过这也同样适用于其它的任何领域。除非你计划完全靠编程生活,否则你可能并不需要成为一个掌握递归的天才来完成你的任务。 第一次运行一般不成功,第二次第三次也可能不成功 当你第一次学习编程时,你会很快遇到这样的特殊经历:你认为已经按照所想的完成了每一件事,检查了一遍又一遍,却发现仍然运行不了(出现bug了)。你完全不知道该从哪开始修复它,错误信息(如果你够幸运只有一个的话)好像在说“fuck you”。你可能就此放弃,心里想着自己恐怕永远也解决不了了,那么你就不适合干编程这行。我一开始就有这种感觉,尝试着用C++写一个程序然后运行它,却只得到“segmentation fault”这个麻烦。 但是这种经历对所有不同技术水平的程序员来说都太普遍了,这绝对与你的智商、技术悟性或者是否适合干编程这行没有任何关系。初学者会碰到这样的情况,经验丰富的程序员也会碰到这种事情。主要的区别就在于你如何应对这种情况。 我发现新手程序员和有经验的程序员之间一个很大的不同点,就在于一种信念(指有经验的程序员所具有的信念):相信事情出错是因为逻辑原因并且一定能找出来;相信bug可以修复;相信有办法实现目标。从“运行错误”到“运行正确”的过程可能不是很明显,但是有耐心你通常都可以找出问题。 总是有人说你做错了 括号应该另起一行;括号应该放在同一行;用tab键来缩进,但是tab很邪恶哟;你应该使用存储过程,但实际上你又不应该用它们;你应该总是对代码进行注释,但是好代码不需要注释。 基本上对于一个特定的问题总是有许多不同的方法,没有所谓单一的“正确方法”。许多程序员都非常擅长倡导他们首选或偏爱的方法,但是那并不意味着这是“唯一正确的方法”。如果与人们面对面争论后告诉我:我是错的,那么我也会尽力搞明白是否他们就一定是正确的,这是我早期职业生涯比较重要的一个方面。 如果你在一个小组里与其他人一起编程的时候,肯定会有人总是对你做的东西指指点点,有时候他们说的的确是正确的,但是总是值得去探究下看你是否真的“做错了”。但有时候他们完全就是胡扯或只是再次引起了一场古老而没有意义的争论,那么你最好适应这样的情况然后忘掉它吧。另一方面,如果你个人喜欢这种古老且没有意义的争论的话(比如语法狂,一直看着大家),那么不用多说,你来对了地方。
|