一位准程序员对软件行业的8个问题

发表于2016-03-29
评论0 2.2k浏览
  前言:本文源自@原数据 的一位学生发给他的私信。这些问题在在校生中很有代表性(见下文)。随后还有几位微博网友(@哲学家灰太郎、@偷懒是必须的)针对这些问题,给出了自己的回答。本文把这些回答综合在一起。
  我是东北师范大学软件工程专业的大学生,马上会读大二。在一年的学习中,我也解了不少疑惑,但还是有一些问题,盘留在心中,想请老师帮帮忙,解答一下。谢谢!问题如下:
1、软件从业人员主要从事哪些行业?
2、软件从业人员的个人职业生涯,在不同的年龄阶段是怎样的?
3、软件从业人员的学历与职位关系如何?
4、软件从业人员的工作强度如何?
5、软件从业人员的什么素质是必须的?
6、对于一些计算机专业的大学生,大学阶段该学啥?
7、中国的软件行业前景如何?未来将会怎样发展?
8、目前来看,学哪种语言,更好?
  这是我一年来留在心中的疑惑,在我目前这个阶段,我希望知晓这些,为了我将来的发展。谢谢老师!老师如果忙,可以选择性回答。


一、@原数据 的回复:
1、软件从业人员主要从属哪些行业?
  软件业从服务对象来看,主要分为两大类:互联网行业、传统的软件制造业;
  互联网行业主要是以研发自己的产品面向大众通过增值服务赚取利润,比如:淘宝,百度,腾讯等,互联网行业竞争十分激烈,技术要求高,因为一个很小的创新能够带来很大的回报,但投入很多血本无归的也不在少数。
  传统软件制造业主要面向企业,发展缓慢但比较稳定,这里面有的是有自己的产品比如:用友,金蝶。有的是通过设计开发解决方案方式为企业定制开发的,还有的是承接外包的方式(别人搞好设计你来实现)。
  可以看出他们的技术含量基本上:互联网 → 企业解决方案 → 一般的外包(但也不是说外包一定没有技术含量)
2、软件从业人员的个人职业生涯,在不同年龄阶段是怎样的?
  关于职业规划,一方面看个人兴趣,另一方面也要看公司提供的平台和机会。一般大企业都会分成技术路线和管理路线来培养员工的。
  技术路线:从初级软件工程师→软件工程师→高级软件工程师→资深软件工程师(架构师)→CTO,
  管理路线:可能在某个项目之后你会被提拔成组长→项目(产品)负责人→项目(产品)经理→部门经理→…
  恩,当然还有自己创业的。
3、软件从业人员的学历与职位关系如何?
  相信我学历很重要…等你出来就知道了。在大公司里,一般是看重学历的
4、软件从业人员的工作强度如何?
  搞软件是很辛苦的,加班赶上线是再正常不过的,不能吃苦就早点转行吧
5、软件从业人员的什么素质是必须的?
  关于素质,保持一刻好学的心,拥有一个良好的心态是很重要的,另外还要看你有多大决心做出多大的成就
6、对于一些计算机专业的大学生,大学阶段该学啥?
  当然是基本功了,数据结构,算法等。这些看似今后接触少的东西,却是今后能发挥大作用的内功心法。
  另一方面是掌握符合自己的学习方法,搞软件的最经常的就是要面临快速的技术更新,有快速的学习方法就能胜人一筹。另外,外语也非常非常重要的,比如你想到欧美企业,要想良好的沟通和交流,语言是必不可少的。
7、中国的软件行业前景如何?未来将会怎样发展?
  看太远也没用
8、目前来看,学哪种语言,更好?
  不要太在意学哪门语言,找自己的兴趣点最重要,掌握某一门语言后,触类旁通也不是难事。

二、@哲学家灰太郎 的回复:(以下主要针对国内环境来说,原回复发布在其个人博客)
1、软件从业人员主要从属哪些行业?
  软件人员从事的行业比较多,如电信、银行、政府、企业等等,,凡是用到信息化的 都需要软件从业人员。
  主要分为:开发的、维护的 二大类。。 比如去某个企业工作,那个企业主要是维护已经上线的系统。有的是专门为别人开发的。 不同行业要求不同。
  其中软件公司的开发要求高,软件公司中有分 开发产品的 和做项目的,开发产品的 已经有产品了,在原产品基础上扩展更新。而开发项目会接触到不同项目,不同技术。 因此 学生可以去软件公司,也可以去需要软件的企事业,政府机构。 或者自己开网站、做项目、产品 等等 也都可以。
2、软件从业人员的个人职业生涯,在不同年龄阶段是怎样的?
  在中国一般性认为,35以上基本很少开发了,多数是20到35 之间从事开发的多。 35 以后多数人走向管理。 不是这些人不能开发,反而经验多开发更好,主要是中国的现状 大家认为年纪大,思维不灵活,加班力不足等等,所以目前来说,高软件行业有部分吃青春饭的痕迹。
  一般学生出来,1-2年在公司 跟着其他人多学多做项目,打好基础,第3年是 开始自己开发实践,可以自己维护项目带项目。 3-5年 是发展期,技术和管理渐渐提高,渐渐走向设计,管理的层面多些。 5-8年,基本上已经做项目经理,部门经理或 资深的架构师、设计师。软件开发的坎 在 3、5、7 年。三个比较重要的阶段。
  因此我招人一般招2年以上实际工作经验的(要实际开发2年),要么就招毕业生,1年的属于鸡肋。
  因为教会一个毕业生开发 3个月就可以了。和1年的产出效果 差不多,有成本优势。
  进入公司想学的好,关键是那个带你的人很重要。比如我带人,如果你想学肯学踏实,那么我就多说,否则不会主动说的。比如说,我带的一个学生,开发的时候,教他开 发。他很努力,看看不错,于是在设计的时候,也拉他进来,告诉他如何设计,如何用axure 工具做好的原型,并教他如何用原型和客户交流。。因为这样能分担些我的任务,我也乐意,如果他不想,那么我不会勉强,宁可自己做,也不会说半点。
3、软件从业人员的学历和职位关系怎样?
  学历和职位基本上没啥关系,如果从事研究行业,如图像、数据挖掘等等,那么你最好是博士硕士,但计算机行业多半是应用科技行业。研究类少。  学历有用主要在二处:一,毕业刚进公司的时候 稍微有用, 二、做项目的时候给客户说我们有多少博士硕士。  其他情况企业主要看能力经验技术。工作经验超过5年以上,基本不太考虑学历,关键看能力。
  因此根本不必担心学历,本科就够了。
4、软件从业人员工作强度如何?
  目前工作强度相对来说 常加班也是有的。。特别是做项目。。但平时也有休闲。。这个不一定。。所谓忙的时候很忙,空的时候很空 都是有的。。和其他行业工作强度差不多。。全国一样。 都是压力山大。
5、软件从业人员什么素质是必须的?
 · 善于和团队沟通,和客户沟通,会沟通 是最关键的素质要求。
 · 日常礼貌素质,这在客户面前所表现出来的素质有联系。
 · 要善于思维、和学习方法论
 · 就是踏实、虚心、好学、肯干、巧干。–这是大家都喜欢的。
6、对于计算机专业的大学生,大学阶段该学些啥?
  目前的大学课程设置远远落后于发展,基本上来说,学而无用,或者是即使是新的课程,可是学不到东西。因为老师水平不行。计算机是门应用科学,靠的是实践。 学校老师没几个实践丰富的。而企业实践丰富的也当不了老师。
  于是学生和老师每年重复着同样的课题,课件。
  鉴于这样的情况,建议学生学习如下:一、把基础学好,特别是算法、设计模式、ip原理、操作系统等……这个还是可以在学校学好的。 二、掌握一门语言不一定以后用来开发,是要了解程序的精髓。一般选c++、lisp语言比较好。
 · 多了解市场科技发展情况,多浏览如开源论坛等等技术网站,了解动态。
 · 在学校要熟练学好基础工具,不要到上班后再学,如word,viso,UML,axure 、绘图工具等等。有人说,word 我会,你问他,如何把格式刷成自动编号的,估计他不会了。 这些工具 都是在项目中 用到 且必要的 。
 · 了解些管理工具,如 禅道、project2007 等等,
 · 注意方法的培养,培养解决的思维,而非实现的思维,遇到问题,首先考虑到多种解决方案。
 · 接下来 学习一门比较流行的语言 ,如java ,并自己实践一个自己的想法的小项目,修改维护一个开源小项目。会对自己有很好的提高。
 · 如果有实习机会 能够有经验 的人带 最好。。  我以前喜欢带人,可是所带的很少有踏实的,多数急功近利。恨不得一下子学会某一个开发,就能工作挣钱。   开发都可学会,但开发好的 却没几个。
7、中国行业前景如何?未来行业如何发展?
  目前移动互联网、物联网、电商、社区是最火的,未来这些方向可以考虑。 具体的参考各信息门户网站。
8、目前来看学哪种语言更好。
  没有哪种语言最好,只有看那些用的最多,这样你选择职业范围会多些,但也同样其他人也一样。
  一般学习 java 或c++、.Net 这三类国内用的最多,可以选一或二样专心学。其他php,c。实际上语言好学,做东西就难了,好比你用砖头搭个小房子可以,但建设个大楼则难了。
  开发不仅仅是学某个语言,还有包括许多思路,方法、工具等等,应该说是在建设某个系统或产品。是需要团队合作的,也许你是那个设计师。

三、@偷懒是必须的 的回复:
1、软件从业人员主要从事哪些行业?
  企业、政府机关、运营商的IT部门 — 做设备、网络、数据维护。 软件公司或者设备厂商 — 软件设计、开发
2、软件从业人员的个人职业生涯,在不同的年龄阶段是怎样的?
  行业不同情况不一样。 一开始几年一般是做开发和具体的技术,几年后会发生变动,一部分人转为技术管理, 一部分人继续做开发;还有的人干脆就转行了。(转行的占比估计有30%)
3、软件从业人员的学历与职位关系如何?
  没有人一工作就因为学历而有了不同的职位,例如不会因为你是博士,一工作就会变领导。 学历可能会决定一部分的定级,职业生涯的路线都是相同的。 工作两三年后,一般就是看个人的工作成绩而不是学历了。(大部分都记不住你是啥学校学历了)
4、软件从业人员的工作强度如何?
  在IT部门,强度一般不大,只有业务部署的时候有时需要凌晨处理比较麻烦。 在软件公司和设备厂商,刚刚开始的几年会比较累,不过混到一定年限,技术水平上升到一定程度 ,价值不体现在工作时间长短的时候,就可以比较拽的混吃等死了。
5、软件从业人员的什么素质是必须的?
  对技术一探究竟好奇心、学习能力、清晰的思路最为重要。 要是没有这些,不会成为顶尖的技术人员,只能混混。
6、对于一些计算机专业的大学生,大学阶段该学啥?
  隔行如隔山,你永远也不知道该学啥。因为计算机领域技术太广阔了。 最重要的是,基础学科一定要扎实,这样才能很快的将各类新技术融会贯通:算法、语言、计算机原理、操作系统这些都是最基础的。高数啥的一点用都没有。 多关注当前技术热点就行。如果自己对某个技术感兴趣也可以专研下去。
7、中国的软件行业前景如何?未来将会怎样发展?
  参见“黑客帝国”,人们越来越懒,设备越来越智能;人们也来越依赖虚拟,软件越做越复杂。这个就是未来
8、目前来看,学哪种语言,更好?
  语言和应用有关,看自己感兴趣什么样的技术方向。喜欢底层的,肯定是C,喜欢应用的,至少得看java啥的。

四、几个补充回复 
  虽然@哲学家灰太郎 在前面的回复已经很全面了,但这8个问题中,有些问题之前已有相应的文章
  软件从业人员的个人职业生涯,在不同的年龄阶段是怎样的?
  参考这两篇篇《寇卫东:话说程序员的职业生涯》、《分享8年开发经验,浅谈程序员职业规划》。在中国程序员的职业生涯中,前面也有其他朋友提到了,有人认为是吃青春饭(不像国外同行,35岁之后,仍旧可以在写代码),似乎35岁后还在写代码,会被人鄙夷,就必须转管理层。这个话题,以前在@程序员的那些事 微博上,专门讨论过,请看这里。


加入GAD的核心用户QQ群:484290331,各类活动奖励任你拿,最新资讯任你读,众多教学任你免费学,如此好地方赶紧加入吧!另VR专属群:476511561,专业VR技术分享,专业导师指导为你答疑解惑,大型小型活动奖励等你拿,免费学习赚奖励的天地,欢迎你加入哟!

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引