分享

从业十余年回眸总结:做软件开发,想说爱你不容易

 漫步之心情 2018-09-19

一、个人从业经历

1、读书时期

我是千禧年千军万马过独木桥考上了大学(具体是哪一年,大家可以百度),专业是信息管理与信息系统,当时是比较吃香的“万金油”专业。我们学了一些与计算机软件相关的课程,比如操作系统、数据结构、数据库系统原理、C语言这些基础课程。

大学里面老师普遍没在企业上过班,缺乏实操经验,所以讲的课程不深入,大家学得也是云里雾里,估计现在也大致是这样的。

我们同学当时觉得理论课程学的心里都没底,所以好多热衷于动手操作,那时候大二花了大价钱买了一个台式机,要四千多,相当于现在八九千的东西,记得还装了金山打字通练习打字,学盲打,当然也装了侍魂、cs等游戏软件玩过。

后面在大三大四的时候有个课程叫信息系统分析与设计,需要做大作业,我们自学了一点VB6.0、DELPHI 6、ASP、还有MS SQL Server 2000数据库。当时DELPHI这个C/S结构的编程工具比较流行,做GUI的界面开发非常快,所以用它做了蛮多小案例。

后面辛苦了半年考上研读研,浑浑噩噩过了2年多,自学了一点点Java和JSP,那时候Java是JDK1.4,JDK1.5的版本,看了一些相关的软件工程书籍,编程水平感觉没有大的提升。期间用JSP和SQLSERVER2000给学校档案馆做了一个毕业生档案转递管理系统,用最原始的记事本写代码,命令行编译执行,赚了点生活费。

2、工作前几年

参加工作后,先后在国企、私企等单位做过开发工程师、研发项目经理、技术经理、研发经理等职位。

工作前两年还用Delphi开发过进销存系统,用ASP做过网页,也做过一点.net的项目。不过慢慢的Delphi、ASP都被淘汰了,没人用了,.net后面也渐渐用的人越来越少。后面主要使用Java做开发,J2EE很流行。工作过程中也学会使用开发工具比如Eclipse、MyEClipse2008,使用了Java开发框架Struts1.1,SSH等。

做运营商的系统开发运维时也接触了Unix和linux操作系统以及Oracle数据库,这时候才感觉自己稍微学到了一点东西,有了点技术。

不过,很多时候都是现学现卖,没有办法,工作过程中需要什么就学什么,只有这样才能一路走下来。比如之前公司要搞一个医疗器械进销存产品来卖,从重庆的公司买了一个PB的进销存软件让我来修改和维护,虽然没搞过PB,我还是硬着头皮买了一本PB的书,边学PB边改程序,改好了打包成了公司自己的产品。

2014年左右是移动互联网爆发的时候,那时候可谓是全民要搞APP,开始流行互联网创业,到处都是要找做安卓和IOS的工程师,做安卓和IOS的工程师工资也很高。当时我的工作没有要求做APP开发,但是还是逼着自己安装了ADT插件和Genymotion模拟器一步一步调试代码,花了大半年业余时间学会了安卓开发,现在在工作中也用到了。

3、现在与未来

现在的公司主要是使用SSM开发框架,数据库一般选择MySQL,APP开发有用安卓做的,也有用基于H5的Web APP开发方式。基于H5的可以兼容打包为安卓APP和IOS APP。我们选择的是HBuilder开发工具,已经用了快三年了,有了好多款APP应用上架发布。

目前比较流行微服务架构,所以我也在自学Spring Boot和Spring Cloud,下载了STS工具有时间就看着电子书边敲代码,而且Java 8已经成为了主流,所以Java8有很多之前版本没有的特性,如方法引用、流API操作、Lambda表达式、函数接口,也在自学和掌握中,在不久的工作和项目中可能会马上使用。

所以,做软件开发,学习的路途上任重而道远。

二、是否选择做软件开发

软件开发行业作为一类职业,没有好与坏之分,只有适合不适合自己,自己愿意不愿意坚持做这一行。我的大学同学中有90%最后没有做软件开发这一行,剩下的几个人一直做这一行也做得不错,毕竟这一行虽然加班多,技术更新快,但是工资待遇还是不错的,买房买车都完成了。

也有同学做了几年软件开发,比如用ASP写程序写了几年,后面转行去做销售或者公务员了,因为技术更新太快,没更新自己的技术技能,过两年就可能很难找到适合自己的工作岗位了,无奈只能转行。最让我觉得不敢相信的是我大学宿舍的下铺,他读书时技术学的不错,编写代码的动手能力也很强,但是毕业后没有选择做软件开发,一直做化工产品的销售,现在在广州也做得不错,所以说职业选择很难说。

也有人说做软件开发是吃青春饭,到了35岁就要转行了,很多网上都有这种吐槽讨论,我个人认为这也不全对,其实这也是一个正常的技术和能力更新的问题,35岁了会要求工资待遇高,还要照顾家庭小孩,不能加班多,如果能力和精力匹配不了岗位要求,自然会慢慢适应不了,其他行业也是如此。

我个人在工作中发现,每个IT企业对于优秀的研发项目经理都是稀缺的,即懂技术,又能跟客户和领导沟通,还会写文档,带团队,写代码也比较溜,这类人才只有上了30多岁的年纪才能具备,为什么我们不能成为这样的人才呢?

三、软件开发的岗位选择

有些人认为,软件开发行业就是做代码开发,其实不然,还有很多相关的角色岗位,就拿代码开发来说如果细分还分为前端开发、后台开发、数据库开发、APP开发等,只是一般小公司为了节约人力成本,不会分那么细而已,他们需要的是啥都会的全栈工程师。根据CMMI的标准,我大致罗列一下软件开发行业的岗位角色供大家参考。

研发经理

(1)负责技术产品的规划管理, 团队建设

(2)负责立项审批、总体计划审批

(2) 负责项目里程碑决策

(3) 负责变更审批

(4) 负责详细计划审批

(5) 参与设计评审

研发项目经理

(1) 负责立项申请

(2) 负责总体计划编制

(3) 负责详细计划编制

(4) 负责里程碑/阶段总结

(5) 负责项目监控、风险识别与跟踪

(6) 组织及参与项目评审

(7) 协助客户试运行

(8) 负责客户总体验收

(9) 负责项目资料移交

(10) 组织项目里程碑决策

(11) 提交变更申请

(12) 参与变更审批

(13) 负责项目团队管理

(14) 负责项目度量分析

系统架构师

(1) 负责总体设计方案的编制,包括软硬件开发技术选择,系统架构,关键技术攻关等

(2) 负责组织并指导相关人员对软件、硬件、结构、接口、数据库进行详细设计

(3) 参与预研、设计及技术过程产物评审

(4) 组织软件工程师进行代码评审工作

产品经理

(1) 负责产品定位、产品规划和产品演进

(2) 组织市场和用户需求调研及分析

(3) 负责可行性分析

(4) 组织产品需求转化

(5) 负责产品需求评审及解读

(6) 对需求的优先级别进行排序,配合制定项目计划

(7) 组织提供需求开发技能培训、产品需求业务培训

(8) 负责产品版本的正式发布及培训演示

需求工程师

(1) 负责客户需求调研及需求分析

(2) 负责软件需求文档的编写和更新

(3) 负责根据需求做原型界面设计

(4) 对需求的优先级别进行排序,配合制定项目计划

(5) 组织提供需求开发技能培训、产品需求业务培训

(6) 进行内部演示验收,反馈意见,提出需求新增及变更的申请

(7) 负责现场客户的技术支持和培训

(8) 负责客户使用手册的编写和整理

(9) 与产品经理的职责区别:产品经理负责客户需求的调研、编写、评审、解读以及整体的需求管理和客户对接工作,需求工程师直接负责具体的软件需求(产品需求)的调研、编写、分析、评审、解读,编写用户使用手册等,后者协助前者完成其它整体的需求管理工作。

软件工程师

(1) 负责编写系统设计说明书

(2) 负责编码及单元测试脚本编写

(3) 参与代码走查

(4) 负责开发自测

(5) 负责缺陷修复

(6) 负责安装维护手册等文档编写

(7) 参与项目评审

测试工程师

(1) 负责测试方案编制

(2) 负责测试用例编写

(3) 负责测试执行

(4) 负责测试报告编制

(5) 负责缺陷管理

(6) 参与需求跟踪参与项目评审

UI工程师(美工)

(1) 项目原型效果设计

(2) 项目视觉原型设计

(3) 用户体验优化

技术支持工程师(或者实施工程师)

(1) 参与客户需求调研

(2) 协助完成客户需求确认

(3) 客户支持文档编制

(4) 客户使用培训

(5) 日常客户技术支持(现场或远程)

(6) 协助客户试运行

(7) 协助客户验收

配置管理工程师

(1) 负责配置管理计划制定

(2) 负责配置库创建及权限分配

(3) 负责变更控制管理

(4) 负责基线建立与跟踪

质量保证工程师

(1) 负责QA计划制定

(2) 负责过程与工作产品检查

(3) 负责QA检查问题记录与跟踪

关于岗位的选择,也没有固定的标准,不同的岗位责任和要求不一样,有人做了2年实施,发现自己不愿意出差不愿意跟客户打交道,所以转做开发写代码,有人写代码写了几年,觉得天天对着电脑,没啥乐趣,所以申请去做产品经理,负责项目需求和策划等。

我本人参加工作后编写了2年代码,后面转做产品经理折腾了1-2年,感觉也没做出啥成就来,后面还是去开发项目经理,后面一路这么走,慢慢提高自己。

所以,只有适合自己的岗位才是好的岗位。

四、怎样学好软件开发

1、鼓励自学

大家从我的从业经历中也会体会到,我是在不断自学各类编程语言和工具,首先是读书期间有老师引进了门,以后怎么修行都在我自身,所以鼓励大家根据自己的兴趣爱好自学。当然不是盲目的学,是要根据自身的行业和工作需要学,要根据流行发展趋势来学,比如你不能再抱着已经过时的DELPHI工具来学。

现在网上很多资料和视频电子教程,遇到好的就收藏起来,慢慢看,主要是因为我们做这一行,关系到我们的饭碗,所以逼着自己每周花点时间去学去练很有必要。

2、有条件选择培训

现在各大城市有很多IT培训机构,培训JAVA/.net/PHP等编程开发技术,很多还鼓吹培训后可以获得高薪,这里说明一下,做软件开发这一行是有获得高薪的,一般都是在BAT、华为等大型公司,他们公司赚了钱,也舍得花钱请厉害的人来做事,从而总体工资奖金水平比一般的IT企业高出不少。而在我们三线城市,做传统IT也就是一般般的工作,待遇也一般,说白了,企业赚不到钱,怎么会给员工发高工资呢。

参加IT培训的费用也比较多,至少一万多吧,如果你不确定是否爱好这一行,你还是先自学一下,了解一点点基础的东西,看看自己有没有耐心做下去。当然了,如果你下了恒心,一定要坚持做下去,毕竟大家都是慢慢的在这个行业做起来的,不是一步登天的。

我个人不反对去参加培训学习软件开发,确实可以让一个门外汉,尽快入门,但也得靠个人的努力,如果你培训的时候只是去听一听课,不敲代码不调试代码,那你无论如何也学不好软件开发编程。正常的情况是白天上课,晚上敲代码,做练习,总结推敲,完成一项一项的小作业,小案例,技术能力和自信也就慢慢来了,就业也就不担心了。

只有耐心和坚持才能做好软件开发,要少打游戏和少玩手机。

最后总结两句话勉励自己:

(1)做软件开发,想说爱你不容易;

(2)路漫漫其修远兮 吾将上下而求索。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多