㈠ 计算机程序员主要是做什么工作的
程序员是从事程序开发、维护的专业人员。
㈡ 程序员的职业发展方向:业务技术
程序员职业生涯发展到一定程度都会面临一个选择,是走业务+技术方向,还是选择纯钻研技术。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员。绝大多数程序员最终的职业目标可能都是CTO,做到CEO的人估计会比较少,也有一少部分人自己去创业去当老板,也有部分人转行了,当老板的人毕竟是少数,转行的人都不在这行做了,自然没什么好说的了。一般来说,程序员的发展基本上都会经历这么几条路径。程序员-系统分析员-架构师-技术经理-CTO,程序员-项目组长-项目经理-项目总监-CTO,程序员-产品设计师-产品经理-CTO。当然这只是一个大致的路径,不是所有程序员都必需要这么经历的,有些人可能跳过其中的一些步骤,也可能有些人会把中间的很多职位都做了。而最终做到CTO的程序员,也是非常少的一部分,原因很简单,这个世界上不许要那么多的CTO和CXO。也就是说,许多的程序员最终可能是做技术经理、项目经理或者项目总监之类的,那么到底我们职业生涯要选择哪一种呢?我觉得这个问题没有一个统一的答案,因为每个人的性格不一样,际遇也不一样,就像你从小希望当贪官,可是命运却偏偏让你做了一个程序员。所以应该根据你的兴趣、性格与际遇选择一条道路,比如说你正好有机会带一个项目,而你又不是很讨厌项目经理这个位置,那么你就可以选择向项目经理方向发展。实际上很多时候,有些公司并没有明确的技术经理、项目经理、产品经理之分,在许多的公司里,他们经常是由一个人承担。在外包公司里,通常会有项目经理和系统分析员(也可能是技术经理)。在一些非IT公司里,可能会是部门经理,而做自己产品的公司可能会分得比较详细一些。我大致说一下这三个职位的区别,让正在徘徊的程序员有一个大致的了解。项目经理是项目的直接负责人,这个角色相当于一个中间接口,不管是团队成员还是需求方(客户),或者是上级领导,有事都直接找他,所以这个职位着重于管理与沟通。一般来说,项目经理的工作重点在同客户沟通需求、项目进度的把控、团队的沟通方面,有些公司也会需要项目经理承担团队建设的工作,不过貌似很多国内公司都忽略了团队建设这个工作了。对于项目经理来说,重点会要求沟通能力、协调能力、危机把控能力、执行力、团队管理能力,着重于沟通、管理与计划。当然也有些公司还要求项目经历要参与招标谈判,这就要求项目经理有一定的商务谈判能力。技术经理有时候也可能叫系统分析员,一些小公司可能会整个部门有一个技术经理。技术经理承担的角色主要是系统分析、架构搭建、系统构建、代码走查等工作,如果说项目经理是总统,那么技术经理就是总理。当然不是所有公司都是这样的,有些公司项目经理是不管技术团队的,只做需求、进度和同客户沟通,那么这个时候的项目经理就好像工厂里的跟单人员了,这种情况在外包公司比较多。对于技术经理来说,着重于技术方面,你需要知道某种功能用哪些技术合适,需要知道某项功能需要多长的开发时间等。同时,技术经理也应该承担提高团队整体技术水平的工作。1143448846
㈢ 程序员上线是一种什么体验
1、你的问题有点模糊,不好回答。
2、你所说的程序员上线是指程序员上线项目么?这是一个很痛苦的过程,一般上线前总会有些临时的事故,这是墨菲定律,上线前几天和中间几天都是加班加点守着,那感觉和女人生孩子差不多。
3、如果你说的程序员上线指程序员正式上班的感觉,那就是一份工作,和所有其他工作一样,没什么特别的。
㈣ 程序员一般的工作都是干什么的
程序员的工作内容如下:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
(4)程序员上线业务扩展阅读:
数据显示,近四成程序员处于单身状态,明显高于非互联网从业者24%的比例。广州、深圳、北京成为单身比例最高的三大城市。单身的程序员在择偶方面也有区别于其他人的偏好,更注重对象的颜值、身材和家庭背景。
统计显示,互联网从业人员对买房有不小热情。互联网从业人员更勇于背负房贷,29%互联网从业人员正背负房贷,这一比例两倍于非互联网从业人员。其中在各大城市排名中,杭州、北京、广州位列前三大互联网从业者背负房贷人数比例最高的城市。
在互联网企业的一个特色是,没有明确的上班时间和下班时间,灵活的工作时间和高强度的工作量,使得加班成了行业特色。在睡眠时间方面,程序员的睡眠时间集中在11点至凌晨1点之间,而非互联网从业人员的睡眠高峰在10点至12点之间。
㈤ 程序员成长第十八篇:项目上线
项目测试达标后,就需要启动上线了。项目上线过程中有几点需要注意。
清单的要素包括:什么人,在什么时间,需要准备什么资料,做什么事。其中,要明确先后顺序,要明确如何验证是否出现异常、明确验证方式以及问题处理方式。
上线之前,先在测试环境预上线一次,把所有的相关环节的资料和流程用清单的形式记录好。尤其是上线过程中遇到的问题。解决后,再从新在走一遍上线流程。全自动部署,减少人工参与。
上线之前,先对前一个版本进行备份。包括程序和数据。一旦上线出现问题,要能一键还原上一个版本。通常要选择使用人数最少的时间段来进行上线工作。
上线后,还需要观察一段时间正常的用户日志和系统日志。有条件的还需要对重要业务设置关键性指标。指标出现异常要能够有短信或电话预警。对异常的数据要去排查原因。
如果怕出现问题,可以提前对新功能做好A/Btest的控制。A/Btest是指用户打开软件后,一部分用户看到的老业务A的业务流程,另一部分看的是新功能B的业务流程。这样便于我们观察新功能对用户行为带来了什么影响。如果数据下降很大,那说明新功能可能有问题,我们可以先隐藏新功能。
主要是给客服做好培训工作,告知其可能出现的问题以及应对方案。避免用户反馈新问题,客服不知道的情况。这个也可以在测试阶段做好。根据培训的工作量灵活调整。
上线后要做一个复盘,复盘的目的有两个
一、对于项目中出现的问题,要找原因。根据原因在想解决方案。避免在后面的项目中再次出现。比如说项目延期,可能每次都会出现,但每次出现的原因并不一样。只要我们坚持改进,团队总能达到预期完成计划的一天。
二、对于项目中做的好的,也要讲,该表扬表扬,能推广的推广。表扬推广就是我们团队的价值观体现。我们经常说要打造组织文化,对工程师群体来说,组织文化就是在项目过程中生长起来的。
休息是为了更好的工作,下一个需求马上就要来了。
㈥ 程序员可以通过什么方式赚钱
Google Adsense
利用Adsense可以将广告发布到你的网站上去,通过访客点击广告来赚取佣金。这似乎是一个很不错的主意,如果你有一个不错的创意,写一个网站对于程序员的你应该不难,网站放上Adsense广告,推广、引流、收美金。
02
Android App交易市场收入
首先,他的Android应用是免费的,他并不是靠卖App来赚钱,而是通过向App中投放广告来赚取佣金的。如果你对Android技术非常熟悉,或者你的工作就是做Android开发,那么为什么不自己开发一个应用放到Android市场,为自己创造另一份收入。
03
参加一些开发者大赛
这是一种最实在的方法了,拿奖金,只赚不赔,不过前提是你得有足够的实力。他参加过Google的Android开发者大赛,很得瑟的跟我们说那时候他赢得了2000美金,尽管不是很多,但从中也可以学到不少知识,至少,通过学习,他可以自己开发Android应用来赚取广告费了。
04
承接一些项目
当然这要花费你很大一部分时间,承接时你要考虑时间成本,至少这些时间要和你的工资相当。个人不怎么推荐这种方法,有时候周期会很长,很容易丧失积极性,不过也算是一种方法
05
刷机、越狱
现在都是智能手机,有些用久了,卡了,像电脑一样要重装系统,一些小白有教程都搞不定,这时候你可以借此开展刷机业务。还有iOS的越狱,这个需要你对iOS的操作非常熟悉。你可以将此业务挂到淘宝上,帮助买家实现他们要的功能。
06
做黑客
黑入银行,盗取前女友现任老公的所有钱,哈哈,开玩笑了。不过,做一名优秀的计算机黑客确实可以帮你赚取很大一笔收入,比如帮助一些企业提高计算机网络的安全性、做一些抵御攻击的积极措施等。
07
写评测
DevStore专门收集各种开发者评测,开发者花几个小时测试下,如果文笔好的话可以大赚一笔,一篇评测600以上吧。
08
兼职论坛大神
各种开发者论坛会专门聘请一些大神,专门回复论坛各种小白问题,提高论坛的专业度。
09
做网站、博客
没事写个博客,整个论坛,招几个编辑帮你维护着。平时在编程过程中有什么心得感悟什么的都写下来,不知不觉网站流量就上来了,你就可以收广告钱了。
㈦ 程序员分前端与后端,那么后端程序员都做些什么看完就知道了
我刚开始做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++高级工程师学习路线图:
㈧ 一个程序员的创业经历(二)
第一段创业经历以最终失败被金融机构收购结束,之后进到金融机构又待了一段时间,但终究是适应不了比较慢的工作节奏和部门间互相推诿的办事风格,最终带领技术团队出来开始了第二次的创业。
这一次是当时比较火爆的数字资产交易所,比特币从800人民币一路疯涨最高到2万美金,让很多投机客或者梦想着一夜暴富的人们蜂拥而入,这次的创始人曹操(化名)也一样是先找到了启动资金,而且作为证券出身的他手上有很多优质潜在客户,万事俱备只欠东风,就差系统上线,让大家开始交易了。技术核心团队在一起很长时间了,所以配合比较顺畅,基于过往项目的积累,一个月的时间第一版系统就上线公测了,而且虽然没有很多,但预期的潜在客户已经开始过来交易了,也就是平台开始有收入了,虽然还远不能cover团队开销。
这次公司的股东组成很简单,创始人占绝对的控股权,有一两个自然人股东,但股份很少,还有就是技术团队有几个点的干股作为将来的股权激励,这就极大地减少了股东间的矛盾可能带来的风险。而且相较于互联网金融的平台,内存撮合引擎的交易所在技术上的挑战显然更大,对团队成员技术上的成长也有好处。
借着比特币的东风,业务也在风风火火的开展,而且也避开了之前创业遇到的一些坑,所以这次公司规模发展的更大,业务也有不错的成绩。但这次又遇到了新的问题,最先暴露出来的就是团队素质的问题,虽然这次团队组成没有变成技术团队“一家独大”的情况,但是运营和市场团队的早期成员都是曹操亲自面试挑选,而他对候选人的挑选太过片面,重经历而不是能力,甚至对简历上的经历都没有深入了解就轻易的招聘进来委以重任,并且在一些重要岗位上有些任人唯亲而非任人唯贤。在最初期时,在他一个人还能hold住大小事务,别人只是执行他的命令时还可以,但当业务慢慢发展,需要那些身处要职的人担当大任时,那些人的能力及职业操守的短板暴露无遗。项目管理混乱不堪,市场拓展进展缓慢,运营活动没有效果,而最严重的是业务人员账目不清,很多不合规的随意操作都埋下了祸根。
而在技术团队的管理上我也犯了不少错误,首先就是对需求的把控,之前的创业经历让我认识到技术最重要还是要服务于公司的核心业务,但这次有些矫枉过正的感觉,因为需求的优先级主要参考业务部门的反馈和要求,但是慢慢发现业务部门的需求是随时在变的而且会有那种刚上线新需求不就又要回滚到旧版本的情况,不仅浪费时间,而且也消磨了开发人员的积极性。
还有就是团队的扩充,在业务向好的时候,总是会有一个业务会越来越好,人员越来越不够用的预期,就开始扩充团队,在每一个岗上都至少招了两个人,但有些需求是阶段性的,很快就出现了人力过剩的情况,不仅虚耗成本,而且每天还要想着安排非必须的工作。
另外就是在团队管理上,不要总盯着那些闲下来的员工,要以团队的效率为指标,某些员工某些时刻适当的空挡,并不代表会影响团队效率,反而是每个员工所有时间都满负荷运转时会导致未100%完成的任务(即“库存”)的堆积,所以作为一个leader,要关注的是闲置工作,而不是闲置人员。
最后就是薪酬了,由于团队在一起时间比较久,共同经历了很多艰难时期也熬过很多次夜,总畅想着收获果实的一天,结果就是一直跟大家画饼。终于业务上有起色,有了钱,就大幅的给核心人员涨薪,最高的甚至涨幅70%,其实当时我们的薪资虽然不高,但也能到一个平均水平吧,而且也基本满足了员工入职时的心理预期。这种不理智的涨薪最终导致了两个后果,老员工的胃口被吊起来了,觉得公司赚钱了,会对薪酬有更高的期待;还有就是留给招揽外部人员的预算被大幅消减,这是不健康的操作,一个团队不管感情多好,适当的换血有助于保持活力,而且要不断招揽更优秀的人才提升团队。涨薪容易降薪难,在之后公司资金压力比较大的时候,这次涨薪成为压死骆驼的最后一根稻草。
不管怎样,这次创业相较于上一次更进一步,所以也看到了新的问题,在业务蒸蒸日上的时候,CEO曹操的心态发生了明显的变化,开始有些志得意满,表现出一些自负和刚愎自用,一些决策和财务开始越来越不透明,只安排他最亲近的人帮他做事。而那些赚到了钱的业务员也开始挥霍,每次出差都买各种奢侈品,谈业务也开始夸夸其谈,整个团队和公司开始变得浮躁,没有人去注意表面之下的风险,也不再开拓之前说好的那些比较稳妥但利润比较低的技术开发型的业务,所以在那个时候,经过再三考虑我提出了离职。
我答应有一段时间的交接期,但最终由于业务人员的不规范,以及风控未能跟上业务的发展,导致了挤兑风险,在我离开之前资金链一下子就断裂了,团队不得不解散,曹操还因此背下了不少债。
每一段经历都会给我们留下些思考,并不一定都是失败的教训,也会有一些好的经验,其实无论是在大公司还是创业公司,对自己来说一定要保持一个学习和成长,有可能是技术上的,也有可能是其他方面更综合的素质,这次复盘总结,值得坚持或者好的经验有:
1. 在团队管理上更加成熟,不只是关注技术和需求,也会关注效率和成本,尤其是在团队的持续发展上积累了不少宝贵的经验,作为一个团队leader不能太感情用事,要清楚自己的职责所在,而且一定要成为一个被自己团队成员信赖的领导,这并不代表要很nice的对每一个人,但对自己团队的每一个成员要真心负责,必要时一定要“护犊子”;
2. 在公司发展过程中曾有一些非常有经验的前国企总裁级别的股东加入,在接触的过程中学习到了很多管理和商业相关的知识,极大扩展了自己的眼界,不再局限于一个程序员的视角看问题;
3. 借这次创业机会开拓了国际视野,东南亚、中东、韩国、欧洲等都有过商务沟通,虽然未能有国际业务落地,但了解到了不同国家的一些国情和项目,开拓了眼界;
4. 在任何时候都要保持住本心,尤其是在看似成功的时候,更要能冷静客观的审视自己,不要被一时的成绩冲昏头脑,创业是一个长期且艰难的事情。
当然,最后这次创业依然以失败结局,成功的公司都有类似的地方,但失败的公司原因就各种各样了,这次最大的感受就是整个团队没有准备好或者没有足够的能力去做我们从事的事情,当业务快速发展的时候,能力或团队配置的缺陷导致了风险的发生,所以无论是对大公司还是创业团队,找到合适、专业的人才才是首要解决的问题,而且永远记住,即使个人能力再强,也无法把所有事情做好,不要把自己的上限变成团队的天花板。
㈨ 程序员的工作内容
程序员的工作内容包括程序的开发以及程序的维护。