程序员进阶之路—如何独当一面

今天和大家分享一下,程序员如何独当一面这个话题,这是一个很大的话题,我把他分成三部分来谈:
  一、需求转换的能力或者叫理解需求的能力;
  二、分配时间的能力;
  三、开发质量的问题;

我为什么把时间分配优先级放到代码质量的前面呢,原因有两个:
  1.如果时间把控的好,及时功能有点问题,也是有时间来修复,相反及时程序代码质量再高,到了完成的时间节点没有完成,那就是灾难性的。
  2.代码质量是通过时间的积累,技术的沉淀,修复成本越来越低,提升空间越来越小的因素;而时间规划却是和人的行为习惯挂钩不好去改正的一个点,比如你让一个拖延症的人变的行动迅速,是一个相对艰难的事情。
所以,我觉的合理分配时间的能力的权重要>开发质量的问题。


在开始之前,先给大家看一下思维导向图:


一、需求转换的能力
  需求转换的核心就两个字“沟通”,开发成本最大的浪费是需求浪费,这分为两方面,一方面需求方,无效需求或者需求变动带来的研发成本浪费,另一方面是需求方和研发方需求传递不一致的浪费,简单来说就是没有充分沟通,导致研发所做的功能和需要方需要的功能不一致,导致返工的现象。第一点是我们作为研发不能把控的,我们能做好的就是在需求传递的过程中,保证需求的有效性和完整性。
那么具体要怎么做呢,可以通过以下几点:
  1.开发前需求沟通,最理想的沟通方式:产品提供需求文档 => 研发人员先过一遍,记录有疑问的需求点 => 产品和研发讨论需求,把所有的需求都过一遍,有疑问的点重点沟通 => 研发人员用产品能听懂的话,大概的描述一下重点讨论的需求和实现方式 => 产品确认无误,启动开发流程。
  2.开发中沟通,或者是开发前模拟程序实现流程的时候,如果有未谈到的需求或者有异议的需求,及时和产品沟通之后在开始做编码。
  3.测试阶段,给需求方演示程序,最后一遍对接核对需求。
如果能保证以上三点,基本上在需求转换的工程中已经算一个合格的程序员了。


二、分配时间的能力
  做软件开发的一般情况下都是,以功能(或叫结果)为导向,以时间为衡量标准的一项严谨的工种。所有“时间概念”在软件开发中发挥着无疑比喻的重量。
在说合理分配时间之前,我想有必要先说一下,程序开发的生命周期,在很多人眼里,程序开发有啥周期,做完不就完事了吗?其实这是小作坊的思维方式,对于一个合格的软件公司或者大一点的软件公司来说,即使到了开发实施的这一步,也分为5步:软件设计,思考最优实现方式 => 撸码 => 测试阶段 => 修复完善 => 交付,完成开发。
一般来说,对我个人而言软件设计,思考最优实现方式要占用30%的时间,撸码占用50%,测试和完善20%,当然,这个不能一概而论,对于新书来说思考的时间短点,关键点在留够测试和完善的时间,测试和完善的时间越长,项目的成功几率就越大;对于大咖来说思考的时间更长,因为代码质量过硬,所有测试和完善的时间可以相对分少一点。
如果你能认识到小作坊和生产线的区别,就能合理的安排时间,尽量提前完成开发,进入测试和完善的阶段,才是关键。
影响时间规划的还有另一个原因,项目冲突,比如你再做B项目,突然测试人员找你说你的A项目有一个xx问题,这个时候,你就要平衡一下优先级,原则上来说,是先处理优先级高的问题,但一定要把控的是尽量不影响自己的B项目计划开发进度。如果实现迷茫可找你的领导来权衡,让他做决定,这一点很重要,一定不能忽略。

三、开发质量的能力
  这一点是最后一点,也是最偏重技术的一点,那么怎么去衡量开发质量的,我把它分为三个元素:
  1.基本的评判标准,功能可以正常使用;
  2.可读性高,利用他人和自己阅读、修改,降低维护成本;
  3.模块化程度高,提高扩展性,降低维护成本,提高开发效率。

 

综上所属,写给正在奋斗的你一点小小的建议:提高自己主观能动性,调整自己心态,以主人翁的心态,积极的面对工作。你在认同公司的同时,公司才能认同你!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html跨浏览器兼容性问题

之前写代码没注意到,这次学习了。 首先 img的width和height属性在IE浏览器中不起作用,可以设置一个div,让img标签在div块中,div中设置style:overflow:hidden,然后用div的宽和高来定义图片的宽和高。 第二个就是,clear:…

Spring经典面试题

文章目录 Spring概述(10) 什么是spring?Spring框架的设计目标,设计理念,和核心是什么Spring的优缺点是什么?Spring有哪些应用场景Spring由哪些模块组成?Spring 框架中都用到了哪些设计模式?详细…

JDBC 获取被插入数据的主键ID值

除了用存储过程还有以下方法可以获取: static int create() throws SQLException { Connection conn null; PreparedStatement ps null; ResultSet rs null; try { // 2.建立连接 conn JdbcUtils.getConnection(); // …

MySQL 5.6的新特性

MySQL 5.6是一个主要的版本发布,它在性能、可伸缩性、可靠性和可用性方面引入了多项重要改进和新特性。它在2013年发布,相比于它的前身MySQL 5.5,MySQL 5.6带来了以下关键升级: 优化的InnoDB存储引擎:MySQL 5.6中的Inn…

简易数字时钟软件详细制作过程

这是我自己用VS2010制作的简易数字时钟小软件,在制作过程中收获知识不少,希望和初学MFC编程的朋友分享一下。 一、其功能有一下三点: 1.打开软件后,其程序自动获取当前电脑系统的日期、时间和周次,并同步显示在主对 …

关于后台系统自动生成的一点思考

大量实践发现后台管理程序,其实90%的代码都是相同的,当然是在抛弃复杂逻辑业务的情况下,那么如何能高效的节约这些时间呢,那就是接下来我要说的,对于后台系统自动生成的一些思考。 适用情景: 1、表编号id为…

MFC定时器SetTimer函数用法总结

CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是一个很重要的区别。 1、启动定时器。 启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下: 参数nIDEvent指定一个非零的…

全网最全的Numpy开发入门教程(详细案例版)

概述 NumPy是一个Python库,每个数据科学专业人员都应该熟悉它这个全面的NumPy教程从头开始介绍NumPy,从基本的数学运算到NumPy如何处理图像数据本文中有大量的Numpy概念和Python代码 介绍 我非常喜欢Python中的NumPy库。在我的数据科学之旅中&#xff…

android开源库收集

1. google valley Android网络通信库 git clone https://android.googlesource.com/platform/frameworks/volley 介绍 http://www.cnblogs.com/bvin/p/3291611.html#2806770 http://liubin.org/2013/05/27/android-volley-at-a-glance/ 2.Afinal是一个android的ioc&#xff…

微信分享JSSDK-invalid signature签名错误的解决方案

核对官方步骤,确认签名算法。 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?tjsapisign 页面工具进行校验。确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timesta…

MFC操作Excel2003的CRange类的Copy函数和Delete函数实现方法

一、CRange类的Copy函数实现方法 具体步骤: 1.实例化一个CRange类对象range1,关联你要拷贝的区域; 2.实例化一个CRange类对象range2,关联你要将要粘贴到的区域; 3.调用前一个range1对象的Copy函数,就可…

Django代码编写规范

1. 编码声明 在 Python 解释器执行代码时,需要告诉解释器代码的编码方式。Python 代码实际上是文本数据,如果代码的编码方式与解释器读取的编码方式不一致,将会因编码错误,代码无法执行。Python 2 解释器读取代码时,默…

Get sdcard directory by adb

解决方案: adb shell echo $EXTERNAL_STORAGE I am making an application, which pulls files(Saved by android app) from the device sdcard by adb. The problem is that different devices, have various sdcard directories i.e: sdcardsdcard/external_sdFi…

VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用

一、IDE的选择: VsCode和WebStorm都是不错的选择,说一下两者的优缺点,调试便捷性来说两者不相上下. WebStorm缺点:性能方面VsCode远好于WebStorm; WebStorm优点:代码引用追踪Ws有VsCode无,控制台…

MFC新建文件夹、打开文件夹的实现方法

一、 MFC新建文件夹到指定路径的实现方法 典例: 二、 MFC保存文件到指定路径的实现方法 典例: 三、 MFC打开指定路径的文件夹的实现方法 典例: 注意:ShellExecute函数还可以打开指定路径的普通文件或者可执行文件。

VueJs生产环境部署

VueJs为客户端语言,所以部署的时候是不需要基于nodejs或其他服务器运行环境,只需要像其他静态站点的方式发布就可以了,下面介绍一下VueJs具体发布的流程还有需要注意的点。 先来看VueJs最终生成的文件目录: 具体的步骤如下&#x…

a20隐藏底部按钮及隐藏状态栏和虚拟按键栏

2019独角兽企业重金招聘Python工程师标准>>> 隐藏RecentButton按钮: 在源码android4.2/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java的makeStatusBarView()方法中添加(这是全志androi…

如何计算一个网段的子网掩码,网络ID,广播地址和可用IP地址数

1.判断两个IP在不在一个网段,主要看这两个IP的网络ID,如果网络ID相同则这两个IP在同一网段 示例:判断192.168.0.11/26 和 192.168.0.111/26在不在同一网段 首先计算两个IP的网络ID: 192.168.0.11/26 子网掩码(2进…

WebApi开启CORS支持跨域POST

概念:CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 现象:如请…

MFC中CString类字符串与长整型、浮点型、字符数组char数据之间的相互转换

一、长整型数据与CString类字符串相互转换 1.将长整型数据转换为CString字符串类 CString str; long ld; str.Format(_T("%ld"),ld); 2.将CString字符串类转换为长整型数据 CString str; long ld; ld_wtol(str); _wtol()在<stdlib.h> and <wchar.h>…