首先,自学编程是行得通的,很多同学都是通过自学编程的方式进入到了互联网领域发展,但是自学编程的过程中,往往会走一些弯路,也确实有不少同学因为迟迟不能形成自己的编程思想,而最终放弃了继续学习。
自学编程最常见的问题就是能看得懂代码,但是却写不出来,原因无非有以下三点:
其一是没有掌握基本的编程流程。
编程流程就是一门编程语言在解决一个逻辑问题时的基本步骤,比如Java的基本编程流程就是类的定义、对象的创建和方法的调用。
掌握了这个基本的编程流程之后,就要根据具体的业务逻辑来进行抽象,最终再进行模块化封装,这个过程还涉及到算法、抽象的层次,以及模块化的工具和方式等问题。
其二是没有掌握基本的编程模式。
掌握编程流程是第一步,接下来就应该掌握一些经典的编程模式,这会在很大程度上保证自己的代码质量。
尤其是对于刚开始进行编程的初级程序员来说,要尽量使用成熟的编程模式,这对于复用和调试都有积极的意义。
其三是缺乏场景开发实践经历。
学习编程语言通常需要经过三个阶段,其一是基础语法的学习,其二是围绕主攻方向做知识积累,其三就是进行场景开发实践,而这个步骤往往是实现编程能力跨越的核心步骤。
判断自己是否掌握编程语言,最简单的标准就是能否在生产场景下运用编程语言来解决具体问题,而缺乏编程场景往往是自学编程同学所面临的最大的障碍之一,尤其是非计算机专业的同学。
我联合多名导师,包括企业导师,共同打造了一个实践平台,基于我们的科研资源和产业资源,设立了一系列科研实践课题和编程实践项目,包括深度学习、知识图谱、推荐系统、Web开发等,也欢迎包括非计算机专业同学在内的本科生和研究生同学申请参加。
最后,如果有编程相关的问题,欢迎与我交流。
代码不会写怎么办?
1 – 测试不同的解决方案,直到感觉重复在你研究或询问其他开发人员(=浪费他们的时间)之前,你应该尝试使用你现有的知识和思维来制定每一个可能的解决方案。
显而易见的是,太多的程序员是从询问他人开始的,自己甚至都不曾静下心来分析问题本身。不要成为这样的讨厌鬼,尽可能不要浪费别人的时间。
先投身于工作,然后再寻求帮助。
2 – 在线查找开源代码
当你投入于工作,却没有什么成果的时候,那仔滚么下一步你可以尝试开源代码。许多编程人员构建软件,是出于创造解决方案并在线发布以供大家使用的乐趣。有些人发布的代码曾被它们的程序员使用于商业项目。
GitHub是寻找开源代码的两个主要地方之一。另一个是StackOverflow。
这些网站的解决方案是采用可重用代码的形式,方便你在项目中实现。
谨记,使用其他人开发的代码总是有风险的。它可能会以你意想不到的方式改变程序的行为。备份原始代码,这是常识。
3 – 向更有经验的程序员询问
你有没有碰到过这样的情况,向其他人求助却发现你甚至不知道自己在问什么?
在询问任何人之前,你得准备好一些你无法通过网络信息搜索解答的问题。
明确的问题,才能有明确的解决方案。如果是你自己都描述得云里雾里的问题——那么你只会得到一个云里雾里的回答(并且可能会惹恼他人)。
如果你周围没有任何开发者可以询问,那么也可以在线查找。你可以在StackOverflow或MSDN社交论坛上询问,或查找特别针对于你所用技术的Slack频道。
4 – 如果一切都失败,那就潇洒放手
不要一心钻在死胡同里,实在不行,那就去干点别的事——睡觉,吃东西,等等。
你觉得这是在逃避工作?那就错了。我要告诉你的是,当你最轻松的时候,往往正是解决办法灵机一现的时候,这不是我胡编乱造的念早余,而是有科学的证明。此时你睁前的大脑工作在“发散思维”的模式下,而不是在“集中注意力”的模式下——你可以在这篇文章中了解之间的差异。
总的来说,这个理念就是要你忘记手头的问题,让你的意识心灵沉浸到其他的事情中。此时,你的潜意识则开始连接要点,朝着顿悟的方向前行。
我们可以做些什么以便于帮助大脑在发散思维的模式下工作呢?放轻松就好了:
散步(古代哲学家非常习惯于在走路时演讲,因为他们意识到走路有助于思考)
清理办公室或住所(完成后给自己一个奖励)
与朋友约会,和杯咖啡,聊聊八卦(如果你过于关注问题的话,那么建议和不能提供帮助的非编码人员交谈)
学习数据结构,算法思想明白,但写不出代码怎么办?
学习数据结构,算法思想明白,但写不出代码是练习的不够,还需要多打代码。代码量的问题,多写写自然就会了,建议完成课后练习的时候先不要看书,自己尝试去实现,然后再去对比自己写的胡弯和书上的有什么不同,满满代码力就出来了。
数据结构学习技巧:
理解一个数据结构与编程实现其完整功能是完全不同的挑战。自己动手亲自实现一些基础数据结构(如排序,集合,图和字符串处理)的简化版 API 能够极大的提升对数据结构内部细节的理解。可能也自己动手 code 实现了过程,那么再在网站上演示一首手下元素的各种操作过程,会带来一些更直观裤芹闷的印象。