您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 如何成为一个优秀的软件工程师
如何成为一个优秀的软件工程师研发部:崔新雷大纲软件工程师的自我修养2软件工程师概述31企业眼中的优秀工程师33软件工程师定义:它是从事软件开发相关工作的人员的统称。包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位关于工程师工程师的各种角色用户经理业务分析师、咨询师系统架构师程序员测试员实施运维一味苦干技术专员体现创新一般工程师洞察力,全局观优秀工程师进步的阶梯我们的蓝图职业历程业内精英初入社会在校学生打好基础,提升自身能力勤奋踏实,积累工作经验发挥才干,实现人生理想你眼中的软件工程师IT码农?自由散漫、不修边幅的技术怪人?优秀的软件工程师得体的个人形象衣着整洁举止得体•扎实的技术能力–丰富的工程实践经验–强烈的自信心•严谨的工作作风–一切以事实和数据说话–工作有记录、有统计、有分析、有总结•对质量的高标准–质量从来都是设计和开发出来的–对自己的工作成果有强烈的自豪感和责任感•优秀的文档、演示和谈吐水平–良好的文档是正规研发流程中非常重要的环节–恰当的谈吐是获得认可的重要因素–演示能力是展示自身工作成果的主要机会软件工程师的成长之路面临的挑战•新技术层出不穷Ajax、SilverLight、MVC、Jquery….•新概念铺天盖地SOA、云计算、Web3.0、物联网、敏捷开发….•新诱惑迎面而来新的工作机会,高薪酬的诱惑….你是否听说过:程序员只能做到35岁软件行业技术更新太快,学到的技术很快过时在中国做技术没有前途,只有去做管理、销售…难道他们说的都是真的吗?软件工程师的成长之路常见的困惑软件工程师的成长之路如何实现可持续发展?清晰的个人发展目标•想清楚自己想成为什么样的人自身能力的认真分析•想清楚自己的能力、缺陷和特长切实可行的行动计划•想清楚如何实现自己的目标软件工程师的典型职业路线工程师今天进行了1次权限管理功能模块的CodeReview,修复了2处P3的bug,并根据需求变更流程修订了设计文档的2.3节….职业化技术扎实资深专家技术精深经过分析,我建议采取***算法来实现这个需求,因为它的算法复杂度是…架构师知识广博业务导向根据系统的性能需求,我们可以采取的技术方案有3种,我建议采取….,因为….CTO我们的产品战略是…我们的技术战略是…项目经理沟通能力领导能力对于这个需求变更,我建议采用…方法来实现需求而不增加项目风险开发经理设计分析能力领导能力迄今为止,开发团队完成了第一阶段的全部功能需求,比原有计划提前…工作日C++好还是Java好?编码爱好者软件工程师的成长之路建立自己的职业发展目标立长志,而不是常立志对自己的职业发展目标要充分了解看上去很美?你真的考虑清楚了吗?将个人目标与群体目标进行匹配切忌虽然志当存高远,但制定遥不可及的目标并不能增加你的幸福感,只能增加挫折感,如•做中国的比尔盖兹•下一个马云软件工程师的成长之路对自身能力的认真分析你适合做软件工程师吗?你热爱技术吗?你拥有激情吗?你梦想用创意和产品改变世界,改变人们的生活吗?你在学校里学习C语言时,对指针概念理解透彻吗?•你能够正确认识你自己吗?–你能列举出自己的核心优势吗?–你能列举出距离你的目标还有哪些差距吗?–你知道如何才能实现目标吗?•切忌–过高估计自己以我的智商和能力,往前推三百年,往后推三百年,总共六百年没有人超过我-----罗玉凤–机会面前,裹足犹豫我可以吗?我能行吗?上次我失败了,这次肯定也会失败软件工程师的成长之路如何设立个人工作计划里程碑式的迭代过程•长期(三年)计划、年度计划、六月计划、月度计划、周计划必须符合SMART(目标管理原则)原则Specific:必须是具体的Measurable:必须是可以衡量的Attainable:必须是可以达到的Relevant:必须和岗位发展目标具有相关性Time-based:必须具有明确的截止期限定期回顾计划与总结软件工程师需要什么样的素养?•团队精神和协作能力•稳定的高生产力•结构化的思考方式•计划与执行能力•学习与总结能力•表达与沟通的能力如何提升自己的技术水平对工作精益求精的”狂热”成为一个优秀的软件工程师的关键是对工作产物的「热情」!抽象化的思考能力抽象化思考是区分一个平凡与伟大软件工程师的重要特质打下扎实的技术功底参加各种在线竞赛,将基本功化作条件反射积极分析成熟开源代码学习新技术的最佳方式就是分析应用了这个新技术的开源产品做好个人知识管理积累个人复用代码库使用知识管理工具如何提升自己的生产力什么决定了软件工程师的生产力?软件工程师的生产力差距有多大?一个顶尖工程师和一个普通工程师之间的生产力可以有百倍的差距代码的品质和效率也有同样的落差扎实的基本功+知识/经验+分析/解决问题的方法+工具善用已有工具或者自行开发工具是提升生产力的重要手段我们每日工作存在太多重复劳动,我们鼓励大家善于”偷懒”,不要轻易对当前的工作方式满足善用已有工具/自行开发工具是提升技术水平的重要手段顶尖工程师的重要特征之一就是自行开发大量合手的工具如何进行学习教学式学习当你能跟别人讲解清楚的时候,你肯定已经了解透彻了在项目中学习学习的目的是为了应用小步快跑,逐步提高需要善于总结、归纳系统的学习阅读书籍及在线文章(吸收别人的)写读书笔记、做技术讲座及记Blog(分享自己的)有目的的学习,克服随意浏览或下载的冲动什么是结构化的思考方式?混乱是思考的大敌对于复杂的问题,分而治之是最好的处理方式建立分析的框架在框架下分析问题脑图是帮助你理清思路的有效工具举例:项目文档目录软件需求分析过程如何进行时间管理时间管理常常感觉时间不够?感觉手头要处理事情太多,工作压力很大?时间本身不是问题,因为每人所拥有的时间一样多所以,导致“时间不够”的重点不是时间,而是在于自己如何善用和分配自己的时间持续改进•计划•执行–不执行的计划没有任何意义–在执行过程中要进行记录和度量•检查–计划一定要检查–检查不是为了“惩罚”,而是为了了解进度、发现问题、调整计划–评估的目的是持续改进•行动–找出最佳的做法–将最佳做法进行标准化,进行推广•什么是持续改进目标方法日程安排训练/执行记录/度量结果检查分析/总结/找出原因修正做法标准化PDCAPlan(计划)forchangeDo(执行)changesonasmallscaletotrialthemCheck(检查)toseeifchangeworksAction(行动)•建议大家研究一下PSP(个人软件过程)新员工如何融入团队•新进同事快速融入团队–拿到通讯录–通过欢迎会认人–操作现有产品,了解现状,考虑如何改进–主动与领导、辅导员、主管、同事吃饭聊天•了解公司、部门的历史和现状•了解大家的想法和做事方法–充分利用你的辅导员–充分利用你的领导•找准突破点–实战中成长–带着任务去学习–报表一般是认识现有系统的最好手段•了解数据的来源•了解数据的结构和关系•了解业务的流程–提出改进建议和意见,争取短期内出彩如何提升表达与沟通的能力•如何提建议–提建议是在工作中脱颖而出的重要方法–成功就是比别人多往前走一步–发现问题并不困难,困难的是解决问题–站在提建议对象的角度考虑问题–确保你的建议是可行的,做过了充分的调研•如何提问题–邮件发出前,要自己读1遍,重要的邮件(包括给领导的邮件)要至少读2遍,确保•说清楚了问题的背景•要站在对方的角度考虑,如果自己是对方的话,能听懂你的问题吗?•语句通顺、用词贴切、主谓宾没有缺失、没有错别字–最好把邮件附件的内容黏贴到邮件正文里•如何与领导沟通–尊重你的领导–将领导作为职业发展的教练和助推器–不要给领导带来惊讶,不要让领导成为最后一个知道问题的人–主动向领导进行汇报,不要让领导来问你•如何提升文档能力–首先要重视文档工作,文档水平是区别工程师与编码爱好者的重要标准–语句要顺畅,写好之后打印出来自己再读两遍,保证语句通顺、用词贴切、主谓宾没有缺失、没有错别字–表达的内容要无二义性,不能有含混的说法,如“系统要具备高可用性”–站在读者的角度考虑文档内容,确保你的读者能够看懂你的文档并迅速抓住重点–注重表现形式,文档的格式非常重要(封面、目录、修订记录、图表、字体、颜色)–不要害怕写文档,多写文档是最好的锻炼方式–要留心收集和学习别人好的文档软件企业对人才的要求软件行业要求的非技术品质:•责任心——不惜代价兑现承诺•团队意识——要有大局观,组织利益高于个人利益•出色的表达能力——能够将自己的想法或掌握的技术等清晰表达•善于沟通、擅长交往——保持沟通通常,能够处理好与同事及领导关系•善于思考同时也有换位思考的思维习惯软件企业对人才的要求合格的程序员~初级软件工程师:•深入掌握1~2门实用的语言,包括Java、C、C#等,包括:语言、API及类库、网上的相关资源(论坛、构件中心、开放源代码园地)等•熟悉数据库技术,至少熟练掌握一种数据库的编程和简单管理•掌握必要的中间件产品(J2EE或.Net体系均可)•了解相关的各种辅助工具,包括IDE、软件设计工具(PowerDesigner、RationalRose)•掌握必要的方法论或技巧,例如:RUP(RationalUnifiedProcess)、设计模式等等、熟悉流程•精通基础、掌握流行、了解前沿主要品质:•较强的自学能力——对公司运用的技术能够尽快掌握同时能够跟上公司的技术革新•解决问题能力和较高的工作效率——能够在公司有限的资源条件下,完成任务不脱团队后腿足够的市场洞察力和敏感工程师可以做好市场工作全面细致的研发过程工程师可以做好本职工作积极有效的推广和介绍工程师可以做好销售工作纯技术人员职责范围技术成长规律变•编程语言:汇编,C,C++,VB,PB,JAVA,C#•软件规模:单机应用,客户端/服务器,集群应用•软件架构:单一结构,分层架构,SOA•解决的问题:简单的信息处理,大范围内的信息共享,自动处理各种复杂的业务逻辑不变•基本语法、算法、数据结构•基础概念、设计模式、开发流程、编程思想、逻辑思维能力技术成长规律打牢基础掌握流行了解前沿近远期的职业规划对人的要求软件行业对人的要求•快速学习能力并快速应用到项目中•良好的沟通能力•良好的编程习惯•充分了解客户需求,严格界定项目范围、周密的计划•学会换位思考,从客户角度考虑问题会事半功倍•快速的提交能力和优良的软件质量IT行业的个人体会•IT行业是技术更新较快的行业,需要不断的学习和总结•IT行业需要技术创新和思维创新•国内IT行业需要多方位的高端人才联系我们中润投资舜泰广场2号楼19楼北区(250100)电话:+86053167618366传真:+86053167618366中流击水润泽万物
本文标题:如何成为一个优秀的软件工程师
链接地址:https://www.777doc.com/doc-4507021 .html