1. 程序员一般的工作都是干什么的
程序员的工作内容如下:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
(1)程序员除了写前端还有啥扩展阅读:
数据显示,近四成程序员处于单身状态,明显高于非互联网从业者24%的比例。广州、深圳、北京成为单身比例最高的三大城市。单身的程序员在择偶方面也有区别于其他人的偏好,更注重对象的颜值、身材和家庭背景。
统计显示,互联网从业人员对买房有不小热情。互联网从业人员更勇于背负房贷,29%互联网从业人员正背负房贷,这一比例两倍于非互联网从业人员。其中在各大城市排名中,杭州、北京、广州位列前三大互联网从业者背负房贷人数比例最高的城市。
在互联网企业的一个特色是,没有明确的上班时间和下班时间,灵活的工作时间和高强度的工作量,使得加班成了行业特色。在睡眠时间方面,程序员的睡眠时间集中在11点至凌晨1点之间,而非互联网从业人员的睡眠高峰在10点至12点之间。
2. 程序员分前端与后端,那么后端程序员都做些什么看完就知道了
我刚开始做Web开发的时候,根本没有前端,后端之说。
原因很简单,那个时候服务器端的代码就是一切: 接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。
即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“ 套模板 ”的方式生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技术把动态的内容添加上去,仅此而已。
那个时候最流行的图是这个样子:
在最初的J2EE体系中,这个 表示层 可不仅仅是浏览器中运行的页面,还包括Java写的桌面端,只是Java在桌面端太不争气, 没有发展起来。
每个程序员都是所谓 “全栈”工程师 ,不仅要搞定HTML, JavaScript, CSS,还要实现业务逻辑,编写访问数据库的代码。等到部署的时候,就把所有的代码打成一个WAR包,往Tomcat指定的目录一扔,测试一下没问题,收工回家!
不差钱的公司会把程序部署到Weblogic,Websphere这样的应用服务器中,还会用上高大上的EJB。
虽然看起来生活“简单”又“惬意”,但实际上也需要实现那些多变的、不讲逻辑的业务需求,苦逼的本质并没有改变。
随着大家对浏览器页面的 视觉和交互 要求越来越高,“套模板”的方式渐渐无法满足要求,这个所谓的表示层慢慢地迁移到浏览器当中去了,一大批像Angular, ReactJS之类的框架崛起,前后端分离了!
后端的工程师只负责提供接口和数据,专注于业务逻辑的实现,前端取到数据后在浏览器中展示,各司其职。
像Java这样的语言很适合去实现复杂的业务逻辑,尤其是一些MIS系统,行业软件如税务、电力、烟草、金融,通信等等。 所以剥离表示层,只做后端挺合适的。
但是如果仅仅是实现业务逻辑,那后端也不会需要这么多技术了,搞定SSH/SSM就行了。
互联网,尤其是移动互联网开始兴起以后,海量的用户呼啸而来,一个单机部署的小小War包肯定是撑不住了,必须得做分布式。
原来的单个Tomcat得变成Tomcat的 集群 ,前边弄个Web服务器做请求的 负载均衡, 不仅如此,还得考虑状态问题,session的一致性。
(注:参见文章《小白科普:分布式和集群》)
业务越来越复杂,我们不得不把某些业务放到一个机器(或集群)上,把另外一部分业务放到另外一个机器(或集群)上,虽然系统的计算能力,处理能力大大增强,但是这些系统之间的通信就变成了头疼的问题, 消息队列 (MQ), RPC框架 (如Dubbo)应运而生,为了提高通信效率,各种 序列化的工具 (如Protobuf)也争先空后地问世。
单个数据库也撑不住了,那就做数据库的 读写分离 ,如果还不行,就做 分库和分表 ,把原有的数据库垂直地切一切,或者水平地切一切, 但不管怎么切,都会让应用程序的访问非常麻烦,因为数据要跨库做Join/排序,还需要事务,为了解决这个问题,又有各种各样“ 数据访问中间件 ”的工具和产品诞生。
为了最大程度地提高性能,缓存肯定少不了,可以在本机做缓存(如Ehcache),也可以做 分布式缓存 (如Redis),如何搞 数据分片 ,数据迁移,失效转移,这又是一个超级大的主题了。
互联网用户喜欢上传图片和文件,还得搞一个 分布式的文件系统 (如FastDFS),要求高可用,高可靠。
数据量大了,搜索的需求就自然而然地浮出水面,你得弄一个支持全文索引的 搜索引擎 (如Elasticsearch ,Solr)出来。
林子大了,什么鸟都有,必须得考虑 安全 ,数据的加密/解密,签名、证书,防止SQL注入,XSS/CSRF等各种攻击。
前面提到了这么多的系统,还都是分布式的,每次上线,运维的同学说:把这么多系统协调好,把老子都累死了。
得把持续集成做好,能自动化地部署,自动化测试(其实前端也是如此),后来出现了一个革命化的技术 docker , 能够让开发、测试、生成环境保持一致,系统原来只是在环境(如Ngnix, JVM,Tomcat,MySQL等)上部署代码,现在把代码和环境一并打包, 运维的工作一下子就简化了。
公司自己购买服务器比较贵,维护也很麻烦,又难于弹性地增长,那就搞点虚拟的服务器吧,硬盘、内存都可以动态扩展(反正是虚拟的), 访问量大的时候多用点,没啥访问量了就释放一点,按需分配,很方便,这就是 云计算 的一个场景。
随着时间的推移,各个公司和系统收集的数据越来越多,都堆成一座大山了,难道就放在那里白白地浪费硬盘空间吗?
有人就惊奇地发现,咦,我们利用这些数据搞点事情啊, 比如把数据好好分析一下,预测一下这个用户的购买/阅读/浏览习惯,给他推荐一点东西嘛。
可是这么多数据,用传统的方式计算好几天甚至好几个月才能出个结果,到时候黄花菜都凉了,所以也得利用分布式的技术,想办法把计算分到各个计算机去,然后再把计算结果收回来, 时势造英雄, Hadoop 及其生态系统就应运而生了。
之前听说过一个大前端的概念,把移动端和网页端都归结为“前端”,我这里造个词“大后端”,把那些用户直接接触不到的、发生在服务器端的都归结进来。
现在无论是前端还是后端,技术领域多如牛毛,都严重地细分了,所以 我认为真正的全栈工程师根本不存在,因为一个人精力有限,不可能搞定这么多技术领域,太难了 。
培训机构所说的“全栈”,我认为就是前后端还在拉拉扯扯,藕断丝连,没有彻底分离的时候的“全栈”工程师。
那么问题来了, 后端这么多东西,我该怎么学?
之前写过一篇文章叫做《上天还是入地》,说了学习的广度和深度,在这里也是相通的。
往深度挖掘,可以成为某个技术领域的专家,如搜索方面的专家、安全方面的专家,分布式文件的专家等等,不管是哪个领域,重点都不是学会使用某个工具和框架, 而是保证你可以自己的知识和技术去搞定这个领域的顶尖问题。
往广度发展,各个技术领域都要了解,对于某种需求,能够选取合适的软件和技术架构来实现它,把需求转化成合适的技术组件,让这些组件以合适的方式连接、部署、运行,这也需要持续地学习和不断的经验积累。
最后,以一张漫画来结束吧!
C/C++高级工程师学习路线图:
3. 程序员一般都有哪些职业
程序员可以做的职业有很多,最多的是到软件公司做程序员,编写程序开发软件,也有做软件测试工作,工作经验丰富的程序员转到后台做项目管理。程序员是比较辛苦的工作,996是常态,经常熬夜,所以做程序员一般是年轻人为主,上了年纪的程序员很多改行或者换岗做管理,年纪大了思维和精力都跟不上,已经很难适应行业节奏,所以程序员做其他方面的工作也是很正常的。
4. 学习软件编程未来可以从事哪些岗位
学习软件编程未来可以从事哪些岗位。首先学习软件编程未来是可以从事软件相关的工作,关系最为密切的就是软件研发工程师,也就是俗称的程序员,当然程序员还可以细分为前端程序员、后端程序员、移动端程序员、服务端程序员等等。还有比如软件实施、运维、测试、设计、分析、咨询、销售等等,包括还有项目管理之类的。
学习软件编程其次也可以从事互联网行业相关的工作岗位,研发、设计、运营都可以。
希望对你有帮助。
5. 从事软件开发的就业方向有哪些
第一就是研发的程序员
第二是算法程序员
第三种是测试岗位
第四种是运维岗
第五种是产品岗
第六种 是运营岗
6. 现在学编程有哪些方向
首先,当前程序开发的方向还是比较多的,由于IT互联网行业的技术迭代速度比较快,所以程序开发的细分方向也在不断增加,当前规模比较大的开发方向包括Web开发、移动互联网开发、物联网开发(嵌入式)、大数据开发、云计算开发、人工智能开发等。
Web开发和移动互联网开发的规模比较大,对于开发人员的需求也比较多元化,既需要研发级程序员,也需要大量的应用级程序员,而物联网、大数据等平台开发往往会汇集大量的研发级程序员。随着各大科技公司纷纷开放自身的技术平台,未来行业领域也需要大量的程序开发人员来进行行业创新。
Web开发方向也有两个大的细分方向,一个方向是后端开发,另一个方向是前端开发,在当前云计算平台的推动下,前后端开发的界限正在逐渐开始模糊,前端程序员也可以走全栈开发路线,而且在移动互联网的推动下,前端开发的边界也在不断得到拓展,所以当前也把前端开发称为“大前端”。
物联网平台、大数据平台和人工智能等平台的开发任务也分为两大部分,一部分是平台本身的开发,这部分开发任务的难度是比较大的,当前不少大型科技公司都纷纷布局平台研发领域,以便于构建起自身的生态体系。从近些年计算机专业研究生的就业情况来看,不少毕业生会从事平台研发岗位,相关岗位的岗位附加值还是比较高的。
另一部分是基于技术平台来进行业务端开发,这部分开发需求在工业互联网时代很有可能会迎来大的爆发,所以对于广大应用级程序员来说,掌握各种技术平台会为自己带来更多的发展机会。
7. 程序员能做些什么工作
WEB应用程序设计专业。毕业后能够从事网站应用程序开发、网站维护、网页制作、软件生产企业编码、软件测试、系统支持、软件销售、数据库管理与应用、非IT企事业单位信息化。
2、可视化程序设计专业。毕业后能够从事软件企业桌面应用开发、软件生产企业编码、软件测试、系统支持、软件销售、数据库管理与应用开发等工作。
3、数据库管理专业。毕业后能够从事企、事业单位数据库管理、软件开发、专业数据库应用设计与开发、数据库的应用与开发、信息管理系统开发、企、事业单位网络管理、软件销售等工作。
薪资待遇及升值空间与轻松的一定呈反比。
如果你想要轻松的工作,首先就不能对薪资待遇与升值空间有太高的期望值。
如果是计算机相关专业,又有些技术的,一般推荐去互联网行业。
如果你性格内向,就做对内客服,前台,行政等职务。
如果你性格外向,就好办了,可以做销售,市场等前端的与人打交道的工种。
前者相对轻松,薪资待遇过得去,但是升值空间不大,后者转行的成功率很高,薪资待遇全凭自己打拼。那能做的还是比较多,互联网的话可以往新媒体,文案策划,电商运营,影视,视频剪辑等等
传统领域的话那也是比较多的呢,销售,公务员,教师,等等。
8. 想问下程序员工作内容有哪些分类啊
码农工种一般就是研究开发、开发、开发测试,运维开发,开发根据负责的内容一般分前端和后端,像界面就是前端,服务器和数据库就是后端开发。AI系统一般是研究开发。
但码农的工作一般是按照阶段性的项目中负责的模块分的,所以可能一个人一段时间是前端,一段时间就变成后端了,当然里面的技术差别很大,不是每个人都可以随便转。
但其实这些分类并不严格,比如世界最大的社交网站fb,他们的程序员必须从前端后端、研究开发测试维护一揽子全包。
软件工程中相配套的,除了程序员以外,还有产品经理、测试(和开发测试不一样)、行政等等岗位。
9. 跟程序员相关岗位有哪些
1.技术+技术(深入阶段)
这算是一条纯技术路线,具体又可以分3个方向:
技术(2年以上编程经验)+技术(软件测试,或系统分析师,或系统架构师)
有软件开发的工作经验,再加软件测试,比刚开始就进入软件测试行业的人要更具竞争优势。软件测试工作经验越多越好,可以干到退休,不用担心年龄问题。
如果选择“系统分析师,系统架构师”,则首先要打好扎实的“理论基础”(可以通过考证书,比如参加软考),以保证自己“后劲力十足”,这样等有了4,5年的工作经验后,才有可能能冲上这个高端领域。平时工作中要不断的锻炼自己的“发散思维”,培养善于发现业务需求的“眼光”。
2.技术+管理 :比如 项目经理。
像雷军说的那样:“程序员象木工一样,熟能生巧。程序员必须写足够代码量(8万行以上)的程序,才会有感觉,这是一个苦力活,没有任何捷径可走。”项目经理大多是从“优秀”的程序员里挑选出来,想走这条路,平时就要疯狂的编码,迅速累积丰富的编程经验,然后再补充一些管理方面的知识。(本人打算走这条路,呵呵)
3.技术+销售:比如 技术销售工程师,技术支持工程师。
这类工作要有一定的技术背景(入门级也可以),具备较好的语言表达,沟通能力。工作比较轻松,月薪待遇主要看个人销售业绩等,个人收入差别可能比较大。
4.当培训老师
如果你“乐于分享”工作经验,传授知识,或者觉得自己年龄比较大,精力不够充沛,且往上升又比较困难的话,可以选择去培训机构当老师,就目前而言,当老师工作轻松,待遇也不错。
10. 程序员分为哪几种
1、WEB前端
前端开发是创建Web页面或app等前端界面呈现给用户的过程,通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。
2、硬件工程师
硬件工程师要求熟悉计算机市场行情;主要工作为:制定计算机组装计划、选购组装需要的硬件设备、合理配置和安装计算机以及外围设备、安装和配置计算机软件系统等。
3、硬件测试工程师