learn-tech/专栏/左耳听风/071程序员练级攻略(2018):正式入门.md
2024-10-16 06:37:41 +08:00

11 KiB
Raw Blame History

                        因收到Google相关通知网站将会择期关闭。相关通知内容
                        
                        
                        071  程序员练级攻略2018正式入门
                        学习了前面文章中的入门级经验和知识后,你可能会有两种反应。

一种反应可能是,你对编程有一点的兴趣了,甚至有一点点小骄傲,可能还会四处炫耀。我想说,请保持这种感觉,但是你也要清醒一下,上面的那些东西,还不算真正的入门,你只是入门了一条腿。 另一种反应也可能是,你被吓着了,觉得太难了。感觉不是一般人能玩的,如果是这样的话,我想鼓励你一下–“无论你做什么事,你都会面对各式各样的困难,这对每个人都是一样的,而只有兴趣、热情和成就感才能让你不怕这些困难”。所以,你问问你自己,是否从中收获了成就感或是兴趣,如果没有的话,可能这条路并不适合你。如果有的话,哪怕一丁点儿,你也应该继续坚持下来。

这篇文章,我主要是让你成为更为专业的入门程序员。请注意,此时,你可能需要读一些比较枯燥的书,但我想说,这些是非常非常重要的。你一定要坚持住。

编程技能

在系统地学习编程技能之前,我希望你能先看一下 “ The Key To Accelerating Your Coding Skills“ 这篇文章会告诉你如何有效地快速提高自己的编程能力。

然后接下来是下面几大块内容,但还只是入门级的。

编程技巧方面 - 你可以开始看怎么把程序写好的书了,这里推荐的是《代码大全》。这本书好多年没有更新了,其中有一些内容可能有点过时,但还是一本非常好的书,有点厚,你不需要马上就看完。在你的编程路上,这本书可以陪你走很久,因为当你有更多的编程经验时,走过更多的坑后,再把这本书拿出来看看,你会有更多的体会。好的书和不好的书最大的不一样的是,好的书在你不同的阶段来读,你会有不同的收获,而且还会产生更多的深层次的思考! 《代码大全》就是这样的一本书。

编程语言方面 - 这个阶段,你可以开始了解一下 Java 语言了,我个人觉得 Java 是世界上目前为止综合排名最好的语言。你一定要学好这门语言。推荐《Java 核心技术(卷 1除了让你了解 Java 的语法它还会让你了解面向对象编程是个什么概念如果你觉得这本书有点深那么你可以降低难度看更为基础的《Head First Java》。然后既然开始学习 Java 了,那就一定要学 Spring推荐看看《Spring in Action》或是直接从最新的 Spring Boot 开始推荐看看《Spring Boot 实战》。关于 Spring 的这两本书里面可能会有很多你从来没有听说过的东西比如IoC 和 AOP 之类的东西,能看懂多少就看懂多少,没事儿。

操作系统 - 这里你可以看看《鸟哥的 Linux 私房菜》,这本书会让你对计算机和操作系统,以及 Linux 有一个非常全面的了解,并能够管理或是操作好一个 Linux 系统。当然,这本书有很多比较专业的知识,你可能会看不懂,没关系,就暂时略过就好了。这本书的确并不适合初学者,你能看多少就看多少吧。

网络协议 - 你需要系统地了解一下 HTTP 协议,请到 MDN 阅读一下其官方的 HTTP 的文档。你需要知道 HTTP 协议的几个关键点1HTTP 头2HTTP 的请求方法3HTTP 的返回码。还有HTTP 的 Cookie、缓存、会话以及链接管理等等在 MDN 的这个文档中都有了。对于 HTTP 协议,你不需要知道所有的东西,你只需要了解这个协议的最关键的那些东西就好了。

数据库设计 - 你需要系统地了解一下数据库设计中的那些东西,这里推荐慕课网的一个在线课程–“数据库设计的那些事”。每个小课程不过 5-6 分钟,全部不到 2 个小时,我相信你一定能跟下来。你需要搞清楚数据的那几个范式,还有 SQL 语句的一些用法。当然,你还要学习和使用一下数据库,这里推荐学习开源的 MySQL。你可以看官方文档也可以看一下这本书《MySQL 必知必会》。

前端方面 - 前端的东西不算复杂,你需要学习几个东西。一个是和 JavaScript 相关的 jQuery另一个是和 CSS 相关的 Bootstrap学习这两个东西都不复杂直接上其官网看文档就好了。最重要的是你要学习一下JavaScript 的 Ajax 请求后端的 API 接口的方式,而不是再像前面那样用后端来向前端返回 HTML 页面的形式了。这里你需要学习一下JavaScript 的 Promise 模式。阮一峰翻译的 ES6 的教程中有相关的内容。当然,你 Google 一下,也可以找到一堆学习资料。

字符编码方面 - 在你处理中文时有时会发现有乱码出现,此时需要了解 ASCII 和 Unicode 这样的字符编码。这里推荐一篇文章 - “关于字符编码你所需要知道的ASCII,Unicode,Utf-8,GB2312…” 或是英文文章 “The history of Character Encoding” 以及 Wikipedia - Character encoding。还有 GitHub 上的这两个 Awesome 仓库Awesome Unicode 和 Awesome Code Points。

为什么转成 Java 语言?

相信你可能会问,为什么之前学习的 Python 和 JavaScript 不接着学,而是直接切到 Java 语言上来,这样会不会切得太快了。这是一个好问题,这里需要说明一下,为什么我会切到 Java 这个语言上来,主要是有以下几方面考虑。

Java 是所有语言里面综合实力最强的,这也是为什么几乎所有大型的互联网或是分布式架构基本上都是 Java 技术栈。所以这是一个工业级的编程语言Python 和 JavaScript 还达不到这样的水准)。 之所以,没有用 Java 来做入门语言而是用了 Python这是因为编程是一件比较费脑子的事一开始学习时兴趣的培养很重要。Python 比较简单,容易上手,能够比较容易地提起兴趣,而用 Java 则可能比较难。 在你有了一些编程语言的基础后,有了一些代码的逻辑后,切到工业级的编程语言上来,更为专业地学习编程,是非常有帮助的。像 Python 和 JavaScript 这样的动态语言用着是很爽,但是,只有像 C、C++ 和 Java 这样的静态语言才可以让你真正地进阶。 对于一个合格的程序员,掌握几门语言是非常正常的事情。一方面,这会让你对不同的语言进行比较,让你有更多的思考。另一方面,这也是一种学习能力的培养,会让你对于未来的新技术学习得更快。很多时候,一些程序员只在自己熟悉的技术而不是合适的技术上工作,这其实并不好,这会让你的视野受限,而视野会决定你的高度。综上所述,这就是在入门的时候我故意让你多学几门语言的原因。

编程工具

编程工具方面,你需要开始学习使用下面这些工具了。

编程的 IDE。传统一点的你可以使用 Eclipse教程。当然我推荐你使用 Intellij IDEA教程。这两个工具都可以开发各种语言但是主要用在 Java。如果你想玩得更时髦一些的话使用 Visual Studio Code 也不错,这个工具潜力十足,用其开发 Python、JavaScript、Java、Go、C 和 C++ 都能得心应手(教程 - 本文发布时还基本没怎么翻译完)。 版本管理工具。版本管理工具是非常重要的编程工具。传统的有 P4、 SVN、CVS 等,但都会被 Git 取代,所以,你就只用学习 Git 就好了。学习 Git 的教程网上有很多,这里我推荐非常系统的 Pro Git 第二版 (如果你觉得 Pro Git 比较枯燥的话,备选猴子都能懂的 Git 入门),然后你要学会使用 GitHub。关于一些 Git 环境安装和准备以及 GitHub 使用,你可以自行 Google比如这篇GitHub and Git 图文教程 或是这篇Git 图文教程及详解)。 调试前端程序。你需要学会使用 Chrome 调试前端程序Google 一下会有很多文章,你可以看看 超完整的 Chrome 浏览器客户端调试大全。 数据库设计工具。你需要学会使用 MySQL WorkBench这个工具很容易使用。相关的手册你可以看一下官方文档。

实践项目

这回我们需要设计一个投票系统的项目。

业务上的需求如下:

用户只有在登录后,才可以生成投票表单。 投票项可以单选,可以多选。 其它用户投票后显示当前投票结果(但是不能刷票)。 投票有相应的时间,页面上需要出现倒计时。 投票结果需要用不同颜色不同长度的横条,并显示百分比和人数。

技术上的需求如下:

这回要用 Java Spring Boot 来实现了,然后,后端不返回任何的 HTML只返回 JSON 数据给前端。 由前端的 JQuery 来处理并操作相关的 HTML 动态生成在前端展示的页面。 前端的页面还要是响应式的,也就是可以在手机端和电脑端有不同的呈现。 这个可以用 Bootstrap 来完成。

如果你有兴趣,还可以挑战以下这些功能。

在微信中,通过微信授权后记录用户信息,以防止刷票。 可以不用刷页面,就可以动态地看到投票结果的变化。 Google 一些画图表的 JavaScript 库,然后把图表画得风骚一些。

小结

上面那些书和知识你要看完,还要能理解并掌握,我估计你最少也要花 1-2 年左右的时间。如果你能够走到这里,把前面的那些知识都了解了,不用精通,能独立地做出上面的那些实践项目,那么,你就算是真正的入门了。

而且,你已经是一个 ” 全栈工程师 “ 的样子了,在这里我要给你一个大大的赞。如果这个时候,你对编程还有很大的热情,那么我要恭喜你了,你可能会是一个非常不错的程序员。加油啊!

上面的那些技术已经算是比较专业的了。如果你已经大致掌握了,我相信你可以找到至少年薪 20 万以上的工作了,而且你的知识面算是有不错的广度了。但是深度还不够,这个时候,是一个比较关键点了。

你可能已经沉醉在沾沾自喜的骄傲的情绪中,那么你也可以就此止步,加入一些公司,在那里按部就班地完成一些功能性的开发,成为一个搬砖的码农。你也可以开始选择一个方向开始深入。

我给你的建议是选择一个方向开始深入。因为你并不知道你未来会有多大的可能性,也不知道你会成为什么样的人,所以为什么不再更努力一把呢?

后面,我们就开始非常专业的程序员之路了。这也是一般程序员和高级程序员的分水岭了,能不能过去就看你的了。