大家好,我是七月。从初探微信小程序到如今的Python Flask REST API构建,我已成功推出五门课程。时光荏苒,近两年的课程制作远超过我过去六年的职业经历所取得的成就。在分享知识的也是对过往编程经验的提炼与总结。
回首一年前,我在慕课平台上发表了第一篇手记《编程之路》,而今天,我想为大家献上这篇《编程之路》的后记。
知名博主和菜头有一句常用签名:“请相信我所说的每一句话都是错的。”这句话看似矛盾,实则蕴含深刻哲理。无论信或不信,这句话永远都有它的道理。
编程的经验与教条亦无绝对之真理。经验源自他人的感悟,教条亦是他人留下的痕迹。真正的编程体验需要我们去实践、去思考,形成自己的独特见解。
以下观点,皆为我个人体验之所得,虽未成熟,但真实。
一、兴趣并非编程的最大动力,真正的动力在于成就感。
我坦诚地告诉大家,我对编程并无特别的兴趣。是否对编程有兴趣,也并非是评判一个人编程能力好坏的标准。兴趣是一种持续性的、不求回报的行为,使人陶醉甚至沉迷其中。
“兴趣”这个词太过美好,我自觉离它还很远。相反,“成就感”对我来说更为实际和贴切。事实上,我们大多数人编程的初衷,无非是为了生活得更好或改善生活状况。但不可否认的是,长期从事一项近似枯燥的工作,没有信念和追求是无法持续的。
抛开编程是为了生存的现实,支撑我持续编程的正是成就感。这种感觉与打游戏时的成就感如出一辙。
当我一次次击败关底的boss,角色等级不断提升,或通过努力打出惊人的DPS,流畅操作获得QWER 5杀时,那种成就感无可替代。
编程亦是如此。曾有一次次揉着睡眼惺忪的双眼,看着窗外微微泛白的夜色,一边偷偷瞥一眼连夜赶制、正在运行的程序,心中暗自欣喜。这种成就感带来的满足感难以言表。
对于程序员而言,找到这种编程中的“成就感”,放下“兴趣”或“爱好”的包袱尤为重要。无论是为了生存、艺术还是理想而编程,找到驱动你长期编程的动力至关重要。
二、Debug是自我解决问题的倚天剑,提出优质问题则是屠龙刀。
Debug与提问在编程过程中是两个截然不同的方向。Debug代表自我解决问题的能力,而提问则代表寻求帮助。
我们应尽可能通过Debug来解决问题,而非过度依赖提问。初入职场时,我曾天真地向同事寻求帮助解决代码错误,结果往往是不尽如人意。
渐渐地我意识到,很多问题的答案可以通过搜索引擎找到。于是我不再轻易向他人求助。因为大多数的编程工作都是重复的,这些问题是可以通过搜索引擎和自己Debug找到答案的。
工作五年后我意识到,自己Debug分析问题是多么重要。初级编程思维并非来源于写代码的过程,而是从调试代码的过程中获得的。每一次依赖他人解决问题都是浪费了一次培养自己编程思维的机会。
当然可以向他人提问或寻求帮助,但前提是自己已经充分思考过问题。未经思考的提问往往难以得到满意的答案。优质的问题必须经过深入思考,至少要保证问题的思路是清晰的,而不是依赖他人Debug来解决。优质的问题对于自己和他人来说都是宝贵的。
我看到最多的提问往往是关于“为什么出现undefined”、“为什么报404”、“为什么报500错误”等。这些问题都没有触及问题的本质,它们都可以通过Debug来找到答案。而这些正是老师最难以解决的问题,因为老师也需要依赖“Debug”。
当我们遇到问题,首先要做的就是调试。我们坚信调试的力量,通过调试往往能触及问题的本质。这些问题可能超出我们目前的知识范畴,此时再去提问,就能提出更有价值的问题。
优质的问题是由提问者和回答者共同构建的。我们往往误以为优质问题仅由回答者单方面创造,这其实是不准确的。提问也是一种能力,不应该被轻视。
3. 追求卓越,编写优质代码
我们无需过多探讨编程是否是艺术。在开发过程中,我发现许多初级程序员在编程2到3年后,会认为编程变得“无聊”。
这些程序员通常只完成了程序的基本功能,缺乏代码的可复用性、可维护性和可扩展性。这就像是一次性筷子,用完就扔,但软件开发是一个需要反复迭代、修正和调整的过程。
编写优质代码就像追求艺术一样,是一种长久的动力来源。当代码变得杂乱无章时,很容易让人对编程产生厌倦感。代码风格分为具体和抽象两种,写出具体的代码相对容易,但要写出抽象的代码则需要更高的能力。
为了培养这种抽象代码的编写能力,我们需要追求优质代码,这是起步条件。放弃对优质代码的追求,就等于放弃了编程思考的乐趣。
4. 视频课程学习的最佳方式:先实践再学习
对于如何通过视频课程学习编程,我强烈推荐一种方法:对于有一定基础的同学,先尝试独立实现老师展示的项目成品,然后再观看课程。
通过对比自己的实现和老师的方案,你可以更深刻地理解为什么老师的方案更优秀。虽然这种学习方式可能具有挑战性,但收益最大的始终是你自己。
完全独立实现整个项目可能很有难度。但在行业竞争中,你必须找到自己的优势。如果没有外部资源,如优质项目和精英团队,那么就要从自身做起,克服惰性,做一些不愿意做的事情。
如果实在无法完整实现整个项目,你可以尝试阶段性的自我实现和思考。我的课程小节通常都留有一些“悬念”,这些悬念就是引导你思考的节点。
5. 注重实践,而非一味学习
编程不是考试,不能用初高中备考的方式去学习。真正的学习应该是通过实践去积累经验和知识。只有通过实践,我们才能真正掌握编程的精髓,提升自己的技能。编程的世界充满了实践和探索的魅力。它并非单纯的知识的堆砌,而是要求你灵活运用所学知识来解决实际问题。编程如同魔术,有时只需在脑海中掠过一丝念头,就能迅速调动知识片段,将它们巧妙地组合在一起,创造出惊人的成果。细节,那些看似微不足道的细节,往往是区分优秀程序和普通程序的关键所在。
许多编程新手常常因缺乏优质项目机会而倍感沮丧。真正的程序员并非只在大公司才能磨炼成长。事实上,大部分的coder都在中小公司或是独立奋斗,他们依然能通过自我实践、自我挑战,成为优秀的程序员。当外界环境不够优越时,我们要发挥自己的主观能动性,寻找实践的机会。
模仿,也是一种实践的方式。选择一款你欣赏的产品,尝试复制它的细节,作为自己的练习项目。这样的实践能让你更深入地理解产品的构建过程,甚至可能帮助你发现新的创意和想法。在这个过程中,不仅要关注大体的功能实现,更要注重细节的处理,因为细节决定成败。
学习编程,更要注重推导的过程而非结果。我曾在我的课程中多次强调这个问题。我倾向于关注编程思想而非单纯的API调用。推导的过程,是深入理解编程思想的关键。只有理解了推导的过程,才能真正掌握编程的本质。
看到如今勤奋学习的同学们,我深感欣慰,同时也回想起自己的大学生活,感慨万千。希望我的心得能对你们有所帮助,鼓励你们坚持实践、坚持探索。编程的世界,等待你们的挑战和创造!
文章来自《钓虾网小编|www.jnqjk.cn》整理于网络,文章内容不代表本站立场,转载请注明出处。