程序员进阶之路

15 个边玩游戏边学编程的网站 前言经常听到有朋友说,学习编程是一件非常枯燥无味的事情。其实,大家有没有认真想过,可能是我们的学习方法不对?比方说,你有没有想过,可以通过打游戏来学编程?今天我想跟大家分享几个网站,教你如何通过边打游戏边学编程!1、Coding Games一边玩游戏,一边挑战编程难题。Coding games 支持包括 PHP、C、JavaScript 在内的 20 多种编程语言。用户界面功能强大,可以定制。例如,你可以选择你的代码编辑器的风格:Emacs、Vim、Classic。如果你想提升编程技能,玩 Coding . 阅读详情

首先声明本文转自happydeer大神博客

最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:

与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。

我认识很多杰出的程序员——这是在亚马逊工作最好的额外“福利”之一。如果仔细观察他们,你会发现他们时时都在锻炼。他们已经很优秀了,但他们仍然不忘锻炼。他们锻炼的方法林林总总,而我在这篇文章中只会介绍其中的几种。

据我了解,这些杰出程序员之所以如此成功,就是因为他们一直在锻炼。完美的身材要靠定期的锻炼才能获得,而且必须坚持锻炼才能保持,否则身材就会走形。对于编程和软件工程来说,道理是一样的。

这是一个重要的区别——我每天都开车去上班,但我的驾驶水平远远不如专业车手;类似的情况,天天编程可能并不足以使你成为一名专业的程序员。那么,什么才能把一个普通人变成一名专业车手或者专业程序员呢?你需要锻炼什么呢?

答案就在《科学美国人》的一篇名为“The Expert Mind”(专家思维)的文章里:

爱立信提出,重要的并不是经验本身,而是“努力的学习”,也就是要不断地挑战自身能力之外的东西。一些狂热的爱好者花费了大量的时间去下棋、打高尔夫球或者玩乐器,但他们可能始终停留在业余水平上,而一个训练有素的学生却可以在相对较短的时间里超越他们,原因就在这里。值得注意的是,在提高水平方面,花费在下棋上的大量时间(即使参加各种比赛)似乎还是比不过专门的训练来得更为有效。训练的主要价值在于发现弱点,并有针对性地进行提高。

“努力的学习”意味着,要常常去处理那些刚好在你能力极限上的问题,也就是那些对你来说有很大可能失败的事情。如果不经历一些失败的话,你可能就不会成长。你必须不断地挑战自我,超越自己的极限。

那样的挑战有时会在工作中碰到,但也未必。将锻炼从职业工作中分离出来,这在编程领域常被人称为“编码套路”(Code Kata)。

Code Kata的概念是由David Thomas提出的,他是《程序员修炼之道:从小工到专家》的作者之一。这个概念主要指的是,针对某一种特定技术或技能进行重复性的练习,从而将其熟练掌握。——译者注


所谓套路,就是一系列的招式。这个概念借鉴于武术。

如果你想要看一些编码套路的例子(也就是努力学习和磨练编程技能的方法),SteveYegge的文章里倒是提出了一些不错的建议。他把它们称作为“实践演练”:

1.     写一份自己的简历。把自己所有的相关技能都罗列出来,然后把那些在100年后还用得到的标出来。给每个技能打分,满分为10分。

2.     罗列出你所景仰的程序员。尽量包括那些与你一起工作的人,因为你会在工作中从他们身上获取一些技能。记录下他们身上的1 ~ 2个闪光点,也就是你希望自己有所提高的方面。

3.     查看维基百科上的“计算机科学”栏目,找到“计算机领域先驱者”这个分类,从这个列表中挑选一个人,阅读他的事迹,并且在阅读时打开任何你感兴趣的链接。

4.     花20分钟通读别人的代码。读出色的代码和读糟糕的代码都是有益的,两者都要读,轮流切换。如果你无法感觉出它们之间的区别,可以求助于一位你尊敬的程序员,让他给你展示一下什么是出色的代码、什么是糟糕的代码。把你读过的代码给别人也看看,问问他们的看法。

5.     罗列出你最喜欢的10个编程工具——那些你觉得你用得最多、非有不行的工具。随机挑选其中的一个工具,花一个小时去阅读它的文档。在这一个小时里,努力去学习这个工具的某个你不曾意识到的新功能,或者发现某种新的使用方法。

6.     想一想,除了编程之外你最擅长什么事情?再想一想,你是通过怎样的锻炼才变得如此熟练和专业的?这对于你的编程工作又有什么启发呢?(怎么把这些经验应用到编程方面?)

7.     拿出一叠简历,并和一组面试官在同一个房间里待上一个小时。确保每份简历都至少被3个面试官看过,并且要给出1 ~ 3分的评分。针对那些不同面试官评判大相径庭的简历展开讨论。

8.     参与一个电话面试。事后写下你的反馈,抛出你的观点,然后与主持电话面试的人聊一聊,看看你们是否达成了一致的结论。

9.     进行一次技术面试,并且被面试的人应该是某个你不太了解的领域里的专家。让他假定听众在该领域里一无所知,因此请他从最基础的讲起。努力去理解他所说的,必要时问一些问题。

10.   有机会参与别人的技术面试。期间,你只是认真地听、认真地学。在应聘者努力解决技术问题的同时,你也要在自己脑子里尝试解决这些问题。

11.   找到一个能和你交换实际问题的人,每隔一周,相互交流编程问题。花10 ~ 15分钟来尝试解决这些问题,再用10 ~ 15分钟进行讨论(无论能否解决)。

12.   当你听到任何你一时之间也无法解决的面试问题时,赶紧回到你的座位上,把这个问题用电子邮件发给自己,以留作日后的提醒。在那一周里找出点时间,用自己最喜欢的编程语言来解决它。

我之所以喜欢Steve开出的这个清单,是因为它看上去很全面。有些程序员一想到“锻炼”,总认为就是一些编码上的难题。但在我看来,编程更在于人,而不是代码。因此,通过解决世上所有的、并且晦涩的编程面试题目,在提高你的个人能力方面,这种方法是有局限的。

关于“努力的学习”,我也很喜欢Peter Norvig在“Teach Yourself Programming in TenYears”(花10年时间自学编程)一文中提出的诸多建议:

1. 与别的程序员交流。读别人的代码。这比任何书籍或培训课程都更重要。

2. 动手写程序!最好的学习方法就是边做边学。

3. 在本科或研究生的课程中学习编程课程。

4. 找一些项目来做,并且需要与其他程序员形成团队来合作。在项目的进行过程中,学会辨别最出色的程序员以及最糟糕的程序员。

5. 在项目中跟随别的程序员一起工作,了解如何维护那些不是你写的代码,并且学习如何写出利于他人维护的代码。

6. 学习多种不同的编程语言,特别是那些与你现在所熟悉的语言有着不同的世界观和编程模型的。

7. 了解硬件对软件的影响。知道你的电脑执行一条指令需要多少时间,从内存中取出一个字(在有缓存或没缓存的情况下)需要多少时间,在以太网(或者因特网)上传输数据需要多少时间,从磁盘中读取连续的数据或者在磁盘上跳转到另一个位置需要多少时间,等等。

你还可以从Dave Thomas的21种实用的编码套路中获取灵感(CodeKata.com),或者你更愿意加入一个你家当地的“编程武馆”(CodingDojo.org)。

对于“努力的学习”,我无法像Steve,Peter或者Dave那样提供一个长长的建议列表。我远不如他们有耐心。实际上,在我看来,“编程套路”只需两个招式:

1.      写博客。我在2004年初创办了CodingHorror.com博客,作为我自己努力学习的一种形式。它在一开始很不起眼,到后来成为我职业生涯中做过的最重要的一件事。所以,你也应该写博客。最后“闻达于天下”的人,往往就是那些能够有效书写和沟通的人。他们的声音最响亮,是他们在制定游戏规则,并且引领世界的潮流。

2.      积极参与著名的开源项目。所有的高谈阔论听起来都很好,但是,你是一个大话王还是一名实干家呢?别光说不练,这个非常重要,因为人们会用你的行动来衡量你,而不是你的言论。努力在公众面前留下些实实在在有用的东西吧,到时候你就可以说,“我在那个项目中出过力。”

当你能编写精彩的代码、并且能用精彩的言辞向世人解释那些代码时,到那时候,我会觉得你已经掌握了最牛的编码套路!


程序员职场进阶 32 讲 课程介绍 如何寻找技术方向?如何进行技术转型?如何提升技术能力?这三大问题困扰着大部分程序员。 去年 10 月,我在 GitChat 平台上发布的达人课《程序员跨越式成长指南》已经累计销售了 2000 余份,很多读者朋友反馈这门课程对个人学习、求职、成长起到了很大的帮助作用,也纷纷留言给我,希望能看到更系统的职业成长课程,于是我将这门达人课进行了一次全新改版,升级为《程序员职场进阶 32 讲》,内... 阅读详情

相关推荐

程序员的进阶之路,学习方法!

程序员的进阶之路,学习方法!首先介绍程序员和码农的区别,我们为什么要进行学习整理碎片知识多看书,把博文当做辅助写些博文,做些总结常给自己定个目标不管多忙,每天最少学习一小时结束语 欢迎大家点开这篇博文,在此我给大家介绍一下我的学习方法,我并不是大牛,但是我认为我目前的学习方法没错,我感受到我每天的进步,所以写下这篇博文,给大家介绍一下我的方法,也欢迎大家评论说下各自认为有效的学习方法,毕竟我的方法...

醉酒莫红颜博客 2115

Code Kata

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言第一步第二步第三步第四步总结 前言 这里推荐一个在线练习Code Kata的网站(https://cyber-dojo.org/creator/home),可以选择自己需要的编译环境,非常有意思,以后就不用带着装有自己开发环境的电脑,只要有网络和键盘 就可以随时练习。 第一步 第二步 第三步 第四步 环境搭建好了后,我们编写程序然后点击test进行运行。 这里是对运行结果的输出 总结 提示:这里对文章进行总结: 例.

ouyang的博客 1488

Syndrome-Trellis Codes(STC编码)C++和Matlab实现代码

信息隐藏领域STC校验网格码源代码(STC工具箱),实现SPIE2010论文Tomas Filler, Jan Judas, Jessica Fridrich."Minimizing Embedding Impact in Steganography using Trellis-Coded Quantization",包含Windows/Linux新旧版本代码、全部相关论文和在线示例地址。

最牛B的编码套路

最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已: 与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。 我认识很多杰出的程序员——这是在亚马逊工...

我是传奇 980

codekata:代码kata程序

Nitheesh完成的程序

Codewars_KATA:每天挑战五卡塔

Every_Day_Codewars 这个仓库将成为我日常的Codewars博客,以跟踪我的挑战。 我每天将完成并发布至少5个带有链接和我的代码的Kata。 CodeWars是一个面临编程挑战的平台。 Kata是您必须使用编程语言解决的问题。 每个Kata都有其kyu (等级),kyu越低,kata越难。 开始31.01.2021 天 29 卡塔 141 05.02更新:面对挑战,我迫不及待地编写了一个程序,该程序将使用代码创建名为.py的kata并链接至kata,因为手动创建它很烦人。 简单的程序在我将要立即改进它,因为它现在是快速编写的脚本。

CodeKata04:Data Munging 数据解析

编程练习,使用Qt 读取dat文件,解析数据,并根据要求打印出需要的数据。

u010679316的博客 844

codekata:CodeKata练习

Codekata CodeKata练习

边玩边学,15个学习Python 的编程游戏网站!(3),面试题分享文案

这款游戏由粘粘世界(World of Goo)的设计者和制作小小炼狱(Little Inferno)的团队共同制作,游戏虽是走解谜路线,但玩法相当新颖:玩家将扮演一个从基层做起的员工,需要通过指令代码来编写一条条程序,完成每个阶段的任务,最终走上职场巅峰。在这个游戏中,你扮演一个代码猎人,负责修复代码,并使它它返回预期的结果。Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

2301_79099373的博客 863

基于分段STC的音频隐写算法

在隐写领域中,STC(syndrome-trellis code)隐写编码是时下最为先进的隐写算法之一。提出了一种基于STC的隐写算法——分段STC。该算法利用分段、局部优化,可有效降低载体失真。首先对音频最低有效位(least significant byte,LSB)载体流进行了分段切割,随后利用最佳子校验矩阵将分段的密信嵌入分段载体中。该隐写算法在现有的语音样本库TIMIT库以及通过网络歌曲自制的样本库上进行了隐写实验。实验结果表明,该思路下的算法可以有效地降低载体的失真元素个数和提高隐写算法的不可检测性。本文算法相较于传统STC算法,失真元素个数的优化程度最高可达到24%;对比同类音频隐写算法,本文算法生成的隐写后音频具备更加优秀的不可感知性能。

Qwen3.5在昇腾910B上的vLLM Ascend高性能部署实战

大语言模型推理优化是AI工程落地的核心环节,其本质是计算、内存与通信三者的协同调度。vLLM作为主流推理框架,通过PagedAttention和Continuous Batching显著提升GPU利用率;而昇腾NPU凭借高带宽HBM与专用AI算子,在国产化算力平台中展现出独特优势。当vLLM深度适配昇腾(即vLLM Ascend),不仅保留动态批处理、流式输出等关键能力,更实现KV Cache的HBM感知管理与HCCL直通优化,使中小尺寸模型(如Qwen3.5-35B)在单台Atlas A3服务器上达成百并

weixin_30558697的博客 433

JavaJava程序员进阶

I/O流域文件(FileFileFliter,文件流,文本流,数据流,缓冲流,对象流,字节字符数组流,字符串流,打印流等)、多线程、实体类、集合类、枚举迭代器类,图形编程AWT(Java2D/JavaSound/JMF)Swing、SWT、JFace,网络编程Applet、Socket/TCP/UDP、NIO、RMI、CORBA、选择器、数据报/Socket/ServerSocket通道,正则表达式、XML和属性文件。反射、泛型、注释符、自动装箱和拆箱、枚举类、可变参数、可变返回类型、增强循环、静态导入。.

qq_46416934的博客 1020

Halcon形状模板匹配实战:inspect_shape_model参数优化指南

本文深入解析Halcon形状模板匹配中inspect_shape_model参数的优化技巧,涵盖NumLevels和Contrast参数的实战应用。通过具体案例展示如何平衡匹配速度与精度,帮助开发者高效调试形状模型,提升工业视觉检测的准确性和效率。

weixin_30342209的博客 618

程序员的进阶之路

原文链接: https://dsx2016.com/?p=719 微信公众号: 大师兄2016 非器非术非道,仅聊聊一些方向. 分阶 很多事物都可以按进度和阶段来划分,如程序员的小白,初级,中级和高级. 但是这种层次之分也有内外之别. 公司招聘的中高级职位取决于业务的能力需求和薪水发放的高低,是市场的宏观定义. 个人的中高级之分在于自我的能力进阶,来源于技术但不仅仅限于技术,...

大师兄 860

hcaptcha无感验证码逆向实战:从接口分析到环境补全

本文详细解析了hcaptcha无感验证码的逆向实战过程。通过分析核心接口与加密逻辑,重点介绍了采用环境补全策略来模拟真实浏览器环境,从而绕过验证码检测。文章提供了从接口抓包、剖析hsw.js加密核心到使用Node.js搭建模拟环境的完整步骤,为自动化操作提供了一种稳健的解决方案。

weixin_29324401的博客 1156

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 558

Java程序员进阶之路

Java程序员进阶之路

qq_41466437的博客 293

从工艺文件到寄生分析:手把手教你用华大九天RCExplorer做版图预检(附ITF文件解析)

本文详细介绍了华大九天RCExplorer工具在模拟IC和版图设计中的应用,从工艺文件解析到寄生参数提取的全流程。通过ITF文件的深度解析和实战案例,帮助工程师掌握金属层、介质层及通孔参数的关键影响,提升设计效率与准确性。文章还提供了与StarRC工作流集成的实用技巧,是国产EDA工具应用的权威指南。

weixin_42522552的博客 408

程序员技术进阶之路书单

汇总一份程序员进阶之路书单。

人邮异步社区 1225

Google OR-Tools的CP-SAT求解器,为什么比传统线性规划更适合你的组合优化问题?

本文深入解析Google OR-Tools中的CP-SAT求解器为何比传统线性规划更适合解决组合优化问题。CP-SAT融合约束规划与可满足性理论,原生支持复杂逻辑约束和离散决策,在物流、生产调度等领域展现出显著优势。通过技术对比和实战案例,展示CP-SAT在处理高组合复杂度问题时的卓越性能。

weixin_28700593的博客 926

Xilinx FPGA平台GTX简易使用教程(五)GTX收发测试及示例工程介绍

GTX IP配置完了,你不得搞个回环测试一番?

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

JAVA程序员的进阶路线

1、**Java 基础:**基本的数据类型、流程控制语句(if、for、while 等)、面向对象的理解(对象、封装、继承、多态)、一些关键字的理解(super、this 等)、接口、抽象类、ArrayList、String、Random、Math 等等;2、**Java 进阶:**Date、StringBuilder、List、Set、Map、HashMap、异常、自定义异常、泛型、线程、线程同步、线程池、函数式思想、文件、字节流、网络编程相关等等;以上是我整理的java进阶路径,希望能帮助到各位。

m0_67401134的博客 392

【C语言】程序员筑基功法——《函数栈帧的创建与销毁》

汇编角度带你走进函数栈帧

StackFrame 3661

普通Java程序员如何进阶?

关于普通程序员的进阶之路,网上的学习路线与理论说辞一抓一大把。在小编看来优秀工程师的成长之路就是一条不断打怪升级之路,Java入行容易精通难,需要能力也需要运气。 相信很多的Java程序员在自己的进阶之路上都有遇到以下几个方面的问题却不知道如何解决,也没有一个好的学习路线与规划:

Javatutouhouduan的博客 372

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

程序员进阶

程序员进阶

qq_41466437的博客 173

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

《程序员进阶攻略》总结

读完小册 这是一篇极客时间小册《程序员进阶攻略总结》的总结。作者用诗一样的语言,描写了程序员的江湖。我简单输出下我的收货。(标题是作者期待的收获) 建立技术学习的体系框架与思维模型 1.经典算法,是剥离了业务场景的高度抽象,要学好算法。 2.在写代码的时候,用测试的思维与方式(提供单元测试)去审视和检测代码。 3.如果你不在乎你的工具,可能你也就不会在乎你的时间和效率。尤其是每天要用的笔记本。 4.框架是代码复用,模式是设计复用。 梳理清晰的成长与进阶路线 1.擅长于沟通和协作,技术能力在上流水平的就是稀缺

qq_32648593的博客 5998

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 如何将windows安装在移动硬盘上
下一篇: 51单片机存储器
Unique_Eric
博客等级 码龄10年 63粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值