作为一个入行快10年的程序员,想给新手程序员一些建议。这些是我希望在毕业时阅读的建议,希望它们能帮助你成为更好的程序员。总结一下,一共7项:保持健康编程以外的爱好继续学习正确处理错误不要拘泥于角色展现你的创造力刻意练习手速下面我来详细谈谈每一点。三寸之气用在各种养生之道上,万物无常,万物皆止。——《金瓶梅》首先要说的当然是健康。没有这个资本,一切都无从谈起。久坐、不运动、睡眠不足、不注意及时补充水分、长期伏案工作等都会对健康造成很大的影响,而不幸的是,这一切,程序员都占了上风。很多程序员小小年纪往往就患有各种疾病:颈椎病、腰椎间盘突出症、高血脂/高血压、胆结石、腱鞘炎等,程序员过劳死的新闻更是屡见不鲜。是时候刺激我们的神经了。研究表明,长期保持同一个姿势(无论是坐着还是站着)对身体都有不同程度的伤害,而且这种伤害事后无法弥补。换句话说,如果你白天上班坐了8个小时,下班后去健身房锻炼一个小时也无济于事。近年流行的“常设办公”也是如此。如果白天站立时间过长,会给膝关节带来很大的压力,也会损害身体健康。推荐的方式是写代码30-40分钟,然后起身散散步,喝杯水,眺望远方,和同事聊天。我知道,作为一个程序员,经常会遇到那种写代码写High连厕所都不想上的时候。但是,为了长久的健康,我们还是需要养成良好的生活习惯。改掉坏习惯许多程序员除了长期保持同一个姿势外,还有各种各样的坏习惯。例如:吸烟、饮酒、糖瘾(碳酸饮料、其他高糖饮料)这些习惯,一般美其名曰提神。大家都知道,程序员加班在业界是比较普遍的,萎靡不振是常态。然而,这些所谓的刷新方法实际上都不起作用。这些坏习惯归根结底是一种“毒瘾”,本质上与吸食大麻无异。不过好在这些坏习惯你是完全可以戒掉的,只要坚持一段时间,让“瘾”过去(就像真正的瘾一样,更多的是一种精神依赖,一旦你克服了自己对它的依赖就精神上依赖,才能获得自由)。在大学的头几年和刚开始工作的时候,我也对香烟上瘾。写代码写累了,就到办公室外面抽根烟。一氧化碳中毒带来的那种短暂的醉意感,确实是一种放松的错觉,但抽完烟回来写代码会感觉更累。而且嘴里总有异味,喉咙不舒服,最重要的是没精打采。终于有一天,我受不了了,决定戒烟(其实我和很多人一样,之前也戒过无数次烟)。烟瘾来了就去喝杯水,晚上站着(站着能说话,神清气爽)。前三天是最艰难的。一周后,我基本可以控制抽烟的欲望,然后越来越轻松,完全感觉不到烟瘾对我的影响。碳酸饮料和高糖饮料也是如此。在饮食不丰富的自然界中,我们的祖先遇到了可以为身体提供能量的糖类(如蜂蜜),自然而然地大量消耗。这种嗜糖基因至今仍在发挥作用,但不同之处在于,我们现在可以轻松地从食物和饮料中摄取比身体所需更多的糖分。这些糖分会引起很多健康问题,比如肥胖、高血糖、冠心病等等。更多的时候,我们是因为精神上的依赖才想多喝酒的,也就是上面说的“毒瘾”。戒掉对糖的依赖比抽烟戒酒更难,因为生活中有很多陷阱,酸奶、面包、饼干、水果等等。可口可乐零的陷阱现在香烟包装上印有焦油含量,有10mg和15mg。焦油含量是影响香烟口感的重要因素。通常所说的“顺滑”,其实就是焦油含量低,会让你感觉更健康。但是,陷阱是吸完一根烟后,你觉得不满足,神经觉得刺激不够强,就会驱使你去吸第二根烟,结果吸入更多的焦油。本来一根15mg焦油的香烟就可以让人上瘾,现在两根10mg的香烟也能达到同样的效果,相当于摄入了20mg。零可乐也是如此,这种无糖、加糖的添加剂会刺激你对糖的渴望,你需要摄入更多的糖来抵消这种虚幻的渴望,从而变得更不健康。也许有人会说,没有这些爱好,活着还有什么意义呢?相信我,当你戒掉这些“毒瘾”,拥有健康的身体,你才能真正体会到生活的乐趣。当您控制这些成瘾时,您获得的病态安慰是虚幻的。几点建议:经常运动可以缓解颈椎和腰椎的不适,加快新陈代谢,消耗掉会沉积的多余能量。比如比较容易接触和使用的运动:瑜伽/普拉提、乒乓球、跳绳,选择合适的运动方式,然后养成习惯(比如每周坚持做两次瑜伽,或者打球每天中午30分钟)乒乓球)。如果这些与你的工作有冲突,比如公司要求你长时间晚上加班,那么你可以考虑换一家公司。培养编程以外的爱好如果让不同的人给程序员打标签和排名,house肯定会在前三名。在任何聚会上,程序员总是很容易被识别出来:聪明、戴眼镜、话不多、有点无聊、容易聊天等等。难怪,长期钻研技术,沉浸在黑白分明的二元世界里,爱追根究底,谈不上容易死。我建议新手程序员可以找一个编程以外的爱好,可以扩大自己的社交圈,也可以有不一样的周末度过方式(而不是在家写代码);其次,它可以帮助你成为一个更好的人。程序员。你一定有过这样的经历:一个编程问题困扰了你很久,但是你却久久找不到解决办法。于是,你出去走走,或者和别人聊天,突然灵光一闪,想到了这个问题。答案。事实上,我们大脑的工作方式是如此神奇,换一个完全不同的环境可以让大脑得到很好的休息,往往能产生1+1>2的效果。写代码写累了,就去听听音乐,或者打一会乒乓球,缓解一下疲劳,甚至还能开阔思路,产生新的灵感。有人建议学习一项与编程无关的技能,例如:乐器(如吉他、架子鼓)、绘画(素描、水粉、水彩等)无关的爱好可以帮助大脑休息。还有一点需要注意的是,你并不一定真的需要成为某个爱好的专家,所以不要有额外的压力:担心玩得不好,没有绘画天赋等等。没关系,这只是一个爱好.我自己也尝试过很多不同的爱好,比如写生、书法等等。持续学习软件开发是一个需要终身学习的行业(其实如果不想做那种等死的人,基本上每个行业都是这样)。我毕业的时候,SSH(SpringStrutsHibernate)是Web开发的主流,jQuery是新的前端。一些公司开始尝试使用Adob??e的ActionScript,但这种语言很快就淡出人们的视线。Backbone.js,在jQUery的基础上融入了MVC的理念,提供了更高级的抽象能力,成为开发“大型”前端应用的首选;紧随其后的是庞大而全面的Angular.js,通过内置的双向绑定、依赖注入和完善的测试支持,让前端开发和后端开发一样稳健;然后是虚拟DOM,React范式的React栈再次颠覆了前端开发方式。虽然现在知道下一次中断将在哪里发生还为时过早,但可以肯定的是:它会发生。除了基础框架之外,各种构建工具层出不穷,从最开始跟后端拼在一起的maven、rake,到基于NodeJS的grunt,再到gulp,再到webpack,最后又回到npmscript。程序员深陷技术进化的洪流之中,身不由己。作为一名程序员,不仅需要扎实掌握基础知识(操作系统原理、计算机网络、数据结构、算法等),还需要有极强的快速学习能力和乐于助人的态度不断学习,后者可能更重要。重要的。一些建议看书通过视频/文字教程等学习新技术。建议新手每天留出一个小时看书,周末可以多看书。ThoughtWorks有一个阅读雷达,是一个非常不错的书单,包括很多经典书籍。除了看书,还可以在网上学习一些教程,比如Tutorialplus和Egghead等,值得常去看看。如果你有新的有趣的技术,不妨亲自尝试一下。毫不夸张地说,英语能力是优秀程序员和普通程序员的华丽分界线。拥有良好的英语能力,可供你学习的资料库会立即扩大数百甚至数千倍:海量优质免费教程、视频,以及优秀的中文教程,通俗易懂,幽默风趣。只是中文版本会比较少,一般总是会落后于英文版本。英语能力不仅可以帮助你熟悉各种前端库、CSS框架等的介绍,还可以让你了解到各国程序员对各种库的评价,框架的使用心得,踩过的坑等等。2012年加入ThoughtWorks的时候,面试的时候结结巴巴,说不出话来。到6个月的试用期结束,我已经可以去澳洲和客户的OP谈笑风生了。2013年8月,在印度浦那,我能够用英语给来自世界各地的学生讲课。除了与不同文化的人交流和讨论更顺畅,你还能明显感觉到学习速度变得更快、更有效率。我自己实践过的比较有效的方法。我每天花两个小时(早上一小时,晚上一小时)看澳洲之音的视频,视频里的每一句话我都会口述,听不清楚就复述,还有一些句子可以重复十次。最终视频里的每一句话我都能看懂,边听边写。就这样坚持了3个月左右,基本能看懂客户需求的澄清,也能完全理解开会时大家讨论的要点。其实诀窍就是坚持。在这三个月里,每天两个小时,我没有休息一天。过了这一关就容易了,尽量多听,多说。另一种改进方法是翻译书籍。我建议您与另一位有经验的同事一起翻译。大家互相监督,也有一个支持。半途而废并不容易。正确对待错误。斯坦福大学的CarolDweck教授通过一些实验和后续研究提出了著名的心智模型(Mindset)理论。总之,她发现不同的人对失败的态度是完全不同的:一个害怕失败的人,失败后会变得无法接受,很容易否定自己,影响进一步的尝试。德韦克教授称这种人为固定心态(FixedMindset);失败/犯错误是一种学习方式。他们更注重过程而不是结果。Dweck教授称之为成长心态(GrowthMindset)。德韦克在演讲中提到,通过转变为成长型思维方式,注重从失败/错误中学习,人的潜能可以得到很好的发挥,也更容易达到预期的效果。很多新人不敢尝试,也不愿意让同事知道自己的不足。这种态度会导致他选择更轻松的工作,避免暴露自己的缺点,久而久之就会形成恶性循环。其实企业一般对新人的期望都不高,对新人犯的错误也很宽容。新人要勇于承认自己的不足,勇于尝试新事物,犯错并从中吸取教训。承认自己的缺点一开始可能很难,但尝试几次后,你会发现其实并没有那么可怕。你会逐渐喜欢上没有任何负担的专注于学习本身的快乐。不受角色限制。在《血色浪漫》中,杜良写了一段描写陕北农民的文字:钟跃民惊奇地发现,在如此贫困和艰苦的生活条件下,村民们很少皱眉。他们总是很乐观,喜欢谈论男女饮食的话题。在饮食方面,由于没见过更好的食物,他们坚持认为酸汤麻辣油的饺子是世界上最好吃的食物。如果有人指出世界上还有更多好吃的东西,那么大家就会同意人对这个世界太陌生了,所以大概是没吃过酸汤包才会来这里吧。正如酸汤包不是世界上最美味的食物一样,发展也不是世界上最强大的工作。任何一个好的、健康的产品或项目,都需要不同的角色相互配合、共同努力。如果只把自己局限在程序员的角色里,时间长了难免心胸狭隘。作为程序员,既可以向上游挖掘需求、分析用户痛点、挖掘商业价值,也可以向下游进行测试编写、产品发布、运维监控等。只有眼界开阔了,才有可能对产品有一个整体的认识,也更容易在程序员这个角色上做得更好。作为一个菜鸟,能把自己的长处用在自己擅长的事情上固然很好,但是如果只局限于自己擅长的事情上,那就太弱了。如果你在前端非常有经验,除了和别人分享这个经验和知识,你还可以从其他角色那里学习他们擅长的东西,比如从测试中学习自动化,SBE等;从后端学习高性能、服务器高可用技术、数据库设计与优化、API设计等;从DevOps、自动化配置技能等学习运维技能,这些不同的技术不仅可以开阔视野,也可以为自己在未来尝试不同的角色和机会打下良好的基础。以我自己为例,我刚开始工作的时候是一个Java开发人员,后来开始做产品的前端开发。换工作后,我去Linux下用C写服务。后来加入ThoughtWorks后,正经岗位是开发,但也兼职做过一段时间的项目QA。在一些项目中,当没有UX时,我仍然可以做一些简单的设计。客户在现场担任顾问。我个人觉得在不同的角色之间切换非常有趣,我自己也很享受整个过程。展示您的创造力简明准确地描述一个想法、复杂的概念或想法的能力是一项非常重要的能力。我见过太多沉默寡言、小声说话、紧张不安的程序员,即使有再好的想法也很难完全表达出来。不过,这种能力是可以锻炼出来的,只要借助原型制作:DrawingStaticprototypePaperprototype俗话说,一图抵千言。你只需要学习一些简单的绘画技巧,就可以大大提高你的表达能力。通过使用静态页面(HTML/CSS/JS)、模拟数据等,快速表达想法是程序员的一个优势。可以使用静态数据、数据文件等方式,做一个交互原型,然后通过不断与用户确认,逐步完善。这种方法可以避免过多的浪费并尽早交付客户价值。原型不仅限于草图、有效的静态页面或清晰简洁的演示文稿。基于PPT的原型还可以用来分析当前产品的痛点,比较方案的优劣,展示自己的观点等等。纸上原型制作是另一种可以用于快速沟通的低成本原型:(图片来自ThoughtWorks同事刘海生)手速程序员是否要求手速快,这是一个有争议的话题。支持者认为这是一项基本技能,每个程序员都应该快速打字;反对者认为,程序员的价值在于思考和解决问题,追求速度胜过聘请打字员。我个人的看法是,好的程序员应该手速快(包括打字速度,但不限于此)。我在ThoughtWorks西安办公室组织过很多提高手速的工作坊,比如三周三页,闪电项目等等。基本原则是针对特定的“工作”反复练习。最近带了两个新人,给他们布置了一个简单的作业:图片来源:dirbbble.com基本要求是尽快实现这个页面,并有一点交互(比如选择联系人后的checkbox会显示出来)选择状态、剩余邀请数减少等)。第一次做了5个多小时(加上环境搭建、安装Node.js、npm包等),第二次2个半小时,第三次1个半小时时间,第四次50分钟。在同一页面上连续练习听起来像是重复性工作,但实际上它可以涉及很多内容:熟悉命令行快捷键的使用搜索引擎的使用Stackoverflow的使用当你真正能够熟悉它时,你有时间思考如何优化,比如如何提取模板项目(这样下次做同样的事情会快很多),如何简化DOM结构,如何使用命令行工具来帮助你提速up等手速是主要前提。没有速度,所有的优化都是头脑中的幻想,无法真正实现。总结要成为一名优秀的程序员,首先当然要有一个好的身体。此外,你需要培养编程以外的爱好,这会让你像一个正常人一样生活(而不是传统的工程书呆子)。程序员是一个需要不断学习和充实的职业。在学习的过程中,英语能力可以帮助你更快更有效地学习。另外,要正确对待学习过程中难免犯的错误,每一个错误都要改正。都是学习机会。开发只是软件开发过程的一部分。程序员需要扩大自己的视野,与其他角色合作,以确保产品交付。在日常开发中,程序员也需要快速准确地表达自己的想法和创意。最后,更快地完成工作会让您有更多时间考虑改进低效的工作方式。
