其实,一个企业从事的是发展,它的薪酬和职业发展方向有很大的不同。为什么呢?不同的位置导致很多时候不同的未来方向。
首先,本文将发展定位分类如下:
客户端程序员、服务器端程序员、数据库程序员、Web开发人员和脚本编写人员擅长解决问题和使用不同的工具。
客户端程序员
大部分程序员属于客户端程序员,包括Office、电子表格处理程序、游戏app等等。主要客户程序员的任务在于添加和改进应用层功能和错误跟踪。使应用层接口成为程序的一部分,负责资源打包和排序。部分高级程序员负责联合测试,研究开发应用层新功能,培训公司新员工,编写应用层实例和测试,编译测试应用层架构。
客户端程序员的一般工作职责会非常明确。这取决于服务器端数据。
服务器端程序员
简单说说基于服务器划分的原则:将游戏中占用系统资源较多的功能分离出来,独立成为服务器。对于同一服务器架构下的不同游戏,尽可能重用一些服务器(这是进程级重用)。为了通过多线程和并发编程来适应多核处理器,最好在服务器之间复制更多的数据,并保持清晰的数据方向。在互联网高速发展的时代,构建一个系统离不开各种服务
务器系统和进程之间的接口转、数据传输和同步工作的。这些内容均在服务器端程序员的职责之内。数据库程序员
从事数据库端的开发,也是分初中高级的。初级程序员大体知道优化器氛围逻辑优化和物理优化,了解一些逻辑优化的方法,知道执行计划的来源。中级程序员是能够根据自己对优化器的了解,调整出优化器所喜爱的SQL语句。并且对产生的执行计划可以分出优劣。高级程序员是对优化器每一个细节都非常清楚,写出一个SQL语言直接,就可以知道优化器优化的过程。
很多互联网大厂会专门培养数据库程序员,比如阿里在Oracle时代就培养了很多优秀的DBA。
Web开发或者其他脚本编写
Web开发一般都是前端的三件套(HTML+CSS+JS)和脚本解释语言(PHP、JavaScript)。

目前来说web端开发要掌握的是用户端的内容,不管是PC端还是H5或者是小程序。简单来说前端就是指的用户这一端也是云端。
其实除了岗位的划分有不同的职能之外,程序员也有不同的类型,大致可以分为:
- 系统工程师/架构师
- 系统程序员
- 应用程序员
- 非真正意义上的程序员
不管是哪种程序员,都应该在踏入这个岗位的时候给自己一个目标。
第一,写出的程序员不要格式化也非常标准,太多程序员连空格都没有。字符混乱至极,过三个月之后都看不懂自己的代码。
第二,写的程序员一堆没有用的代码,其他人来评审的时候还找不到无用代码。这种情况非常多。
第三,可读性也没有效率就更别说了。一般我们首先考虑的是可读性,但是对于频繁执行的部分,可以牺牲可读性保证效率。需要写很多注释,注释可以不用说用途,而是写代码的思路。
这是一个技术方向发展的程序员应该首先要考虑的,那么管理方向的程序员应该注意什么?
我见过一位开发者,很明确自己的目标,就是在核心业务上做技术管理。五年时间就成功做到了。管理岗位要培养自己的业务思路,说大点就是商业思维。另外就是培养自己的沟通表达能力。还有自己的文档能力以及项目管理能力。
