一支笔,一双手,一道力扣(Leetcode)做一宿!!!
一、分享自己相关的经历
我们可能经常听到这句话,人永远赚不到认知以外的钱,如果把它放到程序员行业来说,同样适用,程序员永远写不出认知以外的代码。
一个优秀的程序员和一个糟糕的程序员,它们之间的差别并不一定是编码技能。多数情况下,这个差异存在于一些更基本的东西中,对一件事情的不同看法以及用什么的态度和方式去看。
当局者迷,旁观者清,自己并未察觉的一些坏习惯,正是阻碍你成为优秀程序员的绊脚石。
- 我的代码是最好的:有一个事实是,所有的程序都写的很烂,包括你的。无论你在上面花多少功夫,其他大多数程序员总是会认为你写的代码很烂、他们能写出比你好10倍的程序。太过自负是所有程序员身上的一个非技术性的最大的一个毛病。不要挑剔别人的程序,有一天也许你的程序会被人放在聚光灯下挑剔。要保持客观和专业的评论,不要轻易判断。保持谦虚,试着从周围人那里学习经验。如果你开始盲目地相信自己的伟大,那就意味着你的创造力开始消失。当你开始认为自己无所不知,没有什么可学的时候,你的学习自然就停止了。
- 喜欢走捷径:走捷径确实很诱人,可能每个人都这么做过。国情现状、社会风气、互联网公司的节奏等各种因素,在客观上促使我们在工作上对于捷径与效率的盲目崇拜,结果和代价自然也是惨痛的,这两年的光景大家也看到了。需求分析、架构讨论、技术推演,综合考虑开发原则、维护成本,解决技术债务,有些过程是必要的,一条走错的捷径可能会为你节省几个小时,但可能会带来数月的麻烦和额外的损失,打好扎实的基础知识与技能,重视设计文档编写,更多的思考工具的产生与原理,而不仅仅是工具的使用者。欲速则不达,通往卓越之路没有捷径。
- 不重视文档:知乎上有一个问题是中外程序员的差异,高赞回答里提到一项就是,国外优秀的程序员非常重视文档的编写,它和写代码一样重要。因为优秀的程序员会意识到,与任何其他业务功能一样,软件开发团队总是处于变化中。新来的、转岗的、退休的程序员来来往往,一份清晰易懂的设计文档是提高团队效率的重要资产。在任何这些场景中,访问设计文档、API 规范、说明手册和代码注释都可能成为项目的制胜关键。
- 为薪水工作:虽然工作的一大目的是获取薪水,养活自己以及供给家庭所需。但是,这只是工作最直接的回报,同时也是最低级的目标。如果我们只是为薪水而工作,将注定我们是短视的,也将注定难以成长。假如你看不到工资以外的东西,斤斤计较于薪水、福利、职位等,你很快就会失去平衡,失去信心,失去热情,失去平和,进而在工作时总是采取一种应付了事的态度,能少做就少做,能躲避就躲避,觉得只要对得起自己的那份薪水就成了。不愿付出努力,做事拈轻怕重,不愿挑战。缺乏责任心,消极抱怨,这些会让你的负面情绪蔓延,蚕食你的精力和时间,最终,你追求的高薪水也将不复存在。
- 只关注技术实现,不关注业务逻辑,不关心用户体验:一个优秀的程序员总是能发现问题并解决问题。他们努力地去理解系统架构的所有部分是如何协同工作,以及它们处于何种状态。他们会去质疑特性背后的设计和思想,以找到更好的解决方案。他们明白什么是好的用户体验。而另一方面,一个糟糕的开发人员会依附于他们喜欢的技术。他们认为单一的方法或流程才是“理想的”,用户体验和实际情况永远不应该去驱动决策。他们将不必要的依赖关系引入到项目中,以满足他们自己的偏好。
- 知识面太窄,好奇心太少:程序员这个行业,即要求深度,又要求广度。而广度,是无法一蹴而就的。 就是靠积累,长期的积累。如今的互联网如此发达,基本不存在你想要学习,找不到途径的情况。社交网络、书籍、网站、App、只要你有一颗探索世界的好奇心,总能发现更大的舞台。 最后,博采众长,触类旁通。
- 其实不喜欢写代码:很多人从事软件开发工作,并不是因为喜欢,可能是这个行业火,薪水高,入行门槛低。人做一件自己不喜欢的事情时,心理上没有亲近感,不会想着怎样把事情做得更好,往往是差不多就成了,不太可能有精益求精积极向上的追求。做喜欢的事,能最大可能发挥一个人的潜能和热情,会最快速地通向成功成就自己。而做不喜欢的事,一开始就注定了事倍功半,最后也往往会是痛苦不堪或半途而废。软件开发的技术日新月异,而每一项技术又往往博大精深,不持续、深入钻研是很难掌握的,更别谈精通了。没有热爱加持,终究无法远行。
最后,想要成为一名优秀甚至顶级的程序员,拥有良好的态度和习惯,比拥有多年的经验更重要。以乔布斯的名言共勉:Stay hungry,Stay foolish!
自学编程的难点在哪儿?
编程本来并不难,但是你没有基础,缺乏计算机基础知识,那就非常困难,难于上青天。
- 方向难:编程行业是有分工的:有做前端网页的,有做移动端ios的、安卓的,有做后台的。做网页的,有用jq+原生js的,有用vue.js,有用react的;做安卓的,又可以分做底层嵌入式驱动的,做系统框架的,做应用的。做后台的,又分为很多框架,技术栈和语言不同,java ,.net,python等等各领风骚。选择一个好的方向,难!因为每个分工没有优劣之分。也许你只是想混口饭吃,不在乎做哪方面。我的想法是,兴趣是最好的老师,用它来告诉你。
- 基础难:在学习上面知识之前,你还得先打下基础,毕竟没有不会走路的婴儿能够跑步的。要学的基础很多,包含计算机的组成,网络通信协议,数据结构等等。基础就像地基,不稳固的话,你的代码就会摇摆不稳,随时有崩塌的危险。基础的学习,涉及到的概念会比较多。就如一开始的二进制知识原码,补码,反码,就常常令人发疯。学到什么程度呢?那培训出来的人那样,可以手写java虚拟机的程度吗?完全不必,我想出来工作10几年的都没几个人能到达那种大神境界。能笔试通过就够用了。基础的学习,可能就得花去你两三个月的时间,还是在你有毅力坚持的情况下。
- 实战难:你按照教程的步骤一步步操作,发现怎么一开始搭个环境都不行,这个版本怎么跟我的不一样这么旧。好不容易环境没问题了,怎么我的代码就是运行不起来,明明看起来跟书本是一样的。错误千万条,条条通向bug。自学的人往往身边没人合适的可以请教的人,教程一般来说都会相应落后,实践的例子大多是demo样例级别,跟工作中用的东西差别很大。这三个搞在一起,想死的心都有了。你会发现学习了大半年,项目经验却基本为零。
- 精通难:自学编程,遇到的问题基本上都是自己摸索解决的,有些东西可能也暂时无法解决。由于没有实际的工作经验,没有处理和积累过工作中会遇到的各种突发问题,没有参与大型的高复杂度的软件设计,缺乏跟同事们的技术交流,技术会达到瓶颈,也很难养成良好的编程规范。
二、分析可能存在的问题
- 学习方法:学习方法可能影响我们的学习效果。如果我们的学习方法不合适,可能会导致我们在学习过程中难以理解或掌握知识点。例如,如果我们没有适应学科的思维方式或学习方法,就可能会在学习中遇到困难。
- 态度和动力:学习的态度和动力也可能会影响我们的学习效果。如果我们缺乏积极性和热情,可能会导致我们在学习中遇到困难。我们可能缺乏对自己的学习的关注和重视,没有持续的学习动力,导致我们无法坚持学习或者在解题时感到力不从心。
- 知识储备:知识储备也是影响我们解题能力的一个重要因素。如果我们的知识储备不足,就可能无法理解题目的背景和要求,从而难以解决题目。例如,如果我们没有掌握相关的基础知识或者对学科的概念和原理理解不够深入,就可能会在解题时感到困难。
为了解决这些问题,我们可以采取以下措施:
- 调整学习方法:我们可以尝试寻找适合自己的学习方法,例如通过阅读、听讲、练习等方式来提高自己的学习效果。我们还可以尝试使用一些学习工具,如笔记、思维导图等,帮助我们更好地理解和记忆知识点。
- 激发学习动力:我们可以尝试找到激发自己学习动力的方法,例如制定学习计划、设定目标或者奖励自己。我们可以尝试找到学习的乐趣和动力,从而更加积极地投入到学习中。
- 巩固知识储备:我们可以回顾自己的基础知识,确保我们对学科的基本概念和原理有深入的理解。我们还可以通过阅读相关书籍、参加课程或者与他人交流来扩大自己的知识面。
三、根据问题进行分解或建立思维导图
分解问题:
- 将复杂问题分解成更小的部分或子问题。
- 确定每个子问题的关键要素,例如概念、公式、解题方法等。
- 将这些要素组合起来,形成解决问题的步骤或策略。
制作思维导图:
- 选择一个中心主题或关键词,作为思维导图的核心。
- 从中心主题或关键词开始,向外扩展出与之相关的子主题或次级关键词。
- 使用不同颜色、形状和字体来区分不同的主题和子主题。
- 可以在思维导图中使用图形、符号、图片等元素,以增强视觉效果和记忆。
分享理清思维的方法:
- 与他人交流:与他人交流你的想法和观点,可以从他们那里获得反馈和建议。
- 创造性的思考:尝试从不同的角度思考问题,寻找新的解题方法。
- 反思和总结:定期回顾和总结自己的学习过程,找出自己的不足之处,并制定改进的计划。
四、分享好用的刷题网站并进行介绍
leetcode,中文名为力扣,是一个为全球程序员提供 IT 技术职业化提升的平台,提供了完善的在线判题服务、学习工具、社区讨论及模拟面试功能,全方位打磨程序员职业所需的核心技能。力扣为用户提供了多种多样的开发工具,适用于真实的日常技术开发和学习场景。其中,Playground 无需设置环境,就能够帮助用户进行测试、开发、学习,甚至直接在线完成整个项目,拥有强大的在线刷题网站,海量编程题在线刷、在线判,还有成熟的讨论区。
赛码网(ACMCODER)是一家专注在线IT编程考试、在线编程竞赛及IT技能实训的网站。也是一家运用跨界思维,将大赛技术应用于解决IT考试问题的平台。依托Online Judge在线判题系统(简称OJ)为核心技术。 百度、滴滴、美团、携程、字节跳动首选的在线面试系统,想进大厂赶紧来塞码。
LintCode是一个集合了大量算法面试题和AI面试题的网站,它为全世界的码农提供了练习自我技能的良好平台,针对算法、大数据、人工智能更有优势,还有力扣的付费题。
牛客网,是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的招聘类网站。牛客网题库中包含几万道题目,主要通过第三方购买和 UGC 的方式获得,牛客网先后尝试了直播和录播课,内容覆盖笔试题解析、面试技巧和机器学习等,校招,一定要关注。
PTA
洛谷
- 题目类型和难度:不同的网站提供的题目类型和难度都有所不同。你可以根据自己的水平和学习目标,选择适合自己的题目类型和难度进行练习。
- 解决方案和解释:一些网站提供了详细的解决方案和解释,可以帮助你更好地理解题目背后的原理和思路。如果你希望在理解上得到更好的帮助,可以选择这些网站。
- 社区和支持:一些网站提供了社区和支持,你可以与其他的学习者交流经验和思路,获取反馈和建议。如果你希望在学习过程中得到他人的支持和反馈,可以选择这些网站。
好啦,小雅兰的今日分享就到这里啦,继续加油噢!!!