作为一个刚入行的小白,你可能想知道:
那我们今天就先来看看在软件公司里不同的程序员是如何协同工作的,需要哪些技术以及这些技术之间相互的联系。
知道了这些,更有利于你明确未来学习的方向和目标。
01
什么是软件开发?
我们都知道计算机系统是由「硬件」和「软件」两个部分组成的。所谓硬件就是计算机的物理部分,就是那些你可以看得见摸得着的外壳、屏幕、电路板这些。但是只有这些计算机是不可以工作的,就像人如果只有完整的躯体是不够的一样。
所以,当计算机从生产线上装配完毕以后或者到我们手中后,要做的第一件事就是给它装上各种软件(例如Windows,QQ, Steam)。
软件(Software)就是使计算机可以运作起来完成我们指定任务的程序和数据。
这和人类也很像——我们在出生以后,成年人就给我们的大脑装入各种数据和程序,我们识别人和物体并记住他们,学会喝水、吃饭、说话等等。
除了现有的、已经被开发出来的软件,各行各业的用户还有自己特定的需求,软件开发就是根据用户的需要,帮助他们编写一系列的程序,满足他们正常或变态需求的过程。
软件开发是一项包括需求获取、开发规划、需求分析和设计、编程实现、软件测试、版本控制的系统工程。
02
谁在开发软件?
从事软件开发的公司有两种:
还有一种叫「互联 公司」,这种定义不太好下,因为现在谁都在宣称自己是互联 公司了,但是互联 公司也是做产品的,所以我们还是把他们当作产品型公司好了。
在这些公司里,各种角色合作进行软件开发,其中的主力就是我们程序员。
03
程序员在干什么?
作为小白,我们经常疑惑于「程序员」到底是干什么的?在软件行业,程序员的分工已经非常细致了——不同程序员岗位的工作领域和技能要求是不同的。
举一个例子,你在「饿了吗」浏览不同的店家,选择你要订的外卖并下单、支付,直到送到你手上并完成评价的一系列过程,都是不同程序员、甚至不同公司的程序员协同工作才完成的。
但是,无论是简单还是复杂的软件系统,程序员们其实只做三件事:
参与软件开发的角色很多,在这里我们先介绍程序员、与程序员工作相关性很强的岗位,他们包括:
①用户界面的实现——前端工程师
「UI/交互设计师」把线框图、UI设计图、原型设计好并通过评审以后,程序员们就可以开工了[1]。现在的主流软件开发方法是将软件开发分为「前端」和「后端」两部分,前端程序员主要负责:
②呈现用户界面
UI/交互设计师提交的是UI设计图或者系统原型,它可能是一个Photoshop的设计稿(或者是其他格式的设计稿),设计稿是一副静态的图片,因此需要前端工程师把设计稿「转换」成正式的用户界面代码。
如果你要做的是一个 站,你首先要用图像处理软件切图(有的公司里UI设计师已经切好了,也有一些UI设计软件自动帮你切好),然后用HTML+CSS来表达这个用户界面,直到浏览器上可以显示出和设计稿一样的界面来,而且你的页面应该在不同浏览器上显示出完全相同的效果。这其实很麻烦,因为不同的浏览器都有自己的小性子,前端开发人员经常被困扰。
APP的用户界面开发与之类似,只不过描述用户界面的不是HTML和CSS。Android和iOS的APP使用不同的界面描述语言来表示用户界面,进行交互的语言也不同(不是JavaScript),但要做的事基本一样。
③与用户交互
只是显示界面是不够的,还有一些基本的「用户交互」功能也要前端工程师实现,比如点击一个链接跳转到另一个页面,或者输入完手机 码后需要验证手机 码格式是否正确……这些都是基本的交互,在 站中一般使用JavaScript来完成。
用户交互的程序一般都运行在终端(例如你的手机)上。
④与后端交互
终端并不能处理所有的事,因此前端程序还需要与后端进行交互。例如在一个用户注册的页面中,我们先用JavaScript验证了这个手机 码格式是正确的,但是我们并不知道这个手机 码是否被注册过,这时就需要与后端交互——把这个 码发送给后端的一个接口,后端程序检查完毕以后返回给我们一个结果,我们再告诉用户这个 码已经被注册过或者进行下一步的操作。
综上,前端工程师的工作是:
⑤后端工程师
在前面我们知道,前端工程师要验证一个手机 码是否被注册过,是把手机 码发送给后端的一个接口,再由后端程序进行检查并返回结果给前端。
这些接口是用户看不到的,但是可以被程序调用。设计、并实现这些接口工程师叫做后端工程师或后端程序员。在程序员们开工之前,系统架构师已经规定好了前端和后端是如何交互的,包括:
后端程序员的工作内容就是一个个实现这些接口,提供前端程序员想要的数据、执行前端程序员想要进行的操作。
后端程序的主要功能是:
相对于前端程序员,后端程序员可以选择的语言和技术有很多,目前比较主流的是:
⑥系统架构师
在前面,我们提到了「前端工程师」和「后端工程师」,他们使用不同的语言和框架来开展工作。
他们是在「系统架构师」的领导或指导下开展工作的。「系统架构师」一般是具有多年经验的老鸟,他们甚至是「全栈工程师」——简单来说就是前端后端都会的人。
系统架构师根据系统的功能需求,把系统划分成功能模块,规划好系统的技术架构、分配好前后端的开发任务,同时也规定和协调好各个接口的接口方式。然后程序员们就各自开展工作了。
成为系统架构师不是小白们目前的职业目标,因为这需要相当的经验和技术覆盖面。
04
为什么学Java?
①简单易学
首先Java是一个面向对象的编程语言,容易理解。而且略去了多重加载、指针等难以理解的概念。并且实现了自动垃圾回收,大大简化了程序设计。可以选择 Java培训班学习,如果时间足够,想要自学的话,也可以通过书籍学习,另外爱尚教育也提供免费的Java视频课程供学员学习(需要联系小编即可)。
②跨平台
跨平台是Java最大的优势。Java运行在JVM(Java虚拟机)上,在任何平台只要安装了JVM。Java就可以运行。它架构在操作系统之上,屏蔽了底层的差异。真正实现了“Write once,run anywhere”。
③安全
Java中没有指针,这样就没有办法直接访问内存了。另外Java也不容易出现内存泄露。
④多线程
Java内置对多线程的支持,可以方便地在程序中实现多线程的功能。不像其他不支持多线程的语言,需要调用操作系统的多线程功能才能完成多线程的实现。
⑤有丰富的类库
经过10多年的积累和沉淀,出现了很多优秀的开源 区,优秀的 区提供了很多非常好的框架,借助这些框架可以使我们不用去关注Java底层的开发,而只需关注业务的实现。
⑥使用广泛
不得不承认上面有一点是对的,Java确实有很多企业在用,而且都是用在大项目上。这就意味着Java方面的工作比较好找,另一点是在做Java开发时如果遇到问题,可以很容易从 上找到解决办法。
我们把程序员简单地分为「前端工程师」和「后端工程师」,在实际的项目开发中还会有更细致或者更粗犷的分类方法,视不同项目、不同公司的开发模式不同而不同。而且一个软件的开发完成还需要产品经理、系统分析师、系统设计师、运维技术人员、测试人员等参与。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!