<a>基本信息</a>
姓名:<a>姚朝文</a> 毕业时间:<a>2010</a>
性别:<a>男</a> 工作年限:<a>5年</a>
年龄:<a>28</a> 手机号码:<a>15994671505</a>
学历:<a>大专</a> 个人邮箱:<a>312433699@qq.com</a>
专业:<a>软件技术</a>
个人荣誉:<a>荣获2010年“国信蓝点杯”全国软件专业人才设计与开发大赛总决赛JAVA软件开发高职高专组一等奖</a>
<a>专业技能</a>
能熟练使用objective-c语言进行开发;
熟悉常用的设计模式,如单例设计模式、生产者模式、观察者模式、外观械、责任链模式装饰模式等;
熟悉App Store上架流程,有过一款以上的App上架经验(从申请证书->App上架);
熟悉即时通讯的工作原理,能独立实施即时通讯的解决方案(非XMPP实现);曾因项目需要,进行过即时通讯解决方案的验证,并最终在项目中应用,iOS客户端以及IM服务器的实现都由自己独立完成;
精通Socket编程,能熟练使用AsyncSocket进行Socket编程,曾使用AsyncSocket完成即时通讯相关功能;
熟悉多线程,能使用GCD完成多线程任务;
熟悉蓝牙技术,能使用CoreBluetooth进行蓝牙编程,曾做小程序验证过相关技术;
能熟练使用CoreData操作sqlite数据库;
能熟练使用iOS的布局技术,绝对布局与相对布局(AutoLayout);
能熟练使用xcode提供的可视化控件,并且在项目开发过程中优先使用可视化布局;
能快速集成一些常用的第三方服务,如百度地图、百度/极光推送、友盟分享等;
能熟练使用一些常用的第三方库,如GPUImage、AFNetworking、CocoaAsyncSocket、Masonry、FDTemplateLayoutCell、FMDB、MJExtension、MJRefresh、等;
理解MVC设计原则,并在开发过程中,通过实体代码隔离、业务逻辑隔离、更深层次的抽象等手段来遵循该原则;
能熟练地使用各种编程辅助手段或工具来提高工作效率,如使用CocoaPods管理项目类库;使用各种xocde插件;使用JSON Edit、jumpcut、RulerSwift、sip等辅助工具;
有多个项目架构搭建经验,包括项目目录组织、代码规范、CocoaPods配置、模块划分等。
<a>WEB后端开发</a>
掌握java语言基础,能熟练使用java语言开发;
熟悉面向对象的基本概念和开发方法,并将其体现在真正的开发过程中,运用面向对象的思维来思考问题、解决问题;
熟悉常用的设计模式,如单例设计模式、生产者模式、观察者模式、外观械、责任链模式装饰模式等;
能熟练使用基于SpringMVC+mybatis+mysql架构的开发技术,能熟练地使用SpringMVC提供基于REST的服务;
熟悉JSP、servlet、structs、hibernate、spring等web技术,在工作中使用过相关的编程技术进行开发;
熟悉基于JUnit4+mockito单元测试的编写;
熟练使用Maven进行项目管理,曾使用过Nexus搭建Maven私服;
熟悉java web的开发流程,能在实际工作过程中快速使用各种技术;
熟悉mina框架,曾基于mina实现过IM服务器的功能;能使用Jenkins+Maven+VisualSVN+Tomcat搭建项目开发环境,实现项目的持续集成与自动化构建;
在项目开发中接触过基于nginx的集群技术,可以使用它实施简单的集群功能;
熟悉视频直播概念和原理,曾进行过基于“RTMP+ffmpeg+LFLiveKit+kxmovie”的视频直播技术验证,提供过切实的视频直播解决方案。
<a>WEB前端开发</a>
熟悉css+div+html布局技术,可以进行相关技术功能代码的维护,可以完成一般难度的开发任务;
熟悉javascript脚本语言,能维护相关功能代码,可以完成一般难度的开发任务,在工作中使用过相关技术进行开发;
熟悉基于angular+bootstrap+require的开发流程,可以进行相关技术功能代码的维护,可以完成一般难度的开发任务;能快速搭建基于yeoman+grunt+bower的自动化构建环境。
<a>数据库技术</a>
熟悉主流数据库的基本原理和概念;
mysql:能能熟练使用SQL语句操作数据库;
mongodb:使用过mongodb作为文件服务器;能使用MongoTemplate进行数据库的基本操作;能将mongodb快速集成到SpringMVC中;
redis:在项目中使用过redis来作为缓存服务器;能使用RedisTemplate进行数据库的基本操作;能将redis快速集成到SpringMVC中;
sqlite:用作iOS开发中的本地数据库,能使用FMDB和CoreData进行基本的数据库操作。
<a>项目管理</a>
熟悉敏捷开发流程,能根据项目和团队的需要,适当地使用敏捷开发提供的实践方法进行项目和团队的管理;
曾经担任过项目经理,有过多个项目管理经验,全程参与项目立项、前期准备、需求分析、详细设计、组建团队、构建项目、测试、项目部署、项目交付等过程;有过20人以上的团队开发和管理经验;
曾担任过iOS部门主管,参与过项目谈判、项目跟踪、团队建设、技术验证等相关工作。
<a>其他</a>
<a>svn:</a>熟悉svn的基本概念和使用场景,能在实际开发中搭建svn服务器、初始化代码仓库、分配用户和权限、打标签/分支等;
<a>linux:</a>熟悉linux系统,可以在linux系统下安装/卸载程序、开启/关闭服务、部署项目等;可以使用一些linux常用的命令;
网络技术:熟悉网络的工作原理和基本概念,如网络类型、IP地址、网络协议、路由技术、防火墙技术、加密与解决、证书签名、C/S和B/S架构等,可以更好地配合开发工作;<a>编程语言:</a>曾在大学期间学习过汇编、C、Delphi、C#、asp.net,正是由于这些基础,所以现在切换到任意的编程语言,都能快速上手;
<a>辅助工具:</a>能使用大量的辅助工具来配合开发,如Axure、SimpleMind、WinSCP、putty、Evernote、notepad++、tortoiseSVN、CornerStone、Navicat Data Modeler、sketch、PaintCode等。
<a>工作经历</a>
<a>2014年6月-2016年11月:在“深圳市浩翰星河科技有限公司”担任iOS部门经理,期间参与的项目有:</a>
<a>浣熊家(客户端):</a>
这是一款互联网家装的App,针对的是广大客户,该App的主要功能有即时通讯、装修套餐展示、用户下单、施工进度查看、施工内容查看、施工过程协调、后期维修订单管理等。
在该App中,担任项目经理的职位,主要参与需求分析、详细设计、开发环境配置、项目跟踪和管理等工作,没有参与实际功能的开发。
该项目的开发团队在15人以上,开发周期为9个月(不包括后期维护),该App目前已经上架。<a>浣熊师傅(工人端):</a>
这是一款互联家装的App,针对的是参与装修的工作人员,该App设置有多种角色(如项目经理、业务经理、项目监理、工长、工人等),App所展示的内容根据不同角色而不同;
该App的主要功能有即时通讯、日程管理、移动签到、每日任务、抢单中心、项目管理、工作汇报等。
在该App中,担任项目经理的职位,除了参与需求分析、详细设计、开发环境配置、项目跟踪和管理等工作之外,也参与了实际功能的开发,如即时通讯、日程管理、移动签到、每日任务、工作汇报等。
该项目的开发团队在15人以上,开发周期为9个月(不包括后期维护),该App目前已上架。<a>微讯移动办公:</a>
这是一款移动办公产品,针对公司内部员工使用,该产品的主要功能有即时通讯、通讯录、移动签到、组织架构、移动CRM、工作请示、日程管理、工作报告等。
在该App中,参与了即时通讯、通讯录、移动签到、工作请求、日程管理等模块的需求分析、详细设计与实际开发。
该项目的开发团队在10人以上,开发周期为12个月(不包括后期维护),该App目前还没有上架。<a>微讯制造:</a>
这是一款用于工厂生产流程辅助应用,用于跟踪订单生产过程中的各个环节。该应用主要功能有即时通讯、通讯录、流程模板、流程管理、订单管理、客户管理、产品管理、权限管理等。
在该App中,参与了即时通讯、通讯录、流程模板、流程管理、订单管理等功能开发。
该项目的开发团队为7人,开发周期为5个月,该App目前还没有上架。<a>习酒配送:</a>
这是一款为习酒经销商订单配送员使用的辅助工具,方便总公司跟踪商品的流向,该应用主要功能是订单管理和扫码交货,该项目由自己独立完成,历时5天;<a>砼车通:</a>
该项目是关于建筑物料用车的调度系统,用于解决目前车辆管理紊乱,车辆使用低效的困境。系统初步要实现的功能主要是车辆信息管理、司机信息管理、派遣车辆位置共享、车辆出勤情况等;在该项目中,参与前期的项目洽谈、需求调研、项目实施方案等工作;
<a>重要收获:</a>
从java开发顺利转入iOS开发的经历让我明白,自己可以突破语言和工具的界限,从而能关注更重要的东西——业务,语言和工具最终都要为业务服务。
另一方面,除了在iOS技术上的提升外,参与并管理团队,也让之前积累的一些,关于管理的想法和方法能得到验证,尽管过程没有那么理想,但经验却是丰富的,也让我更加坚信自己可以胜任这类工作。
还有,团队开发的经历,让我重要认识,在软件开发中真正影响项目成败的风险因素——人。
<a>辞职原因:</a>
对于充满激情的人来说,无处发挥其才能,是件很尴尬的事情。在做完两个项目之后,公司有关App方面业务就很少了,在经历了3个多月的空档期之后,觉得需要改变了。没能为公司持续地创造价值,就像寄生虫一样,使我感觉很惭愧;另外,对于自身来说,没有实实在在的工作,心里感到很不踏实,成长也受到了限制;再加上,最近互联网技术公司持续低迷,该公司也是其中一员,经营压力很大;最终,经过与上级领导的友好沟通,离开了该公司。
<a>2012年9月-2014年5月在“中软国际”担任java程序员,主要参与华为外包业务,期间参与的项目有:</a>
- <a>单板管理系统:</a>
这是一款针对华为硬件生产部门的单板管理系统,主要的功能是管理生产过程中的相关文档(如需求文档、设计文档、说明书等),以及跟踪生产过程中的变更、缺陷、测试等。
该系统是在jira的基础上做二次开发,因此,在实际开发过程中,参与的大多数工作都是了解jira的工作原理和核心配置。在jira的基础上,我参与开发的模块有项目管理、需求管理、缺陷管理等。
在这期间,由于开发任务没有太多的压力,这也让我有机会去了解更多关于管理上的知识,其中最重要的是关于敏捷开发的一些编程思想和实践方法,比如例会的开展、代码审查、结对编程、知识分享、持续集成、自动化构建、测试驱动开发等,正是基于这些,让我在工作后半段能顺利组长的工作。
该项目的开发团队在6人以上,开发周期在18个月左右。
<a>重要收获:</a>
在此期间,编程技术上的细节没有太多深入,更大的提升是在编程思想上,比如MVC模式、热拨插式开发、测试驱动开发、持续集成、自动化开发等,这深深影响着之后的职业生涯,让我更加侧重于高层设计,逃离编程细节,真正学以致用,让业务选择解决方案,而非让业务适应解决方案。
另一方面,影响比较深的是华为的一些管理实践,比如如何更好的规避风险、如果更好的提高团队的沟通效率、从哪些方面提高代码的质量、如何协调多部门开发等,
<a>辞职原因:</a>
在该公司的后期工作中,逐渐认识到当前的工作,已经没有挑战性了,也失去了激情,感觉遇到了瓶颈,觉得是时候要去突破了。虽然,在考虑辞职之前,针对突破瓶颈做了不少尝试,但行不通;最终,我认识到,没有什么比找一份更有挑战性的工作更直接。
<a>2011年4月-2012年8月在“南宁巨鹿软件科技有限公司”担任java程序员,期间参与的项目有:</a>
<a>南宁成人教育门户网站:</a>
该网站的主要功能有查询成人教育学校信息(学校基本概况、招生情况等)、在线报名、在线咨询、后台信息管理等。
该项目的开发工作由自己独立完成,美工方面则由别一位成员负责。该项目的开发周期为10个月;由于经营原因,该网站目前已下线。
在此期间,使用到的开发技术主要是struts、JSP、css+div+html、javascript等;另外,出于项目需求,也接触到了SEO优化、市场营销等一些知识。<a>其他工作:</a>
在此期间,参与过多个项目谈判、需求分析等工作,如”南宁市武鸣县生力军生态农庄“园内管理系统的项目洽谈;”南宁市同城小鸟“前期需求讨论;这些也是一笔宝贵的经验,影响着日后的工作倾向。
<a>重要收获:</a>
一年多的工作经历,让我深深认识到,要把项目做好,仅仅关注技术层面的东西是远远不够的,随着技术越来越先进,在商业软件中,技术因素已经不是制约项目成败的最主要因素,因此要学会突破技术的限制,真正关注影响项目成败的主要因素。随着技术越来越成熟,只要了解编程原理,从一门技术切换到另一门技术也是非常简单的事情。
<a>辞职原因:</a>
对于刚毕业的新人,需要找一个经验丰富的团队,那样才更利于的成长,也才更有挑战性;另外考虑到自身水平不足,公司团队的技术水平不高,经验不多,最后经过再三考虑,决定友好地离开。
<a>业余项目</a>
<a>旗鱼(即时通讯解决方案验证):</a>
公司的项目中经常需要使用到即时通讯技术,而之前的即时通讯解决方案基于XMPP,由于XMPP可定制性比较差,缺乏灵活性,而且对群组的支持异常困难,更别说要在即时通讯里集成项目的业务逻辑。因此,要针对即时通讯提供一个完善的解决方案,并进行验证,然后在项目中引入。该项目除了前期的解决方案讨论,后续实现都有自己独立完成,包括iOS端和服务器端代码,历时1个月;
服务器:nginx(用作集群)、mina(主要用于管理socket中的session)、SpringMVC+mybitas(数据接口服务)等;
客户端(iOS):CoreData、AFNetworking、AsynSocket等;
数据库:mysql(存在基本信息)、redis(存在缓存信息)、mongodb(存在文件)。<a>Scribble(即兴):</a>
这是一个画板应用,主要是为了学习CoreGraphis框架。该应用拥有基础的功能,如新建画板、保存作品、打开作品、调用画笔大小和颜色、撤销和反撤销功能、画布(未实现)等;主要使用的技术的CoreGraphis。<a>HHXHLiveOfLife(视频直播技术验证):</a>
这是为了应对客户的需求而作的技术验证,用于在项目接洽时候作演示。最终通过基于RTMP+ffmpeg+LFLiveKit+kxmovie等技术,提供了一个视频直播的解决方案,能通过自己的服务器,在多台手机(不同系统)间实现一方直播,多方收看。服务器与iOS客户端环境的搭建与代码的编写都由自己独立完成。我知道,这只是最基础的实现,要真正达到商业标准,要深入的细节会相当多。
<a>自学经历</a>
<a>iOS:</a>从“中软件国际”辞职后,自己花了2个月的时间来研究iOS技术,之后顺利转入了iOS开发。
<a>即时通讯:</a>在“深圳市浩翰星河科技有限公司”期间,出于项目需要,自行研究了即时通讯的整体解决方案,并将其应该到项目中去。
<a>swift:</a>鉴于该技术还比较新,更新比较频繁,因此,只对其语法及一些特性进行学习,还没有达到能在项目中使用的程度。
<a>Angular+Bootstrap+Require:</a>在研究即时通讯的过程中,为了完成IM服务器管理后台的功能(如用户管理、群组管理等基本功能),利用工作之余,完成了它们的入门学习,并且使用它们完成了管理后台功能的开发。
<a>平时阅读的一些非技术书籍:</a>《代码大全》、《程序员修炼三部曲》、《高效程序员的45个习惯》、《程序的员思维修炼》、《管理的实践》、《管理:任务、责任、实践》、《用户体验设计》等;学以致用,是我读书的宗旨,多看、多听、多思考、多实践、多总结。
<a>职业规划</a>
<a>主线(技术):</a>
<a>当前位置:</a>中-高级软件工程师;
能熟练地使用某些领域内的开发技术,可以完成该领域内的绝大部分业务工作,能做一些高难度的技术攻关,能作为团队的带头人,提供可靠的技术支持和经验分享;<a>未来几年:</a>中级软件架构师;
能完成中-大型项目(如工作量在1W人天以上)的架构设计,对性能、安全性、扩展性、可靠性等有充分的考虑,并能在项目中实施,能达到真正的商业级标准;
<a>支线(管理):</a>
<a>当前位置:</a>初级项目管理者;
能带领中小团队(如20人以下)做项目,能妥善地处理团队人际关系中产生的问题,如人员流动、团队冲突、个人工作态度等;能针对某些问题提出合适的解决方法,如工作效率低下、开发混乱、产品质量不达标、进度落后等;能够针对项目作出合理的计划,包括开发计划、人员-任务分配、进度跟踪、测试计划、变更计划、风险规避等;<a>未来几年:</a>高级项目管理者;
将合适的人放在合适的位置,充分必挥每个人的潜能;能通过各种方式去激发团队的凝聚力、创造力、积极性。
<a>个人评价</a>
<a>优势:</a>
<a>关于技术:</a>不让技术限制思想,要让技术为我所用;学以致用,才能够能体现出技术存在的根本价值;对于未接触过的技术能快速上手,并能快速应用到工作中去;
<a>关于管理:</a>关注情景,勇于创新,付诸实践,积累经验;管理是一种实践,要不断地将理论付诸行动;同时,管理需要灵活变通,需要对不同的情景加以区别对待;最后,管理需要总结,总结才是进步的关键;
<a>关于团队:</a>专业的工作态度,富有责任心,良好的职业素养;态度决定一切,只有每个人对项目、工作、事业都有一个专业的态度时,团队才会强大;
<a>关于性格:</a>精力旺盛,对挑战充满激情;只有激情才能激发人的无限潜能,只有激情才能持续不断地突破挑战;也只有激情能引导自己走向“疯狂”;
<a>关于创新:</a>无时无刻不改变,唯有变化是永恒;时刻关注变化,时刻准备创新。
<a>关于学习:</a>持续的学习是一种习惯,好奇心与激情将是它的动力。
<a>劣势:</a>
捕获各种知识的“网”撤得太大,往往会导致很难收回(缺乏深度);
爱走“捷径”,虽然很多时候都能带来工作效率的提升,但有时也免不了出现做事马虎的情况;
追求“完美”,然后没有什么是完美,因此,有时候会让自己在某些非关键性问题上花费过多精力。