本教程操作环境:windows7系统、Dell G3电脑。
程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构师,测试工程师六大类。
具体工作职责如下:
1、负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态。
说明:
虽然具体内部分工不同,但程序员这个群体,就是通过每个人的分工协作,将公司老板、产品经理、运营及业务等部门对一个APP、小程序等等产品的功能想法通过编程实现出来。
当然,需要编程的不仅仅只有APP、小程序,但咱们既然定位为为小白解答这个问题,那就从我们人人都会用的APP的功能开发为例来说明程序员的工作吧!
01前端开发:主要负责用户可见页面的实现
我们打开任何一个APP,就会看到一个开机页面,点击里面的各个模块、功能、标题等,就会跳出来另外的页面。
在互联网公司里,除了程序员还有产品经理、交互设计师、UI设计等岗位,一般来说,交互设计师、UI设计师会根据老板对APP的想法、产品经理对APP相关模块的规划将每一个页面具体长什么样子给设计出来,比如按钮是一个还是三个,上下排还是左右排,等等。
而要能够实现我们每个用户在主页面上点击一下“我的”就能够跳转到“我的”主页面,这就需要程序员小哥哥小姐姐们通过程序来实现了。
通常主要负责类似这一类工作的程序员,从内部分工来说,通常被称为前端开发。
02后端开发:主要负责后端数据的开发
不管我们是不是小白,大概率都听说过数据库的概念。
这就好比我们去一家超市购物,我们能够在货架上看到的五颜六色、陈列得让人特别有购买欲望的商品是一个APP的前端,比如你想要买一包黄瓜味的薯片(很多人的最爱),结果发现货架上只有其它几种口味的了,这时候你就去问理货员还有没有黄瓜口味的?
理货员会去找仓管员看仓库,发现还有就拿出来给你。
在你看不见的地方,理货员、仓管员以及仓库本身就有点类似我们使用的APP的后端开发在做的一些事情,他们要保障数据库的条理性、在需要的时候能够快速找到想要的数据,而且准确无误,能够快速准确地响应前端的需求。
03测试:主要负责产品上线前质量的把关
当开发工程师们把APP、小程序等开发完成之后,在正式上线之前,还需要内部的质量监督员,也就是测试工程师对产品的整体性能和安全进行测试。
测试的工作最基础的包括功能测试,也就是测试工程师们可以把自己当成一个小白用户,来使用这个产品,看产品是否能够顺畅地响应和实现自己的需求;
第二个重要的测试是对产品兼容性的测试,在不同型号的移动设备上、不同软件之间的兼容是否有问题。
第三个是性能测试,主要看在大流量的前提下,产品能否正常运行而不崩溃;
最后是安全测试,防止产品上线后被恶意攻击。
扩展知识:程序员必备技能
熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。
懂得网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
明白dcom/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
更多编程相关知识,请访问:编程教程!