前几天和老友聊天,我们都再次感慨互联网和软件行业发展之快,这些年出现了一些我们之前根本都无法想象的开发职位。
首先就是前端开发。
在我和老友的“古老”记忆当中,Web系统还都是通过“套模板”的方式来创建的,简单来说就是美工把页面用Photoshop之类的软件做好,然后变成HTML页面,Web开发人员把动态的代码添加进去,调试通过就大功告成。
这里根本没有前后端之分,都是现在的后端程序员在折腾,页面的一些炫酷的效果也是后端程序员通过调用类似jQuery之类的类库来生成的。
当我***次听到前端这个概念的时候,心里是打了一个问号的,不就是JavaScript, CSS,HTML吗? 还能搞出什么花样来?
没想到的是前端和后端这么快地分离了:后端专注于提供数据, 前端专注于交互,快速响应UI变化。
现在看来对前端程序员的要求是非常高的:
- HTML/CSS/JavaScript
- 层出不穷的开发框架,Angular JS, React JS, Vue......
- 模块化开发,项目构建
- 代码质量/风格
- 单元测试
- 自动化测试
- 跨浏览器测试
- 各种调试工具
- 版本管理
- SEO
- 文件压缩合并
- Web安全
- 移动Web
- 可视化的图形图表,动画
- ......
要求的技能这么多,薪水肯定也水涨船高了。
第二个就是App开发。
我在10年前还学过诺基亚的塞班系统的开发, 那叫一个麻烦,我甚至觉得诺基亚就是为了提高准入门槛,故意刁难开发者。
然而,乔布斯的苹果开启了移动互联网时代以后,一切都变了,守旧的诺基亚像断崖一样跌落,迅速消失。
无论是App Store还是最早的Android Market , 无不期待着大量的App入驻。
这直接导致了一个新的开发岗位--App开发--的无比繁荣, 在***时期,每个公司都想要自己的App, 但是没有足够的人去开发啊 !
老友感慨说:你不知道最热门的时候想招聘个Android/iOS开发有多难,薪水多高!!
国内培训机构趁势忽悠很多人入坑, 成批地推出了大量Android和iOS程序员。***形成了一个尴尬的局面: 初学者太多,抱怨工作不好找,而公司要求的中高级开发者又太少,抱怨招不到人。
第三个就是运维
我刚毕业的时候, 做的系统相对简单,通常只是部署在一个机器的一个软件组件上,部署的时候就是往一个机器上复制文件,开发人员轻松兼任。
现在的系统越来越复杂,从技术上看,使用的软件组件越来越多,像什么ngnix, keepalived, HAProxy, redis , mysql ,elastic search,rpc框架,分布式文件系统,cdn...... 等等,还经常需要搞高可用的集群,主从备份等等。光是把一个系统搭建起来就很不容易。
从业务上看,把所有的东西放在一起也不可能了,业务也做了分家,放到了不同的机器上,或者虚拟机/容器中。 由于业务之间还需要互相调用,这又涉及到复杂的配置。
数量众多的业务系统+ 数量众多的软件组件构成了一个巨大的挑战, 这些系统和软件组件需要安装、配置、维护、监控,单靠开发人员兼职折腾是不太现实了。
于是运维人员就横空出世了!
运维要做的事情上面已经有所描述,可以看出对运维的技能也很高:
- Linux 基础
- 各种软件(Ngnix, Redis, Mysql等)的安装和配置
- 网络基础服务: DNS, DHCP, FTP......
- 各种自动化的运维工具
- 安全
- 各种脚本语言
- ......
在机器众多的情况下,手工根本是搞不定的, 关键点就是要做自动化, 自动化的安装,自动化的部署,自动化的监控和分析。
第四个是大数据相关的岗位
刚工作那会儿,看到一个表里几千万行的记录,感觉很吓人,觉得不可能超越了。
没想到的是这才过了几年, 拜互联网尤其是移动互联网所赐,现在的互联网系统都要面对海量的用户和海量的数据, 数据量之大,导致传统的数据库和文件系统竟然无法存储,传统的单机竟然无法在合理的时间内处理!
你听音乐的时候,读电子书的时候,上网浏览的时候,聊天的时候,使用手机的时候,网上购物的时候.... 无时不刻都在产生数据,再加上手机拍的照片,聊天记录,很难想象你在网上的活动不产生数据的。
数据的存储必须分布式,数据的多样化让关系型数据库举步维艰。数据的处理也必须想办法分布式,对海量的数据进行分析、“挖掘”, 找出其中的价值, 这就导致了大数据相关系统以及工作机会的诞生。
在这个领域Hadoop是无可争议的王者,对大数据的分析和处理也是很热门的岗位,想象一下,若是有机会处理和分析存储在成百上千台机器上的数据,是不是也很有成就感?
还有一个不得不提的是人工智能,2017年大热,由于数学和算法的关系,导致门槛较高,还未像前面几个职位那样,基本普及了。机器学习,深度学习什么时候能“飞入寻常百姓家”,让我们拭目以待!
总而言之,技术的发展在不断创造出新的机会,对从事软件开发的人来讲,是坏事也是好事,想在这个行业里呆下去,只有一个“秘诀”:快速地、持续不断地学习。
【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】