在一个创业型公司作技术总监应该干什么?

2016年10月19日从新修订前端

********************************************************************************************************************node

离开大公司到创业小公司担任技术总监的岗位2年多了,时间不长,也没取得什么成绩,但做为以软件项目服务为主的公司,大大小小也负责交付了八、9个项目。数据库

这个过程当中遇到了很多问题和困难,想谈谈我的对这个岗位的理解,不算什么有价值的东西,就当给本身作点总结吧。编程

对于软件公司,不一样于平台型的互联网企业;咱们仍是会以项目的形式进行交付管理,所以通用的看能够分为售前、售中和售后三个阶段。后端

 

一、项目前期(售前阶段):缓存

这个阶段在有必定规模的企业里一般是不须要研发人员参与的,由专门的市场、售前人员完成,当产品资料还不完善时可能少许技术支持。但在创业型小公司,从老大开始接洽这个项目开始,做为技术主管你就须要参与了。属于这个岗位的主要的工做我认为有以下一些:架构

  1.一、需求澄清:在识别出客户的关键需求的前提下,引导并与客户(或甲方)梳理出一个有利于双方的需求边界。这个阶段是很是重要的,也对我的在业务上的理解有必定要求,须要能给客户必定的信赖感,若是以前不了解这个行业,提早作作准备。千万不要去“扯皮”(在大公司滚过几年的人应该对这个词都有体会),在大公司里只要你有本事把皮球踢出去,你就牛X,但在创业型公司,每一天都是钱、是成本,跟客户扯皮就是找屎。负载均衡

     忽然想起原来公司一个笑话,只要你有本事把问题单扯皮到不归你改,这个问题单就算被你close了,因此某牛人能够一行代码不写改掉N个问题单。这个笑话懂不:)框架

     1.二、初步的产品架构:这里是一些high level的架构,好比移动端采用原生、混合仍是纯H五、要不要上负载均衡、数据库要不要上主备、是否须要独立缓存、是否须要引入第三方平台,如支付、短信、音视频、推送等等。这里的工做,并非严格意义上的指导研发,而主要是为了预估工做量和实施成本。数据库设计

  1.三、技术选型:结合团队自身和初步产品架构的判断’完成语言、数据库、中间件等选型。技术选型之因此在售前阶段须要定下来,主要是两方面考虑,一方面是不少政企类项目须要提早出项目建议书或投标文件,里面会对这些有章节表述要求;另一方面是它也影响你内部团队资源的调配和工期的判断。这里仍是要有必定的权衡的,对于某些工期要求不重,需求相对简单清晰的,能够适当用下新的技术平台方案,好比以前大可能是JAVA的项目,能够考虑试一下node、go。

  1.四、关键技术风险:对于项目中的关键风险点进行识别,若是存在特别大的风险,好比复杂引擎、音视频服务等,不是短时间能储备充分的,要及时把项目close掉。对于某些可承受的风险,在这个阶段也能够提早安排空余人员进行储备。

  1.五、工做量评估:工做量评估及开发计划初步制定,支撑商务谈判和合同签定,简单点讲告诉大家老板,多少人天能搞定:)

二、项目中期(售中阶段)

  2.一、架构设计:在售前阶段你可能作了一个初步的产品架构,在这个时候就要细化了。对于不少项目而言,可能最开始的时候就是一个单机系统,但若是客户是一个互联网平台项目,你仍是要对将来有所预留。我我的的理解是在这个阶段核心仍是业务子系统的划分和数据库的设计,其余不少东西后面都好说。比如,你一开始用户管理和订单管理就是混在一块儿的代码,之后就无法拆,给你用什么RPC都没用。数据库设计的时候,权限、角色、角色控制表都没有规划,后续想作细粒度的权限控制,也无法作。这些才是软件的核心,至于什么要不要动静分离、要不要上缓存、要不要上服务治理,我以为均可以等等业务发展再说。

  2.二、制定详细的开发计划:协调终端、前端、后端(大的项目也多是各个子系统)之间的交付,避免彼此的功能存在依赖而阻塞,同时也要可以照顾到前期识别出的关键需求:。这里必定要先定接口,这件事情最好技术主管亲自作。开发能够采用敏捷的迭代,让进度可控,问题提早暴露。

  2.三、核心问题解决;代码框架、关键代码、阻塞性问题等等;这点我感触最深的就是一个词“兜底”。由于在这里,你没有别人能够求助了,反过来你是你下面兄弟求助的对象,关键,这些时候你还不能让你的下属和客户看出来。我本身写到这里的时候,回想起不少事情,还真是有点心有余悸的,真是打落牙齿往肚子里吞啊.....

  2.四、对外控制客户的预期:(这个时候项目合同已定,能够适当的和客户谈谈困难,给本身的交付留有余地);客户必定会有不少临时的需求,好比何时要提早演示给某某投资方或领导啦,或者临时接了什么单子要某个功能提早上啦。这个时候尽量挡住,别信他的鬼话,项目没找大家的时候,一年半载都拖过去了,这会晚个10天半个月,还就错过什么关键机会窗,鬼扯!实在挡不住,就和他说要加钱的,100%挡住伪需求。

  2.五、对内控制项目的进度和质量:以我我的这点经验而言,比较好的实践有,早例会和周例会(可以施加必定的进度压力,同时也提高团队归属感),代码检视(针对复杂业务代码颇有效,捎带也作了团队技术提高、编程规范啥的)、持续集成(平台类项目很重要,不然版本发布进度跟不上)。

     我之因此把这部分工做放到这个阶段的最后,并不是它不重要,而是有些从大平台出来的人(特别是管理类),总喜欢一上来就谈这方面的理念和思路,说的头头是道。以我我的的经验是省省,且不说削足适履是否合适,在你没能解决一些关键核心问题以前,真没人会愿意听你叨叨这些有的没的。

三、项目后期(售后阶段)

  3.一、妥善处理客户需求变动,保证不过多增长项目成本,而又不影响后续款项的收取;

  3.二、版本管理,每次发布后的版本要能在配置库可回溯,出了问题可回滚;

相关文章
相关标签/搜索