
学什么? 开发人员的最佳形象是什么? 如何提高我的发展能力? 这些是每个热情的开发人员都会提出的主要问题。
我采访了很多新的开发人员,以进行招聘或培训。 我阅读了许多简历,其中大多数只是列出了他们所知道的框架。
“好吧,我知道.Net,我知道JEE,我知道Symfony,并且我对Python Django真的很了解”
嗯。。。好吧! 但是您能告诉我接口在OOP中的作用,为什么我们必须用getter和setter保护属性,静态方法和非静态方法之间的区别是什么,内存如何处理它们,这是OOP的四个原理。 你知道什么是浮点数吗? 您对并行编程和监视器了解多少?
这些是我的问题,可悲的是很少有开发人员能够回答。
我不在乎您知道多少框架,我不在乎您拥有多少证书,因为最终,我唯一关心的是您是否知道如何编码。
那要学什么呢?
我个人建议从c语言开始,进行有趣的编程,查找复杂的问题(例如8皇后问题,排序..),并乐于解决它们,感受算法的力量,感受到创造的伟大。 没有用户界面,没有按钮,只有您和控制台显示绿色文本(效果不错)。
但是,为什么c语言很重要? 首先,开发人员必须掌握数据结构和编码(可以编写良好的if语句和循环);第二种c语言可以说是一种低级编程语言,因此开发人员将处理低级详细信息,例如内存管理(指针),浮点数(请检查此选项)教程http://www.cprogramming.com/tutorial.html#fptutorial),固定点编号(请检查本文http://x86asm.net/articles/fixed-point-arithmetic-and-tricks/),处理器缓存和内存和许多其他低级问题,它们将帮助开发人员了解计算机并在将来创建更好的优化代码。 我也建议编写一个基于tcp / udp c的应用程序来处理底层套接字和网络层。
在玩完C语言之后,去学习一些面向对象的语言(我建议使用Java),而不是浏览每个单独的库,请尝试了解OOP的基本知识,以了解实际上是一种静态方法,为什么我们要使用公共,私有和受保护的关键字,了解为什么我们要使用getter和setter,尝试感受封装的真正力量,编写显示OOP价值的基本程序。 在开发了一些自己的项目并且犯了种种错误之后,开始阅读别人的代码,迷上设计模式,并且SOLID原理学习它们,并在每次编写稳定的OOP代码时尝试应用它们。
现在,您对OOP有了很好的了解,可以升级到学习并发和并行编程。 研究什么是互斥体,什么是监视器……实现一些有趣的问题,例如交通问题。 并发虽然很有趣,但是很难,所以要学习它。 同时尝试了解编译过程,了解状态转换图和语法……如果您仍然有时间和精力尝试通过实现一个来了解操作系统及其运行方式(当然,使用最少的功能,可能只是一个显示有关硬件信息的控制台)看看SOS(简单操作系统)http://www.cs.unm.edu/~crowley/osbook/sos.html
我知道这是一个很难的概念,需要很多时间和精力来掌握。 但是,嘿,您是一个想要成为超级开发人员的人,请为此工作。