编程之路 ——给初学者的学习建议
《微信小程序入门与实战》这门课程在慕课平台上已经上线快20天了,收到了不少好评,得到了同学们的认可,让我倍感欣喜。这种喜悦与当年创业时通宵上线一个新版本时的成就感如出一辙。为了不断丰富课程内容,我将在后续的课程中加入小程序与ES6、LESS和SASS等知识的结合,使课程更加饱满和丰富。
这篇文章更像是我这些年对编程、管理、市场的一次总结和回顾。我真诚地希望每个读者都能从中获得一点点的收获。虽然这篇文章篇幅较长,但请允许我在这里向一些重要的人表达我的感谢。
我要向慕课的教学团队致以诚挚的谢意。特别是性感小龅牙老师以及整个团队。从小程序的公测开始,他们一直是我坚实的后盾。记得在最早的时候,开发工具腾讯还不开放,我们需要通过破解才能使用。在9月27日,我完成了课程demo的第一版,当时的目的并非为了出课程,而是想从技术和商业角度来分析小程序。其中一篇文章受到了广泛的关注,很多TMT媒体都进行了转载(链接:
在我自己编写小程序的过程中,虽然觉得技术本身并不复杂,但确实遇到了很多坑。我整理的问题记录多达30多条,大部分后来都被官方修复了。关于这门课程,我并不想单纯强调它的商业价值,而是站在学习的角度,认为小程序是绝好的前端入门平台。随后,我与慕课团队开始讨论这门课程的设计。我们并不想做官方文档的搬运工,因此决定通过实战将API融入到项目中,以项目为核心贯穿整个课程。为了确保课程质量和小程序接口的稳定性,我们等待了小程序正式公测后才开始了课程的设计、研发、录制。
制作视频是一项非常耗时的工作,产出1个小时的视频可能需要12个小时以上的时间。除了编程本身,课程的构思、设计、录制、剪辑等每个环节都至关重要。在这个过程中,我要感谢课程群里的几位同学,他们经常主动帮我解答同学的问题,让课程群保持活跃度。
做这门课程的初衷,并不是像一些文章所描述的那样,因为小程序有多么美好的前景。我更愿意站在技术的角度来分析问题,观察小程序的未来。我做这门课程的一半原因是为了为开发者提供一个非常好的小程序入门课程。我认为小程序是入门前端开发的绝佳平台,尤其适合那些没有编程经验但想进入前端领域的开发者,以及服务器开发者想学习前端知识的人群。
学习前端最难的不是语言本身,而是繁多的框架和技术要学习。小程序由于比较封闭,不支持DOM元素,减少了初学者很大的学习压力。而且小程序里的很多思想与现在主流的MVVM框架相通,由小程序入门再去学习前端框架,学习曲线会更加平滑。
这门课程是我对编程教育的一次尝试和探索。我希望通过我的努力,帮助更多的开发者顺利入门前端开发,为编程世界注入更多的活力。对于已经具备前端基础的同学来说,不必过分关注小程序作为一项新技术。实际上,它更像是一个普通的Javascript框架,类似于我们熟悉的AngularJS、React或Vue等。学习小程序,可以看作是以较低的学习成本掌握一项接近原生App体验的技术。即使不在微信开发的领域,小程序也可以作为快速实践、原型设计或承接外包项目的有力工具。无需过分纠结于iOS和Android开发的大框架,小程序以其轻便灵活的特点,足以应对许多业务需求。
接下来,让我们回归编程的本质。本文并非鸡汤文,而是基于客观的市场环境分析。无论选择何种路径,都需要理性和努力。虽然总有一小部分人能够逆流而上,不走寻常路也能取得成功,但这种情况毕竟是少数。对于大多数人而言,规划出一条稳定的线路来学习编程是更为稳妥的选择。在此过程中,如遇奇遇,自然是锦上添花;若无,也不必慌张。
编程需要理性思维,而做出选择也同样需要理性。先驱事例告诉我们,最终的选择往往受到情感和性格的深刻影响。如果人人都能理性地思考问题并做出选择,那么许多历史事件或许会有不同的结局。本文提供的建议仅供参考,真正的选择应遵从自己的内心,喜欢就是最好的理由。
看到课程群里许多大学同学已经开始不断学习编程,让我回想起自己大学的时光。那时除了游戏、运动和社团活动,我几乎没有接触过编程相关的高等课程。对于从大学开始就学习的同学们,坚持是非常重要的。工作几年后,你们会体会到提前学习编程的重要性。互联网的发展速度足以改变太多事物。所谓成功,对于大多数人来说,不是设定巨大的目标,而是永远比别人先行一步,做别人尚未涉及的事情。
我个人的编程历程也充满转变。大学时虽学过一些编程语言,但真正实践时却不断尝试新的技术。从Dephi到C再到Javascript等语言的转变,让我见证了技术的变革。当面对初学者如何选择第一门编程语言的问题时,我推荐Java。无论前端、服务器还是移动端,Java都是一个值得学习的起点。在TIOBE编程语言排行榜上提炼的主流语言中,Java的地位不容忽视。
微软旗下藏着诸多瑰宝,譬如SignalR这一实时应用框架。SignalR以其长连接和WebSocket技术,完美兼容各种浏览器,为开发者提供了强大的工具。想当年,我们创业之时,开发了一款类似于国外知名Sass应用Slack的软件,我们的核心框架正是SignalR。那时候NodeJS尚未成熟,SignalR几乎成了我们的不二之选。但无奈的是,微软的这些好东西在国内似乎并不受开发者们的青睐。不过我要强调的是,我的编程基础与思维方式的塑造,C功不可没,这一点我毫不夸张。
编程领域现在正处于一个多元化的时代,多种语言共存,每一种都有其独特的魅力。随着互联网的火热发展,这些语言如雨后春笋般崭露头角,风头甚至超过了Java和.Net。这些语言代表了Web开发的另一阵营,以快速开发著称。虽然PHP是许多初学者的入门选择,因为它开发简单,内置大量全局函数,但我并不特别推荐。它虽然简单易学,但在面向对象方面表现较弱。相较之下,Python成为我的最爱,它既有脚本语言的特点,又具备强大的面向对象特性。
说到脚本语言,怎能不提JavaScript?它几乎已经一统江湖。而Lua虽然市场份额不大,但却在游戏脚本、插件开发领域有着广泛的应用。就连著名的Redis也使用Lua进行扩展。
那么面对如此多的编程语言,我为何建议选择Java作为入门语言呢?编程的基本思想和思路至关重要。Java是一门经典且全面的语言,其他语言的优点它都有。比如现在大热的NodeJS的异步非阻塞IO特性,Java也能轻松实现。但在处理CPU密集型操作时,Java则更能胜任。面向对象是编程的重要分水岭,是新手与老手之间的区别。Java的面向对象特性深入人心,能帮助我们深入理解现实世界在计算机中的映射和延伸。而一些函数式语言如JavaScript、PHP虽然也有面向对象的概念,但实现起来并不那么自然。Java的学习资源丰富到令人难以置信,免费的、详细的视频教程随处可见。
其实,C作为入门语言也是个不错的选择,但国内市场相对较小,机会较少。很多人对C有误解,认为.Net不开源。但微软现在已经开始拥抱开源,推出了.Net Core、VSCode等开源产品。不过我要强调的是,开不开源并不重要,重要的是良好的社区氛围和创新能力。推荐Java而非C的原因更多是基于未来发展考虑。虽然C在某些传统企业和外包企业中有所应用,但在互联网公司中,Java似乎更受欢迎。但这并不意味着.Net开发者没有价值,只是未来的路径可能相对狭窄一些。重要的是要精通一门语言,然后再去拓展其他语言。我也曾是C开发者,但我相信只要有心,学习其他语言也并非难事。
随着创业浪潮的涌动,PHP早期作为众多公司的创业首选语言逐渐展现出它的威力,但随着时间的推移,许多公司选择将其逐渐替换为Java。淘宝的技术演进就是一个典型的例子。回想淘宝早期的PHP代码,有些甚至是从国外引进的。然而在国内互联网公司中,如携程、当当网和CSDN等则更多地采用.Net技术栈,其中C也曾是许多开发者初入编程世界的首选语言。这些语言间的选择并没有绝对的好坏之分,纯粹是因为当时的开发环境和需求决定的。但无论如何,历史的发展总是有其规律可循。
接下来我们聚焦于Java语言的学习,那么问题来了,Java需要学到什么程度呢?这完全取决于你未来的职业发展规划。如果你选择走向前端开发的方向,那么Java的高级语法和特性是你的核心目标。你需要深入理解面向对象、同步异步、多线程和并发模型等核心概念。还需要掌握反射和正则表达式的使用,并熟悉线程的同步与线程锁机制。至于常见的Java框架如Spring、Jersey、Hibernate等则无需深入学习。
如果你选择走向服务器开发的方向,那么Java的精通程度就显得尤为重要了。你需要熟练掌握SSH(Spring、Structs、Hibernate)等经典技术,以及AOP切面编程和Maven等开发工具。你还需精通Restful API框架如Jersey的使用。除此之外,Java虚拟机(JVM)的相关知识也是你必须要掌握的。这将是你在编程路上不断深化的关键所在。因为不了解JVM的知识,编程之路将越发艰难,很多问题将难以理解。JVM的原理也是大公司校招时的经典面试题目。
至于数据结构和算法是否要精通,这个问题我们暂时搁置。我认为在没有足够的工作经验之前,急于学习数据结构可能难以留下深刻印象。而中学时期学习的数学知识,在工作中往往会被重新唤醒并得以应用。至于学习语言时是否需要使用IDE工具,我的建议是初学者可以尝试使用简单的文本编辑器如VSCode进行基础练习,通过手动引入类库、编译和执行代码来加深理解。虽然这会增加一些麻烦,但重复这些操作会带来很大的收益。在实际的项目开发中还是需要依赖IDE工具来提高工作效率的。
对于正在上学的你来说,不必过于焦虑或急于求成地在学习各种语言之间徘徊。只要专注于学习一门语言并深入学习下去,就能取得良好的效果。特别是Java这样的语言,只要认真学习并深入理解其核心概念和技术特性,未来的发展前景是非常广阔的。无论你选择哪种语言作为入门语言,只要有清晰的规划和坚定的决心,都能在未来的编程领域取得一定的成就。同时记住不要盲目跟风学习某种流行的语言而忽略了自身的兴趣和长远的职业规划。对于未来的规划要有信心并持之以恒地付出努力,回报自然会随之而来。
文章从网络整理,文章内容不代表本站观点,转账请注明【蓑衣网】