计算机原理,网络协议,数据结构,多线程与IO等基础知识,这些是一个软件工程师的基本素养,但现在好多从事软件开发的人都不知道,或是对其一知半解,所以现在很多人将软件工程师名称“码农”,因为他们不知道其原理,更谈不上优化等高级技术了。
然后是在这些基础之上的框架,中间件。这样你就能够正确使用这些工具来简化并加速开发高性能的应用。
给你举一个真实的例子,公司以前的遗留项目是使用多线程并发访问网络资源,这开发这个的人连最基本的资源释放都没有——在某个线程运行完之后并没有关闭底层网络连接,这就导致了程序运行一段时间之后就要重启,而且在那个服务器上不能跑其他的程序。
因为它把所有能用的端口都占用了。而且频繁打开网络连接与线程使程序运行的效率很低。最后再说一句:如果只会用框架,只会做web而不懂原理的是码农,不是工程师。