码农-如果当初学习编程时能有人给我这些忠告该多好

在你学习编程之前思考一下你的目标


要知道编程大多时候就是在创造,当你有最终目标感时道路会更加的清晰。如果你的目标是“学习编程”而不是更具体的学习哪种程序及如何让你的生活更好,那么你可能会发现这不过是一次令人沮丧的实践。

我有点惭愧地承认我学习计算机科学的部分动机是为了证明我聪明,及我想干“聪明人”的工作。我也喜欢思考数学和理论(《哥德尔、艾舍尔、巴赫:集异璧之大成 》这本书在我易受影响的年纪进入了我的脑海),编程是一个不错的选择。当然这并不足以使我坚持这么久,真正让我坚持的是我发现了编程可以将科技与我真正喜爱的东西(如音乐和文学)连接到一起。

那么,你想要写什么?网站?游戏?iPhone应用?致富的商业软件?交互艺术?你是想让老板印象深刻?或你是想自动执行一些乏味的任务以让你有更多的时间看水獭照片吗(译者注:这里应该指有更多的时间看外面的风景)?也许你只是想更具有就业竞争力,因为可以将技术流行词添加到简历,或者只为了实现你的教育需求。所有的这些都是有价值的目标,你得确定知道哪个才是你想要的目标然后相应的去学习吧。

没有什么神秘的东西


编程跟其他东西一样,是一门技术。跟语言学习一样,有需要掌握的语法和词汇;跟数学一样,有解决特定类型问题的流程方法;像各种工艺和艺术创作一样,有技术、工具以及人们经年累月发展起来的最佳实践方案,专门解决各种不同类型的任务,你可以自由的使用、修改或弃之不用。

Joel
Spolsky(一个非常聪明的家伙,他的一些其他的观点我也很喜欢且频繁认同)曾论断:在有着“程序员真正思想”的人和缺乏该领域成功所必备的知识能力的任何人之间有一条很清晰的界限。据他所言,这条界限包括指针和递归(这里和这里有为感兴趣的人提供的入门资料)。

我在学校学习过指针和递归,当我掌握了过后,大脑发生了一次愉悦的波动—这种智力快感使我想要将学习计算机科学排在第一位。但是,除了课堂练习外,其他时候用指针和递归来完成任务的次数就相对较少了。后来在一次次的帮助他人学习时,我发现大家根本不用掌握这两项技术中的任何一项就可以完成一些非常有趣有益的项目。

想知道或怕知道自己是否“足够聪明”其实没什么意义。当然,你的任务越复杂越深奥,你需要掌握的知识水平就越高。不过这也同样适用于其它的任何领域。除非你计划完全靠编程生活,否则你可能并不需要成为一个掌握递归的天才来完成你的任务。

第一次运行一般不成功,第二次第三次也可能不成功


当你第一次学习编程时,你会很快遇到这样的特殊经历:你认为已经按照所想的完成了每一件事,检查了一遍又一遍,却发现仍然运行不了(出现bug了)。你完全不知道该从哪开始修复它,错误信息(如果你够幸运只有一个的话)好像在说“fuck
you”。你可能就此放弃,心里想着自己恐怕永远也解决不了了,那么你就不适合干编程这行。我一开始就有这种感觉,尝试着用C++写一个程序然后运行它,却只得到“segmentation
fault”这个麻烦。

但是这种经历对所有不同技术水平的程序员来说都太普遍了,这绝对与你的智商、技术悟性或者是否适合干编程这行没有任何关系。初学者会碰到这样的情况,经验丰富的程序员也会碰到这种事情。主要的区别就在于你如何应对这种情况。

我发现新手程序员和有经验的程序员之间一个很大的不同点,就在于一种信念(指有经验的程序员所具有的信念):相信事情出错是因为逻辑原因并且一定能找出来;相信bug可以修复;相信有办法实现目标。从“运行错误”到“运行正确”的过程可能不是很明显,但是有耐心你通常都可以找出问题。

总是有人说你做错了


括号应该另起一行;括号应该放在同一行;用tab键来缩进,但是tab很邪恶哟;你应该使用存储过程,但实际上你又不应该用它们;你应该总是对代码进行注释,但是好代码不需要注释。

基本上对于一个特定的问题总是有许多不同的方法,没有所谓单一的“正确方法”。许多程序员都非常擅长倡导他们首选或偏爱的方法,但是那并不意味着这是“唯一正确的方法”。如果与人们面对面争论后告诉我:我是错的,那么我也会尽力搞明白是否他们就一定是正确的,这是我早期职业生涯比较重要的一个方面。

如果你在一个小组里与其他人一起编程的时候,肯定会有人总是对你做的东西指指点点,有时候他们说的的确是正确的,但是总是值得去探究下看你是否真的“做错了”。但有时候他们完全就是胡扯或只是再次引起了一场古老而没有意义的争论,那么你最好适应这样的情况然后忘掉它吧。另一方面,如果你个人喜欢这种古老且没有意义的争论的话(比如语法狂,一直看着大家),那么不用多说,你来对了地方。

总是有人说你不是一个真正的程序员


HTML不属于真正的编程;如果不用vi的话,你就不够严肃认真;真正的程序员要懂C;真正的程序员不用Windows;有些人从来都学不会;你不应该学习编程; 你不是一个计算机程序员(但是我是)。

“编程”对不同的人有着非常不同的含义,而且现在看起来与过去也不太一样。有趣的是,大家都知道,工具、包和框架能够让初学者甚至受过训练的开发者更快更容易的做开发,但正因如此这些东西往往被贴上“不是真正的程序员”的标签。(看:“Return
of the Real Programmer”)

其实这背后隐藏的是一种害怕心理:“如果“任何人”敢自称他们自己是一个真正的程序员,那么这篇文章的题目就没有意义了(译者注:也就是都不敢自称自己是真正的程序员)。但是我认为这种保守行为是非常具有破坏性的。

使用那些让你最容易开发的工具吧。如果这意味着你的游戏是用Stencyl
或者GameMaker做的,而不是自己从头开始写的,没关系啊。如果你首次编程用的是HTML或者Excel宏,也OK啊。只要你能坚持下去就行。

当你越来越舒服的时候(没任何挑战力),你会自然的开始找出那些工具受限的不足的(而不是有帮助的)地方接而寻找功能更加强大的工具,但是大部分情况,很少有人会去看你的代码或问你用什么工具—你用这些工具实现了什么功能才是关键。

忧虑所谓的“极客声誉(geek
cred)”
相当于慢性自杀


如前所述,我过去(尤其在学校)一度非常担心从我的穿着,我的讲话,我选择的阅读资料,甚至我的软件定制选项是不是证明了自己“不是一个真正的极客”(不是真正的极客貌似就没啥资格进入技术社区),这严重消耗了我的精力,后来我决定完全不考虑这些东西后我的技术更强了(译者注:与其花时间搞那些没意义的东西不如多学点技术,这样你的技术就会越来越强)。

你需要谨记一点:你擅长编程的能力与你到底有多适应各种极客亚文化没有一丁点关系。如果你内心深处知道自己永远都不会适应这些亚文化(而因此焦虑的话),那就需要加倍的记住了。你为了证明自己所浪费的精力应该用来做真正有有意义的事情,并且就算你是一名无可争辩的极客,眼窝中流露中可信赖的光芒,那么也请记住:当你评价其他人的信誉水平时,也并不意味着你认为的就一定对,一定是事实。

坚持比方法更重要


我们永远不缺像学习编程的“正确”或“最佳”方法这样的文章,其实还有很多潜在的方法。你可以从一本书或通过完成互动练习或通过调试其他人所写的东西来学习概念。当然,在你第一次学习的时候有许多的语言供你选择,每种语言都有相应的宣传和倡导。

关于“自学编程”流程和讲习班的一个常见的抱怨就是:一开始你会很愉快的轻松度过初级材料的学习,然后会越来越困难,这时你就会很快走上陡峭的学习曲线。你知道如何在页面上打印输出一些文本行,但是你不知道从哪开始进行一个“真正的”有用的项目。你可能感觉你只不过遵循了一些指南而没有真正的掌握,然后你可能就会指责学习资料。

当你到了这一步后,大部分可用的教程和在线资源都不是那么有用了,因为他们已经让你成为一名有经验的程序员了。然后困难进一步加剧为这样一个事实—“你不清楚自己还有哪些不知道的东西”,而且试图搞清楚你下一步到底要学习什么本身就是一个难题。

不管你遵循的是什么“编程”方案,冲破这堵墙的唯一方法就是持之以恒。这意味着你要持续的尝试新东西,学习更多的知识,并且一步步的搞明白怎么去开发你的项目。如果你非常清楚自己为什么要将编程放在首位的话,最后你也非常有可能成功。

如果你坚持一点一点的铺砖,可能会花费很长时间才能得到一道墙,但是最终你还是会得到。这时候我先前提到的信念就派上用场了。如果你相信随着时间和耐心,你可以完成整个编程任务,那么到时候你肯定会达成所愿的。

码农-如果当初学习编程时能有人给我这些忠告该多好,布布扣,bubuko.com

时间: 2024-10-12 20:27:23

码农-如果当初学习编程时能有人给我这些忠告该多好的相关文章

学习编程时遇到难点怎么办?

首先要说的一点就是我很幸福,因为我能够在网上找到很多免费的视频教程,不管是培训机构分享出来的还是个人分享出来的,也不管他们出于何种目的,我们都应该心存感激,因为没有人有义务这样做,我学习别人的课程还没有投资一分钱已经很满足了,我可以不报班就和大家在同一个平台上一起学习. 下面说到了正题,那就是最近遇到的一点小困惑,每次在课程开始时跟着打会理解得很好,但是到了后期就有点囫囵吞枣的感觉,要不断往回看,不断想.对于这个问题目前想到的解决办法就是针对卡住的知识点寻找别的教程以及解决办法 对比参照着学习,

老码农教你学英语

转自:http://blog.jobbole.com/45296/ 对于咱们这些高端大气.时刻需要和国际接轨的码农,英语的重要性自然是毋庸置疑的.尤其是那些胸怀大志的潜在大牛们,想在码农行业闯出一片天地,秒杀身边的小弟们,熟练掌握英语更是实现其目标最关键的因素之一.否则,试想在你捧着某出版社刚刚翻译出来的<JSP 高效编程>苦苦学习JSP模板的时候,你旁边的小弟却是拿着原版的<AngularJS in Action>学习开发单页面应用,虽然你们都同样认真地学习了一个月,可做出来东西

【转载】我多希望我学编程时,有人教我这些事!

1.学编程之前,想清楚自己想写什么. 学习编程基本就是在学习建造东西.如果你知道你到底想造什么,你的编程学习之路将会豁然开朗. 如果你的目标只是“学习如何编程”,却不知道自己到底想写出什么样的程序,也不知道这些程序将如何让你的生活变得更美好,你很有可能会感到编程学习令你沮丧受挫. 说起来还有点丢脸,我最早想学习编程,是因为我想证明我聪明.并且,我也想做一份属于聪明人的工作.我还喜欢思考数学及理论.因此,编程怎么看都和我很搭. 但是这些想法都不足以延续我的编程学习热情.直到有一天,当我终于发现如何

10个值得推荐的学习编程的网站————博客园

/10个值得推荐的学习编程的网站 世界已经进入了互联网的时代.据最近发布的一篇<2016年互联网趋势>报告显示,中国已成为互联网市场的领导者,中国互联网用户的数量达到了6.68亿.可以预见,有着如此巨大的市场潜力,中国的互联网产业会迎来又一个井喷式的高峰.行业的迅猛发展也会相应地刺激行业人才的发展.据不完全统计,目前中国互联网从业人员的数量达到了5000多万人.从细分行业来看,互联网从业人员集中在移动互联网和电子商务这两大领域,岗位以技术类和运营类为主.其中,编程开发人员是技术类岗位的主力军,

机器码农:深度学习自动编程

转自原文机器码农:深度学习自动编程 作者简介:张俊林,中科院软件所博士,曾担任阿里巴巴.百度.新浪微博资深技术专家,目前是用友畅捷通工智能相关业务负责人,关注深度学习在自然语言处理方面的应用. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至[email protected] 本文为<程序员>原创文章,未经允许不得转载,更多精彩文章请订阅2017年<程序员> 机器自动编程是人工智能一直以来期望攻克的重要应用领域,随着深度学习的逐步流行,最近在自动编程方向获得了

当我们刚开始我们的码农生涯时,我们该做些什么

最近公司新来了一个妹子,老大让我带.妹子大大的眼睛,一眨一眨的,灰常可爱.从她身上我仿佛看到了两年前的自己,从面对业务的各种懵逼,到完不成任务时主动加班,有一种恍如隔日的感觉.所以想和大家聊聊当我们刚开始我们的码农生涯时,我们该做些什么? 写在前面 先聊一下带妹子这两周的趣事,感觉很有意思.记得当老大说让我带妹子的时候,我的心情是这样的 然后事情并非总朝着预料中的方向发展,妹子说的对我说的最多的一句话居然是 大哥,我eclipse炸了 大哥,我eclipse又炸了 大哥,我eclipse又又炸了

『电子书』分享一波码农必备编程开发类书籍[转]

layout: default title: 『电子书』分享一波码农必备编程开发类书籍[转] category: [技术, C/C++] comments: true --- 分享一些书籍 看到书籍很多,感觉很不错,就收藏下来了,是百度盘的连接,失效的可以评论一下以此更新一下连接. 书籍清单 Python编程快速上手 细说PHP(第2版) Python核心编程(第3版) Linux命令行与shell脚本编程大全(第3版) python高手之路 iOS编程(第4版) Python编程:从入门到实践

Python为什么这么厉害? 不想成为专业码农? 来学习Python吧!

什么是码农? 什么是码农,一张图解释码农大家用它来自娱自乐,然而,其中的辛酸只有程序员自己知道.程序员冲锋在第一线,各个人都在盯着你的结果,不断给你施加压力.你就是一个机器一样的干活,除了干活还是干活.程序员的压力是很大的,在繁忙的工作中,累的喘不过气,更没有精力时间发展人脉,没有时间谈朋友.很多时候,并不是程序员情商低找不到女朋友,而是他的工作环境没有目标对象,同时也没有很多的业余时间.工作的时候,只固定在一个小小的办工作上.可想而知,发展空间是什么. . 在文章末有0基础小白学习资料(欢迎关

退休老码农提醒你!学习Java,这些知识要牢记,能让你少走弯路!

现在的java在编程界基础已经根深蒂固了,随之带来的影响就是有大量的岗位,大量的工作方向,虽然现在很多的新兴语言势头都非常的猛烈,但是这并不影响java依然体量最大的编程语言,而且丝毫也看不出这门语言有任何衰减的趋势,依然有大量的从业人员在java开源领域贡献着大量的代码,在新兴的领域java切入进来也是毫不费力.创一个小群,供大家学习交流聊天如果有对学java方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学java能够持之以恒java爱好群,如果你想要