程序员练级攻略:正式入门学习总结

​ 从这开始这个系列文章就不好写了,因为任务量太大了,会需要很多时间去阅读和消化文中材料,时间一长,反正也没有人看,就会容易懈怠,最终放弃。其次是这篇文章应该是针对Java web工程师写得,而我现在是python web实习生,所以我在内容上做了一些舍弃。

下面就开始总结吧:

起手就是一篇关于拐点得文章 The Key To Accelerating Your Coding Skills,这篇文章算是让我明白了为什么大厂们那么喜欢考察算法知识,以及简单描述了拐点前和拐点后的学习状态。

This doesn’t mean you immediately “know” everything, but just that everything is now “figure-out-able,” so in essence, you are unstoppable.

True confidence comes from struggling through a problem you have no idea how to solve, and discovering a solution on your own.

You will never know everything you need to know to solve all your problems.

Programming is a life-long learning experience.

you should be seeking out problems that are outside your current skill set. This is the only way to build on and expand your skills.

The web development inflection point is the point when you become capable of building any database-driven application that you want.

The algorithm and data structures inflection point is a less superficial inflection point, but it is actually more important.

Once a developer has passed both the web development inflection point and the algorithm and data structures inflection point, they hold the keys to the kingdom.

《代码大全》我主要看了变量和语句两个部分,还有其他部分零零散散的章节。这本书真是编程细节之王了,它告诉你什么代码是错的,什么代码是对的,以及应该怎么做才是好的选择。其他章节大致看了看,感觉以后有了项目经验会收获更多,以后再看吧。

《java核心技术(卷1)》《Head First Java》之间我最后选择了后者,不是因为前者贵(我买过),而是后者比前者的豆瓣分要高点。

  1. 知识解释的非常详细,甚至是过于详细,恨不得把知识嚼烂了喂给你。所以你不太吃力就能弄懂知识,但是你自己的牙口没什么锻炼,理解的深度应该是不太够的。而且这种大幅度的解释,新手也许会很喜欢,但回头一想,你会发现,效率不是特别高。

  2. 课后习题,略有难度,但是挺锻炼脑子的逻辑能力和理解编译器的过程。如果非要挑刺的话,sharpen your pencil的题只有前面一小部分有答案,字谜题不太理解,我全部跳过了。小提示:题目运行一下就能得到答案哦,不要只在纸上做。

  3. 本书上的源码在网上也是比较好找到的,这样其实挺方便读者进行实践检验的。但是这本书的文本编辑方式和难度过大的项目,直接导致我没有怎么码代码。所以我现在总结,就会觉得我花一个多月来看这本书,但是我只是学会了看懂一些基本的Java代码和知识而已。

  4. 最后说说章节,前半段没什么好说的,我想说说后半部分,现在应该不会用书中方法来写图形界面了吧,应该都是用CMS来写,但是了解一下不是坏事。最后四章属于重要但是对于现阶段难以掌握的知识,会在之后的学习中,更加深入学习。

  5. 总的来说,这本书还是适合有大量时间的新手,但是你需要简单学习一下IDE。不然的话用文本编辑,实在是效率太低,没有学到什么代码工程能力,且极容易被劝退。

我估计我以后还是要再去学学,下次可能就会去看《Java核心技术(卷1)》了吧,Java还是要好好学的,因为我去看数据结构和算法的书的时候,发现很多书都是用Java实现的。从工作上看,Java的岗位还是要比其他语言还是要多点的。我是机缘巧合找到了python web的实习,就决定Spring先放一放了,大家都是做web的话,学习哪一个都一样。

《鸟哥的Linux私房菜》这本书可能是中文教Linux最好的书了,但还是大大小小有不少的坑。

  1. 简体版和繁体版,简体版的翻译是丢失了一些原版的意思的,如果你从来不看繁体书,突然让你去看繁体书,你会发现繁体是真得影响阅读速度,以我自己的感觉还是老老实实看简体版吧,效率会高些,丢失原意是翻译书不可避免的。
  2. 教的系统是CentOS,这其实不太主流,我发现学生中Linux系统还是以学Ubuntu为主。所以你大可放弃书中安装系统那章,去网上找一篇安装Ubuntu的攻略,也不是那么难的。
  3. 这本书整体是偏向于Linux系统管理和运维的,作者应该是从事这个方向工作的,所以整体上会偏向这个方向,无可厚非。但是对于读者来说其实会有点点痛苦,特别是书中的第四、五部分,这个部分大概看看吧,实在受不了就跳过不看吧。
  4. 这本书其实知识细节太多了,对于学习能力比较强的人是一种限制。你学到最后会发现,只要学会了man命令和了解Linux的基础命令,是比书中这种事无巨细的介绍学习效率要高的。可能最好的Linux资料都是在线文档吧,书籍做到这种程度已经不容易了。

MDN的HTTP文档

我一开始以为这么早接触网络协议是不是有点早,但是我在实习中发现了解Http中最关键的知识还是必要的,不然返回码都看不懂,那是真的惨。

数据库设计

  1. 数据库设计的那些事,算是让我知道了什么是范式以及基础的数据库知识,但是这个视频教程的内容是远远不够的。
  2. 《MySQL必知必会》从第一章到第17章我都操作实践过,操作起来感觉还蛮舒服的,但是可以感觉到离具体事务的操作还是有距离的,这部分算简单的入门操作指南吧。从第18章以后我就没有操作了,从这开始,内容开始偏向于数据库的管理,感觉大部分操作权限对于一般用户是拿不到的,所以我也只是看看理解就过了。总的来说,这是一本非常优秀的入门书了。

前端方面

JQuery 和 Bootstrap 特别类似所以放在一起太适合不过了,而且这两个官方文档都是有中文的,如果你看不下去英文可以看中文的,如果你觉得官方文档太枯燥,不直观,也可以去看看菜鸟教程的文档,它的优点是在于每个小知识点都会有尝试一下,会让你直观的看到代码的效果。这两个的知识是不难懂,但是初学者用起来还是会懵一下的,我在实习中使用bootstrap就懵过。我试着简单解释怎么用bootstrap吧,我遇到两种使用方式:

  1. 快速部署。 直接把官网中的CSS和JS代码直接加到你的HTML代码中就会看到效果,优点就是快捷,缺点就是不能控制代码中细节,只能让你简单了解bootstrap吧。
  2. HTML模板,如果你能找到web后端实习或者是项目,你会发现你需要改别人写好的html模板,而模板中就会使用Bootstrap,从使用框架的各个部分到自定义组件和布局,你会发现Bootstrap无处不在。

JavaScript 的 Promise 模式算是JS中的异步吧,可惜我JS学得很少,这个地方我看了几眼就跳过了。

字符编码

最简单的解释是字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。尽管现在基本上已经是无脑使用UTF-8了,但是偶尔还是会出现乱码问题。

IDE

现在Java最主流的IDE应该是idea了,Eclipse会显得久了一点,Visual Studio Code的问题是它新了,新到不完善,Vs Code现在主要还是用在前端,python,C++和Java都能支持了,但是目前功能还不比不上idea和PyCharm。JetBrains 一家的IDE都差不太多,学了idea的文档,很多通用功能也可以用在PyCharm上,这算个隐藏福利吧。

版本管理器

其实推荐的两个都不太好吧,《Pro Git》太厚了,内容太多了,不需要学这么都就可以用的。而 《猴子都能懂得Git入门 》则是旧了点,攻略中推荐得工具很难用。这里我会推荐廖雪峰老师的《Git教程》。目前,我在IDE用到得Git代码不会超过Git入门教程,而且难度适宜,手把手得教你用git。

超完整的Chrome浏览器客户端调试大全,其实后端不需要知道这么多,知道基本的就够了,毕竟后端是不写JS的,但是前端的话还是要好好看看的。

MySQL WorkBench,大致看了看是可视化数据库管理器,和pgadmin差不多,我就没有下载了,以后用到了在去下载吧。

实践项目

没有什么时间和精力,就跳过吧。不过说实话,这个实践项目不是那么简单,我实习快两个月了,到现在我做登录页面还是没独立做出来过,这个难点是交互的表单。哎,我太菜了吧。

不知不觉,从我决定转行到现在也有个半年了吧。学了很多,但是发现自己不知道的也有很多,也算是更加了解了计算机这一行. 我会学到什么地步呢?我能到达什么高度呢? 我对技术的热情会保持多久呢? 不知道,那就继续干吧!