许多人认为,只要技术高超,程序员永远不会被淘汰。但在中国,除了个人努力以外,还有诸多技术革命和竞争对你构成威胁。
曾几何时,在塞班论坛上纵横捭阖的大佬们,在一夜间被智能手机革命席卷而去。这些塞班论坛的专家们技术不行吗?技术革命给他们带来的冲击,并非选拔优才,而是直接将所有人一刀切淘汰。IT行业的技术革命迭代速度比其他行业快得多。
在我刚入行之前,主要是Java开发servlet,当我正式入行时,流行的已经是SSH框架。尽管了解servlet有助于理解struts,但没有必要让所有新手程序员都从头开始学习servlet项目。即使你再熟练掌握servlet,实际工作中也很少会有机会去修改封装的源码。新老程序员对SSH的使用差距在一两年内就很明显了。
当我还在琢磨struts2的18个拦截器顺序,以便在下次面试中大显身手时;当我还在考虑如何配置hibernate的映射更合理时,市场上已经开始流行springmvc。短短几年,struts2和hibernate已经被人们淡忘。新一代程序员甚至不知道struts2是什么,就像我当年不了解struts1一样。再深入了解jpa封装hibernate,再了解struts2和spring注解的区别,也仅仅在面试中短暂露面而已。被淘汰就是被淘汰。
springmvc并非终结者,再熟悉spring配置文件,也抵不过springboot的一个jar包。很多人问,学习springboot需不需要先学springMVC?答案是,如果你能理解springboot的概念,就没必要先学springMVC。实际上,只要你熟练掌握springboot,springmvc的余晖只会出现在你闲暇时的闲聊和翻阅书籍中。因为Java/PHP是应用语言,Java工程师是司机,而非汽车制造师。你只需要开好别人制造的汽车,将老板谈好的业务接过来即可。如果用Java自己发明轮子,那就是对Java/PHP的侮辱。
也许有人会说,技术理解的深浅会影响编码质量和规范。然而现实情况是,很少有公司是以技术驱动发展的。像华为海思这样的公司,如果没有华为作为强大的支持,基本没有生存的可能。当前中国的IT行业发展迅速,过度关注规范和原理可能会影响市场份额。当你还在研究用Java8还是Java10搭建框架时,竞争对手可能已经完成了C轮融资。老板需要你快速实现盈利,技术不能孤立发展,就这么简单。
市场瞬息万变,技术层出不穷,衍生出新业务机会。换言之,软件行业技术和业务的更新速度决定了工程师在这个行业的生存周期。表层迭代越快,底层迭代越慢。
Java是一门高级编程语言,其主战场在表层应用开发上。
也许在未来十年或二十年,当中国互联网发展遇到瓶颈,各个公司需要在某些行业深耕细作、深挖洞、广积粮时,软件行业的迭代速度会放缓,那时工程师的生存周期可能会延长。
但愿到那时,没有996,没有35岁的魔咒。