简述一下我进入这家公司的经历, 以及一些想法, 如果不敢兴趣, 可以跳过:
去年的3月份, 也就是一年之前, 我进入了这家公司, 当时自己的心情, 可以用低落来形容, 因为我是从其他行业转行过来做开发的.
而上一家公司, 我仅仅待了10个月就跑出来了, 之所以跑出来, 是因为压力太大了!
大到什么程度呢?
我当时的感觉, 每天都觉得胸闷, 而且只有 92 斤, 还因为身体原因一直在嗑药. 一个男的, 92 斤, 还在嗑药, 挺吓人的, 就这样, 我从上一家公司跑出来了.
当时的想法是, 上一家公司做的是传统的软件开发, 需要面对不同的技术框架和软件结构, 对开发经验的要求比较大, 如果自己能够找到做产品的公司, 相对来讲, 就轻松多了!
就这样, 我找到了现在的这家公司.
面试的时候, 我如实的告诉了现在的老板, 也就是上面提到的事情, 老板都知道了!
从现在的角度来看, 当时自己被录取的原因是, 跟我一起面试的人当中, 我有参与产品开发的经验, 而他们, 都没有, 仅此而已.
被录用的时候, 着实让我兴奋了一把, 但更让我兴奋的是, 这家公司后台使用的技术框架我接触过, 只是前端框架不一样而已.
在上一家公司, 为了理解软件代码, 还真的让我晕头转向, 有时候就是不明白是什么原因引起了一个 bug, 对于别人来讲, 能用半个钟头搞定的事情, 我愣是用一天的时间也解决不了.
为此, 上一家公司的项目总监和老板找我谈了好几次, 在公司里, 我已经是拖后腿的代名词.
而到了这家公司, 我突然发现, 我理解这个软件的代码竟然如此的轻松, 当时我就在想, 是不是上天哪个神仙发了慈悲, 在暗中帮了我一把.
现在看来, 并不是神仙帮了我一把, 而是现在这个软件的业务逻辑复杂度就比上一个软件低了一个档次.
怎么理解这个档次呢? 简单说来就是, 上一个软件的表单都是通过配置来完成的, 而现在这个软件的表单是通过硬编码来完成的, 配置出来的表单, 和通过硬编码写出来的表单, 其复杂度肯定是不一样啊!
因此, 从进入这家公司开始, 我就没有什么压力, 因为嗑药的原因, 我也不打算给自己什么压力, 每天准点打卡上班, 准点打卡下班, 在当时看来, 我进入这家公司的任务仅仅是运维而已, 只要软件正常运行, 我就没有什么好担心的.
不过事情并不是像我想象的那样顺利, 就在我进入这家公司一个星期后, 有一个技术人员走了, 这是公司里留下的 2 个技术人员中的其中一个, 在当时的我看来, 觉得没什么, 因为从一开始, 他们就告诉我说, 他的工作将会转到我手里, 我想, 既然我进来就是要做运维的, 产品开发完成了, 转到我手里也是很正常的啊, 虽然这个技术人员离开让我有点可惜, 但我并不去想那么多.
但是一个多月后, 同事告诉我说, 剩下的这个技术人员也要走了, 当时我就愣住了, 傻了半天都不知道该怎么反应, 他可是是公司所有软件项目的负责人啊, 他走了, 公司有那么多项目软件, 有 java开发的主系统, 有 android 端, IOS 端, 还有微信端, 谁来负责呢? 就算我在牛X, 也不可能一个人担起这么多东西吧?
再后来, 老板把我叫到了办公室, 说了一大堆, 我现在能够记住的, 就只有 2 点:
1 一个萝卜一个坑, 公司是不养闲人的, 问我愿不愿意接管公司里的软件项目?
我记得当时的回答是: 私人企业, 肯定是要做事的, 不像国企, 不可能不做事的, 至于接管软件项目, 个人意愿方面没有什么问题, 但是能力方面, 我也已经告诉您了.
2 公司的软件开发已经完成, 接下来就是运行维护而已.
我印象特别深刻, 老板在表达这个意思的时候, 用笔在纸上画了一个圈, 告诉我说: 这个圈画圆了!
窗外是一条河, 所有的美景尽收眼底, 很美! 但我的心情却跌落到了冰点!
公司的整体软件项目是完成了, 但还需要迭代啊, 软件产品的功能不可能一下子适应市场的需求, 这也意味着需求变更的情况下, 我一个人只能眼巴巴的看着, 啥事也做不成.
我觉得这里面肯定有问题, 但我也不知道是什么问题, 我想, 即便不把原先所有的技术人员留下来, 也不能让所有的人都走啊!
当时我没有多说, 只是点了点头表示回应.
就在这名技术人员走的前几天, 我问了他一个问题: 为什么所有的技术人员都走了? 他的回答是: 原因很多了, 不过总体来说是为了钱!
我觉得他的回答很干脆, 这个世界的人, 都是朝这个方向努力, 包括我自己!
接下来, 整个公司里面, 就只有我一个技术员了, 其他人, 要么是人事, 要么是客服, 要么是业务员, 反正就没有技术人员, 就连安装软件, 有时候还得找我.
而这, 从我入职的第一天算起, 刚好 60 天.
有一天, 老板把我叫到了办公室, 郑重的告诉我说, 为了软件的稳定, 没有他的同意, 不可以随意修改软件代码, 要修改软件, 必须得到他的允许.
我当时就没有多想, 点头答应了, 但是现在看来, 在这一点上, 老板似乎对我有意见, 因为我没有好好履行我的承诺.
的确如此, 比如发现了 bug , 修改后我就直接更新到服务器上, 并没有经过他的同意. 但在我的印象当中, 凡是添加功能和修改功能,都是经过他同意的.
关于这个问题, 后面我们还会提到.
在接下来的时间的确比较清闲, 由于之前他们没有留下什么说明文档, 于是我开始写软件使用说明文档.
在我看来, 可以通过这个机会帮助我加深对公司软件的理解.
我从每个模块的功能按钮开始, 从操作上看它实现了什么业务功能, 顺着接口的代码顺序, 看看他具体是怎么实现的, 以及使用到什么数据表, 还有每个数据表字段所代表的含义.
这样写说明文档, 进度非常的缓慢, 我大概用了一个月的时间才写完, 不过, 这给我后来的开发着实非常有用.
写说明文档接近尾声的时候, 新任务来了: 公司要申请高薪认证.
这个可是有政府补贴的, 不过我当时有点抗拒, 因为我没有做过, 也不知道该怎么去处理这个事情, 更要命的是, 我该问谁?
所以自己非常迷茫, 所幸的是, 时间上并不是很紧, 可以慢慢处理, 现在看来, 事情并没有想象的那样复杂, 而且跟技术一点关系都没有, 简直就是在打杂.
不过不得不承认, 如果对软件和技术不了解, 处理起来还是很难的.
现在总结, 不外就是做下面这几个事情;
1 申请软件著作权证书
这个可是要钱的, 我记得一个软件证书需要 400 块, 当时申请了 3 个软件证书, 总共 1200 元.
这里有一点不爽的是, 帮我们申请证书的这家公司, 收钱的时候, 动作特别快, 但是软件证书发下来了, 就是迟迟不肯寄给我们.
就在我们要尿裤档的时候, 催了他们 3 次, 才给我们寄过来, 而且在邮寄费用这个问题上, 还耍了一个小聪明.
他们当时问我, 到底是要顺丰还是韵达, 顺丰的话, 是我们公司出钱, 而且是到付, 韵达就他们出钱, 但不保证证书的安全性.
都已经到了这个节骨眼上了, 我也只能选择顺丰了, 要不然, 想申请高薪认证, 没戏了!
这里顺带说一句, 前面写的说明文档, 这里正好派上用场了, 因为申请证书需要提供说明文档.
2 写项目立项书.
说白了就是写软件实现了什么功能, 使用到什么技术, 具体有什么创新的东西.
3 提供证明材料.
软件著作权证书就是其中的一种证明材料, 软件截图也是, 还有说明文档和代码也是.
4 填写评审表.
也算是一种证明材料, 不过他说明的是, 软件什么时候开始调研, 然后进行需求分析, 什么时候开始编码, 什么时候上线使用, 审核结果怎么样,等等.
这些纯属都是胡扯.
5 签字盖章.
这里面并没有意外的东西, 虽然刚开始的时候很抗拒, 唯一让我觉得难受的地方就是, 在写创新内容的时候, 一定要高大上, 什么大数据分析啊, 区块链啊, 什么自动识别啊, 提前预测啊, 反正你就不能写 low 了, 这个要求让我特别反感, 申请高薪认证有 11 个项目, 每个项目的创新内容都要高大上, 你说有那么多高大上的技术给你写吗? 写来写去不外乎就那么几个技术名词供我们选择, 还能怎么写?
刚开始的时候, 我都是老老实实的写, 有什么写什么, 不过被告知不行, 得修改, 所以只能靠自己的想象力了.
我感觉就像写小说一样, 没有实在的东西, 不过写小说爽多了, 没有负罪感, 写这东西不老实, 心里面总有个疙瘩.
所以在最后签字盖章的时候, 我就是不愿意签字. 我觉得, 老板肯定用另外一种眼光来看我.
高薪认证的任务总算结束了, 接下来就是对公司的系统进行改造.
先说一下需求变更.
公司开发的这套系统, 原本是想作为平台来使用的, 说白了就像淘宝和滴滴打车一样, 有需要别人帮助的就在网站上发单, 我们把这种用户称之为服务需求方, 也可以称为客户,另外一种用户就是专门给别人提供服务然后赚取费用, 我们把这种用户称之为服务提供商, 服务的需求方和提供方自由的在公司网站上交易, 公司对交易过程不做任何干预动作, 公司的盈利模式是按照比例来收取手续费, 不过随着业务的展开, 发现这种模式行不通, 原因是交易所涉及的产品价值都是上十万百万, 客户, 也就是服务的需求方不会随意更改合作伙伴, 而公司开发的这套系统, 提供的这个平台, 无形中会要求他们频繁的更换合作伙伴, 这是客户无法接受的, 所以公司就做了业务上的转变, 参与到具体的服务中去.
这就好比是, 淘宝不再是一个平台了, 阿里巴巴公司自己在淘宝上卖产品了, 用户在淘宝上下单后,阿里在自己去进货发货.
这个转变, 从信息流通的角度来讲, 就是在原先畅通的信息大道上, 建立一堵城墙, 以便于进行信息控制, 从软件的结构上来讲, 就是下面几个方面的改变:
1 站内信也好, 手机短信也好, 或者是邮件也好, 信息不能直接从需求方到达提供方, 也不能从提供方直接到达需求方, 能够直接到达的, 一定是无关紧要的东西, 重要的内容, 一定要进行控制.
2 订单发出来, 一直到提供方看到为止, 原先是按地区来抢的, 谁抢到, 就是谁接单, 而现在, 需要进行缓冲处理, 因为服务的提供商有些是打酱油的, 对于忠诚的提供商, 他应该有接单的优先权, 如果这些人无法消化这些订单了, 再给那些打酱油的人接.
3 订单的费用, 不管是什么费用, 都要进行差价处理, 这样公司才产生利润.
换句话说, 同一个订单, 需求方和提供方看到的费用金额是不一样的, 由于之前公司是按照手续费来收取, 费用金额显示出来, 不论是谁看到, 都是一样的, 但现在得改.
4 需求方下单的价格可以进行设置, 一旦设定好了, 下单的价格就可以固定了.
这里还有一个问题, 因为需要进行差价显示给提供方, 所以还得给提供方进行设置.
这个更改内容, 现在用两句话就说完了, 但是写代码, 需要好几个模块啊.
5 对业务员的业绩统计进行修改.
盈利模式发生改变了, 业务员的业绩统计方法也改变了, 之前只是收取手续费, 统计就方便多了, 但是现在, 业务员要对货款负责, 对于延迟收到的货款, 业务员的提成比例是不同的, 延迟收到货款的时间越长, 提成比例越低, 甚至出现倒扣的现象, 这个引起了业务员的反感.
其实写代码, 难度并不是计算公式复杂, 而是业务员和老板之间的这种冲突没有得到解决, 然后, 哪一方不爽, 就拿我来出气.
有好多次, 业务员都冲着我发火, 说我开发的软件有问题, 但我感觉我真的被冤枉了, 然后就让我修修改改.
一方面, 老板并不想让我知道业务员的工资收入情况, 但是另一方面, 软件的确可以方便财务进行统计, 省人力, 所以我觉得老板故意把业绩统计公式弄复杂了, 而且在表达的时候故意说的模糊了!
他让软件做一部分工作, 另外一部分工作交给财务去处理, 作为技术人员, 我真的不知道该怎么去写这个代码, 公式都没有理解清楚, 怎么写?
所以我就问了业务员, 也问了财务, 但大家都不知道. 最后, 我把我想到的可能的计算方案写出来, 然后通过QQ传给老板, 让他进行确认, 可是他并没有回复, 不得已, 我不得不隐藏业务员的业绩统计信息, 只显示订单的毛利润.
由于财务也不知道怎么计算业务员的业绩, 而我在软件上也已经隐藏掉了业绩信息, 因此财务只能按照自己的理解去计算业绩, 然后上报给老板, 老板知道情况后把我叫进办公室, 这事情, 我记得当时我的口气偏硬了.
前前后后, 关于业务员统计这个模块, 我记得总共修改了 4-5 次, 一年的时间, 修改了 4 次, 在我看来, 已经非常的频繁了, 因为每次的修改都得等两个月之后才能见到效果, 业务员的业绩要推迟两个月才发啊.
关于对主系统的改造, 这里只是其中的一部分, 后面我们还会谈到另外一部分.
后来有一天, 老板突然让我把公司之前开发的一个项目找出来, 需要进行修改然后上线, 我听到项目名称后就纳闷了, 按照老板的说法, 开发这个项目的人在我进入公司之前就已经离职了, 而且在最后一名技术人员离开的时候, 他并没有把项目交接给我.
我到哪里找这个代码呢? 真不知道该怎么办!
但我也不敢怠慢, 因此就开始对每台电脑进行检查, 这里有一个好处就是, 公司对每台电脑都进行了标识, 是哪个人使用的, 都进行了标识.
可是我查了一个下午, 就是不知道代码保存在哪台电脑上.
到了第二天早上, 老板问我找到了没有, 我说没有, 然后他告诉我说, 先根据姓名来查找电脑, 找到电脑后再找代码, 我说找了一个下午, 没有找到.
他告诉我说肯定会找到的, 然后问我, 我自己使用的这台电脑, 之前是谁使用的? 我说我不知道, 他说你看标识啊, 公司的电脑不都是标识了吗?
我从电脑桌下面把主机拉出来, 上面标有3个英文字母, 他看到后说, 这就是我们要找的那台电脑了, 是之前的那个同事使用的, 你搜索下, 看代码保存在哪里?
我当时很尴尬, 代码保存在我的电脑上, 我自己一点都不知道, 我开始意识到问题的严重性!
这说明了什么? 最后走的那名技术人员, 他是整个公司项目的负责人, 但是他并没有把所有的软件代码都交接给我, 他只是把其中的一部分代码交接给我.
这时候我突然想起我问的那个问题, 为什么所有的技术人员都走了? 我觉得, 他当时的回答说了个大实话.
后来我就一直在留意, 看看代码方面还有哪些交接方面的问题, 果然, 还真的有.
当时我特意拿微信端的代码拿来部署, 在本地上运行, 结果发现, 怎么登录也登录不了, 我说奇怪了, 服务器上面运行得好好的, 怎么本地上就报错了呢?
查看日志后发现, 调用的方法根本就不存在, 这怎么可能呢? 服务器不是可以正常运行的吗?
于是我拿服务器上的 class 文件下来, 然后进行反编译, 在查看他的源代码, 发现, 服务器上的代码跟本地上的代码, 调用的方法根本就不一样.
再回到这个项目代码的修改上, 其实软件的业务逻辑并不复杂, 也没有多大的修改, 我只是修改了两个模块, 但让我无法理解的是, 修改后的业务逻辑, 跟原先的业务逻辑相比, 其先后顺序颠倒了过来.
我大概用了一周的时间把这个代码修改好, 主要时间用在:
1 业务逻辑顺序颠倒后, 就会在各个模块引起一些问题, 我就得理顺这个逻辑, 把问题修改好.
2 修改的时候加了报表, 之前我使用过水晶报表, 从来都没有接触过 ireport, 我大量的时间, 都用在调表上.
代码修改好后就开始上线, 却遇到了另外一个问题, 由于这个代码也是在公司主系统上修改而来, 因此两个项目使用到的后台框架都是一样的, 这意味着,两个项目使用到的 java bean , 他的名称有一部分是重复的, 使用到的 sql map 语句(mybatis)也是重复的, 因此部署到同一个tomcat下的时候, 就会发生冲突.
我看到网上有解决办法, 但是按照里面的方法根本就行不通, 到现在为止, 我都不知道如何去处理这个问题.
由于这个项目部署上去之后, 跟公司的主系统有冲突, 再加上业务上也无法突破, 关于这个项目的事情就这样不了了之了.
接下来是公司主系统的对接接口开发, 对接的是行业中一家比较大的公司, 由于他们内部使用的管理系统是一个封闭的系统, 数据无法跟外部系统交互, 对接后, 他们就可以使用GPS定位功能, 方便对整个业务过程进行跟踪,这是他们看中的.
而我们公司看中的是, 一旦这一家公司合作成功, 我们可以推广开来, 从而带来业务量的增长.
刚开始的时候, 我有一点紧张, 对接接口开发, 之前有接触过, 但是还没有独立负责整个开发项目的经验, 因此, 说到底, 还是自己心里面没有底.
在刚开始的计划当中, 我打算用一个月的时间来完成对接功能, 但实际上, 我高估了自己的能力, 因为在整个对接过程中, 最重要的东西并不是写代码这么简单, 最重要的东西就是, 我们使用的解决方案, 对方能不能接受, 对方渴望的解决方案, 我们能不能提供, 这实际就是一个磨合的过程.
举例来讲, 我们双方的系统都会使用到地址, 这就涉及到行政区划这个基础数据, 由于我们公司的系统在设计之初就已经考虑到了 GPS 定位功能, 所以, 获取地址这个数据是通过下拉框的方式来获取的, 这样就很方便的定位到镇一级的行政区划, 从而轻易的获取到经纬度信息, 这是 GPS 定位的基础, 没有这个经纬度信息,GPS 定位功能就不用谈了.
但是对方的系统不一样, 他是一个封闭的内部系统, 地址信息只需要一个输入框就可以获取到, 再加上是给用户看的, 基本上肉眼能够识别就可以了.
这样冲突就发生了, 我们需要的是一个精确的 ID 来标识一个具体的地址, 而对方能够提供的是一个字符串, 而且他还不保证这个字符串的值是一个标准格式的地址, 也就是他无法保证这个字符串所代表的地址符合下面的格式: XXX省XXX市XXX县(区)XXX镇(街道), 这样一来, 我们就无法获取到精确的经纬度信息,GPS定位功能就无法实现了.
这个问题一直在争论, 拖了很长时间, 大概2个月都没能解决, 而且对方使用的这个系统并不是他们自己开发的, 他们是让另外一家软件公司来开发和维护,这就意味着跟我对接的是一个开发经验丰富的软件公司, 当我知道这个情况后, 压力陡增, 因为没有经验, 我接口设计上的缺陷对方肯定看得出来.
为了方便后面的语言表达, 我把跟我们业务上合作的公司叫做业务合作公司, 负责接口对接的软件公司就叫做软件开发公司.
对方确实是个开发经验丰富的公司, 他们很清楚, 从两个系统的依赖关系来看, 我们系统是数据的提供方, 他们是数据的使用方, 因此从一开始他们就让我们把接口设计出来, 然后编码完成并部署上去后他们在开始动手开发.
这样我就掉进了一个陷阱里.
我赶紧把接口设计出来, 然后写代码, 测试, 等到我跟他们说接口可以调用以后, 对方就开始挑剔接口设计上的不合理.
这不行, 那也不行, 上面我们提到的行政区划这个基础数据的冲突才开始浮上水面, 这个时候我感觉自己被耍了一把, 我的想法是, 当我把接口设计出来, 并把接口文档给他们之后,他们就应该提出这些不合理, 而不是等到我把代码完成并部署上去后才开始说设计不合理.
这样在接下来的时间里, 可以用面红耳赤来形容吵架, 虽然是在QQ上进行沟通, 但这种紧张的氛围还是能够感觉得到, 搞得三方的老板频频出面调解.
当大家意识到行政区划这个基础数据上的冲突就会导致 GPS 定位功能无法使用后, 负责接口对接的这家软件公司提出了一个解决方案:
他们不做任何的修改, 只是提供数据库的连接地址和登录密码给我们, 让我们直接去操作对方的数据库.
我感觉对方在引诱我们掉进另外一个陷阱里面去.
我的想法是, 一个软件项目, 谁对软件的业务逻辑和数据表结构最了解? 当然是设计这个软件项目的公司了, 如果对方仅仅是提供一个数据库的登录地址和账号密码给我们去操作, 这已经不是对接了, 而是让我们自己去对软件进行修改了, 但是在对方不提供代码的情况下, 我们能这样做吗? 即便是对方提供代码, 我们也没有理由这样做啊!
为了推进开发进度, 我把这个想法告诉了老板, 老板用了一天的时间, 跑去跟业务合作公司谈, 后来, 负责对接的这家软件公司的态度就缓和了一点.
但是行政区划这个基础数据上的冲突还是没有解决, 后来我们这边做出让步, 我们的做法是, 对方给我们的是一个字符串, 我们想办法从这个字符串中解析出具体的地址来, 如果能够精确到镇一级的, 就拿这个镇的经纬度作为 GPS 定位的坐标, 如果镇一级无法解析, 就获取县一级的, 依次类推, 一直到省一级, 如果连省一级也无法解析, 就默认它是中国的.
这个对接接口开发, 前后用了 5 个月的时间才完成, 从2017年的8月份开始, 一直到2017年的年底.
这中间穿插去做了其他的事情, 毕竟, 自己一边负责功能开发, 一边进行维护, 有写不完的代码, 有修改不完的bug, 再加上老板的一些突发奇想, 任务多得很.
这个对接接口开发, 从现在的角度来看, 看样子是没戏了, 因为业务上又遇到了麻烦.
跟我们合作的这家业务公司, 他们是乐意对接的, 这会减轻他们的工作量, 但问题是, 跟他们合作的服务提供商就不乐意了, 从服务提供商的角度来看, 他们认为我们在抢他们的客户, 所以从一开始, 业务合作公司要求这家服务提供商使用软件来跟踪业务过程时, 他们就是不愿意, 即使口头上同意, 也会找各种各样的借口来推脱, 所以, 一个订单下来, 整个流程都没有走完过!
对于这个系统, 现在已经是没有人过问了!
再后来, 公司试图从另外一个方面来进行业务上的突破.
具体说来就是, 公司开发的这套系统, 还是有很多优点的, 业务上可以对整个过程进行跟踪和反馈, 这给管理带来很多的方便, 而业内很多的公司, 还在使用传统的方法来进行管理, 于是公司就想, 能不能将这套系统的使用范围进行推广, 让更多的业内公司也享受到这种方便性? 我们想通过 saas 平台的方式来提供,不过遇到了软件上的问题:
原先设计软件的时候, 一个账号代表一家公司, 一家公司如果想多个用户同时使用我们的网站, 需要注册多个账号, 而且每个账号之间是没有关联关系的, 通过saas平台的方式来提供服务, 就需要将同一家公司的多个账号关联起来, 让他产生主帐号和子帐号的区别, 子帐号发出来的订单, 产生的费用, 只能自己查看到. 而主帐号可以查看到旗下的所有子帐号产生的业务数据和费用数据, 包括自己产生的数据.
关于这方面的修改, 现在用文字来描述, 挺简洁的, 但是用代码去实现, 这就好比是手术室的医生要进行全身手术一样, 好像没有什么技术上的难度, 但你也不敢掉以轻心, 而且这种修改, 涉及到了费用, 对于我们这种技术人员来讲, 那只不过是一组数据吧了, 但是对于老板来讲, 那可是白花花的银子, 如果自己处理不好, 老爸会怪罪下来的. 所以, 只要涉及到了费用问题, 我都非常的警惕.
而且, 老板的要求真的是难上加难. 他要求使用我们这个软件的公司, 如果他们自己的订单内部消化不了, 还可以派给公司, 让公司去接这个订单,反过来, 如果使用我们这个软件的公司没有什么订单, 要接我们公司的订单, 也可以分派给他们.
这就意味着, 如果是公司内部的业务, 需要把各自的数据隔离开来, 但如果是交叉业务, 也要能够正确的处理.
我每次听到这样高难度的要求, 都会保持沉默, 然后努力去实现.
我打算用 2 个月的时间去完成这个转变, 但是老板给了我一个惊讶的眼光, 我感觉到, 他在怀疑我的工作效率.
我从财务部分, 也就是从费用部分开始修改, 因为费用部分比较独立, 没有其他数据依赖于它, 这样修改后, 如果没有完成, 它不会影响到现有的功能.
修改了一个月后, 老板跟我说, 不能在拖下去了, 时间来不及了, 他要我开发另外一个系统, 我跟他说, 现在已经进行到了一半, 如果直接停下来, 部署到服务器上会产生bug, 要不先把费用部分修改完成了再停下来?
他同意了!
就这样, 这个向saas方面的转变功能, 费用部分算是完成了, 还剩下业务部分的内容没有修改, 不过我也没有时间去修改了!
这是对公司主系统进行改造的第二部分.
这个时候, 已经是2018年的2月份了, 临近春节还有几天时间, 而老板要求我在5月1日之前把这个新系统开发出来, 并且可以上线使用,
用他的说法就是可以商用.
我感觉老板是在胡思乱想, 对于这个新系统, 我仅仅是跟他沟通了两次, 确认了这个系统的业务流程, 仅此而已, 而其他问题, 比如他会依赖于什么基础数据,需要什么功能, 建立什么数据表, 添加哪些字段, 所有这些, 都是未知数.
而老板一直在强调说, 我们已经沟通了两次了, 而且软件功能非常简单, 言下之意就是, 我应该开始动手写代码了!
前面我说过了, 对于这样的要求, 我一般都保持沉默.
我很清楚, 我还需要知道更多的内容, 于是我就去跟业务员沟通, 并建议老板, 有可能, 只靠我们两个人的讨论, 可能会漏掉一些东西.
不过, 好像老板很反感我去跟业务员沟通, 他可能希望我只要按照他的指令来办事就好了, 但我担心, 如果考虑不周全, 到时候在修改, 那就很麻烦.
当我把原型图画出来后, 老板也拿着这个原型图去跟业务人员沟通, 这个时候才发现, 我们讨论下来的功能中, 还有两大块的功能没有提到过,而这两个, 是业务流程中非常重要的子流程.
这里顺便提一个题外话, 我突然发现, 老板频频的想转换开发项目, 有时候, 他突然想起了一个点子, 然后就叫我到办公室里进行讨论, 一讨论, 不是一个上午,就是一个下午, 反正一两个小时是谈不来的, 比如说下面的这两个问题:
1 微信和支付宝这么强大, 我们可不可以开发一个二维码扫描功能, 然后通过免收手续费的方式来进行推广.
2 依据图像识别功能, 开发一个 app , 然后卖给相应的公司可不可行.
暂且不说这样的想法可不可行, 但是这样的开发项目跟公司的业务相去甚远, 公司能够抛开现在的业务进入到陌生的领域当中吗?
我对此表示怀疑, 当然, 我也没有说出口.
再回到这个新系统开发上来, 春节前后这一段时间一直在修改原型图, 而且我之前没有画过原型图, 对于 axure 的使用, 真的很陌生, 这个对于新系统的开发, 真的耽误了很多时间, 不过我也不敢直接去写代码, 因为老板脑袋中想要实现的功能和我认为老板想要实现的功能,其实是两码事, 搞不好, 我写出来的代码就白费了, 所以一直到了 3 月中旬, 我才开始写代码.
这个时候, 老板跟我说, 希望我能够加班, 尽快把这个系统开发出来, 他可以适当的给我一点加班费.
对于加班这个事情, 我是持反对态度的, 但我也没有明说, 因为我自己在嗑药, 我不希望把自己的身体给拖垮了.
关于生病这件事, 我也已经跟老板说了, 但我怀疑他不会相信我真的生病了.
另一方面, 我感觉还剩下1个多月的时间, 无论如何也无法让新系统上线使用, 所以老板在问我什么时候可以完成的时候, 我跟他说大概6月1日前.
但是现在看来, 我已没办法兑现自己的承诺了, 因为现在6月1日已经过去了. 但在当时看来, 我有能力在 6 月 1 日前完成这个新系统的开发.
所以当时我就加班了, 而且非常有干劲, 但一段时间之后, 我就泄气了, 为什么呢?
因为我除了开发新系统外, 还需要维护现有系统的正常运行, 所以会有同事经常来找我, 对于写代码这件事情, 我感觉, 如果能够进入状态, 进度还是蛮快的, 但是一旦被别人打扰, 无法进入状态, 那一天下来就什么事情都做不了, 做出来的事情, 都是鸡毛蒜皮的事.
有一次, 同事需要换新的电脑主机, 他要安装的软件依赖于 .net framework 框架, 由于他不知道这个软件要依赖于这个框架, 所以软件一直都安装不上去, 虽然安装时有提示, 但是他就是不知道怎么去处理, 因此他要求我帮他去安装这个软件, 当时我就不知道从哪里来的一肚子气, 一下子发火了, 我反问他, 我给你安装软件了, 谁来给我开发软件?
泄气的另外一个原因是, 随着软件的进一步实现, 老板也在逐步的提出一些额外的要求, 有些问题从词语表达上看, 仅仅是一字之差, 但是从软件功能来看, 那可是差别很大啊.
到5月份的时候, 又突然插进来一件事情.
那就是一年一度的高薪认证又开始了, 去年高薪认证的时候需要提供11个项目, 而今年呢? 需要提供6个项目, 当时我的反应是, 怎么可能呢?
一个技术人员, 一年, 需要出6个项目, 而且还要高大上, 这他妈的不是浮夸风吗?
这个时候, 正好是中美贸易战最火热的时候, 我在想, 一个国家强大的原因是什么? 不就是技术进步吗? 可我们这种做法, 能让国家强大吗?
话说回来, 这个事情最让我反感的地方就是, 他让我用夸张的手法去写证明资料, 这是我最不愿意做的, 可整个公司里面, 就只有我一个技术人员, 能推脱吗?
后来, 我就直接了当的跟老板说, 如果采用这种夸张的手法去写, 我的名字不能出现在证明材料上, 除此之外, 其他所有事情我都可以做.
老板跟我说, 好像你认为我们公司没有资格获得高薪认证, 是吗? 前两天来我们公司的那个老板, 他们公司, 一个技术人员都没有, 都能够获得高薪认证, 而我们呢? 已经审批下来了, 53万. 我当时语塞, 不知道该说什么好!
老板继续说, 这东西, 说白了, 就是骗钱的, 但也不能这样说, 这样说太直白了!
要写6个项目名称, 怎么办呢?
我回顾这一年来所做过的事情, 能够拿得出手的, 就只有 4 个:
1 老板让我把代码翻出来重新修改的那个项目算一个
2 对接接口开发也算一个
3 向 saas 平台转变的功能修改也算是一个
4 新开发的这个系统也算是一个
还差两个怎么办? 就把新系统的功能做拆分, 拆分成 3 个项目.
但是, 这 3个项目需要提供证明材料啊, 至少要有截图和代码, 没办法, 只好先开发前端页面, 后台功能先不管.
这样就有截图和代码了.
不过, 当我页面开发出来, 把材料填写好, 提交上去时, 却被告知, 截图里面不能没有数据, 统计页面中的费用统计金额不能为零, 总之, 即使是作假,也要模拟得好像已经投入使用一样.
我只好在 action 类里面返回模拟数据(后台框架使用struts), 虚构数据这事, 还真的花了我一天的时间, 因为数据之间也要有关联才行.
就在这篇文章准备完稿的时候, 他们已经把文件传过来, 要我打印出来然后签字盖章.
我看了下, 原先提交上去的时候, 只有我一个开发人员, 现在, 他们已经修改了, 那些客服和业务员都赫然在列, 甚至还出现了我不认识的人名. 换句话说, 这些人也是软件开发的一分子.
我就不干了, 要求他们把我的名字从证明材料上删除掉, 但他们的回复是, 我是项目的负责人, 不能删除.
没办法, 我无能为力, 但我拒绝签字.
再一次, 我又在高薪认证材料上拒绝签字!
我感觉老板对我越来越有意见了.
有一次公司聚餐, 老板就在餐桌上当着大家的面, 用半开玩笑的话给我取了一个外号, 叫桂爷.
为什么叫爷呢?
不知道大家注意到没有, 如果老板想让你加班, 但他又不想给你加班费, 怎么办呢?
他就会给你分配很多工作, 然后催着你赶快做出来, 这种情况下, 一般有两种反应, 一种是默默的加班, 另一种是选择跳槽. 而我的做法是, 把自己认为重要的事情排在前面, 不重要的事情排在后面, 按顺序来, 如果重要的事情没办法完成, 就加点班.
但这样做还是有一个问题, 自己认为重要的事情, 在老板的眼中, 很可能不重要, 所以, 当老板把事情分配给我的时候, 如果没来得及去做, 我会顺带问一句: 是不是现在就要完成?
如果他说可以缓一缓, 那就没问题, 但如果是很紧急, 那就把它排在前面.
另外, 如果是开发比较大的功能模块, 我就乐意去做, 而且把它排在前面, 这对于锻炼自己非常有好处, 但对于一些小修小改, 只要不影响正常使用, 我就没有什么动力, 一直堆积下来, 可以这么说, 现在要做的事情, 多得都没法完成.
而我, 依然不加班, 就像开头我说的, 准时上班打卡, 准时下班打卡. 为此, 老板频频的暗示我加班, 但我都无动于衷, 现在每到周六的时候, 老板就会在微信群里发一些励志的文章, 在文章的末尾, 一般都会加上这样的话: 如果周六周日都是睡懒觉, 可想而知, 你的人生会是什么样?
另外还有一个问题, 因为我是公司里唯一的技术人员, 老板是业务出身, 在技术开发这个问题上, 如果我觉得老板的想法非常荒谬, 就直接说出来, 绝不含糊.
举个例子, 前面提到过的, 他觉得微信支付很牛X, 就想到开发一个二维码扫描的功能, 可以直接把微信,支付宝,还有各个银行包括银联在内的二维码整合到一起, 这样就有机会超越微信成为巨兽.
他之所以想到这个问题, 是因为他在使用银行 app 转账的时候, 手续费是免费的, 如果公司能够开发一个识别二维码的手机 app, 将这些二维码整合到一起, 用户就不用在各个 app 间切换了,只需要一个转账的 app 就可以了!
我跟他说, 从技术角度来讲, 没什么问题, 但这个问题最终会演变成商业谈判问题.
怎么说呢? 用户在银行 app 上转账的时候, 除非跨行转账, 否则, 用户的转账行为只对银行一家自己有利, 他当然乐意免费了!
可当跨行转账出现了以后, 就会出现利益上的冲突, 从短期来看可能不会出现, 但从长期来讲, 冲突肯定会出现的.
再从公司的资源结构来看, 我们既没有用户, 也没有资金, 我们凭什么去跟银行谈判? 就凭我们公司的技术吗? 我不觉得这是优势.
顺便说下, 就在我写这篇文章的时候, 我查看了一下银行跨行转账收多少手续费. 通过手机银行跨行转账, 除了交通银行有免收手续费的上限限制之外, 其他银行都没有收手续费, 而如果是其他转账方式, 就收手续费了.
我觉得这个会是商业谈判问题, 可老板觉得不是, 这个是纯粹的技术问题, 只要我们能够识别二维码了, 用户就可以将微信里的钱转入自己的银行账号来, 将支付宝里的钱转入自己的银行账号来, 银行间的转账那更不用说了, 到时候我们可以去拉拢商业用户, 他们的转账资金可是上十万百万呢.
让我觉得不可思议的是, 他会免收手续费.
我想老板肯定搞错了, 如果微信和支付宝拥有庞大的用户, 有能力跟银行谈判的情况下, 都需要对商业用户收手续费, 我们凭什么免费呢?
我想, 他之所以给我取个外号叫爷, 可能就是这些原因吧!
讲到这里, 让我想起另外一件事情, 这件事情让我印象特别深刻, 那就是让业务员自行添加修改费用的权限开放问题.
由于业务员跟客户接触的比较多, 所以他们知道整个业务过程中会产生什么费用. 因此, 好多业务员都提议让他们自己来添加修改费用, 而不是让业务员告诉客服, 然后让客服去添加修改费用. 由于当时客服都已经走了, 添加修改费用的事情由我来处理,为了减少工作量, 我就同意业务员的想法, 并在会议上表达出来, 但我感觉到老板不太高兴, 他仅仅是勉强同意了, 添加修改费用的权限就这样开放给业务员了.
后来有一天, 无意中提到了业务员也可以修改费用, 老板一下子就质问我, 业务员怎么可以自己修改费用呢? 他可以自由的修改费用, 还可以分享到业绩提成, 这不是乱搞吗? 他问我, 是不是我私下串通业务员做出来的?
我感到非常的无奈, 告诉他说, 这是在会议上讨论并决定的, 怎么是我私下串通业务员做的呢?
返回到自己的工作岗位后, 我翻出了QQ群里的聊天记录, 并发给老板看,他回复说, 他没有注意到.
这件事情对我的冲击特别大, 在我看来, 会议上一起决定下来的事情, 还可以这样反悔, 那有什么事情不可以反悔的呢?
在这件事情之前, 我曾经给老板提过几个建议, 都是关于公司发展的问题, 为此, 老板非常高兴, 但这件事之后, 我就把我自己当作一个过客来对待, 对于份内的事情, 按照优先级来安排, 份外的事情, 能够推辞就推辞.
关于不加班这件事情, 我自己感觉做得有点过分, 进入公司一年, 每天准点上下班, 这在整个中国是很罕见的, 本来我自己都有点内疚, 因为我的工作没有完成!
虽然其他同事也不加班, 但他们没有像我一样拖了很多工作. 自从这件事情之后, 我就再也没有什么内疚感了, 直到今年3月份, 新系统进入编码阶段了, 老板跟我说要加班了以后我才加班, 但是我加班, 仅限于周一到周五晚上加2个钟头, 周六坚决不加班, 为此, 老板频频在微信群里发励志文章, 就像前面提到过的.
如才能让我自动加班? 老板可是费尽了心思.
我这个人一直都是独行动物, 从来都是避开人群, 自己一个人走, 因此, 很少有跟同事一起吃饭的情况出现.
有一天, 接近中午下班的时候正在跟老板沟通工作上的事情, 沟通完了以后正准备吃饭. 老板跟我说, 一起吃吧, 我们继续聊.
就这样, 那天跟老板一起吃了中午饭.
其间, 老板问我, 进入公司多久了?
我跟他说, 正好一年.
他说, 我们算是有缘啊! 怎么样, 在我这里做开心吗?
我笑了笑, 心里面不知道该怎么回答他.
然后, 他接着说, 每天准时上班, 准时下班, 还有周六周日可以休息, 你可是有很多的休息时间啊! 你看他们好多人, 每天往体育中心跑(我在广州), 单单上下班时间堵在路上, 都要2-3个钟头.
我想, 他可能想表达某个意思, 但没有直说. 可我也不好去猜人家的意思, 于是就顺着他的话说, 是啊, 之前我在岗顶一家公司上班, 平时坐公车15分钟的路程, 早上上班堵车, 一般都要1个钟头.
然后, 他接着说, 你在我这里上班, 虽然少拿了一点点钱, 但是省了好多时间.
然后有一天早上开会, 老板明确要求全体员工参加. 而平时呢? 都只是业务员, 不需要技术和财务, 因此平时开会都没我什么事, 但这次不同, 要求所有人员参加, 要干啥呢? 开一个读书会.
原来老板读到了傅盛的一篇文章:<为什么打工也要有创业心态?>, 他让我们读后谈谈自己的感想.
因为在此之前, 我曾经读过梁宁的<产品思维30讲>, 梁宁谈到的趋势判断我非常赞同, 因此在会议上, 我就实话实说.
我跟他们说, 心态重要, 但我觉得选择比心态更重要.
我说完了以后, 接下来, 另外一位同事的想法跟我完全不同. 他说, 心态最重要好不好? 一个人的心态不行, 到哪里都一样!
然后老板开口了, 他完全否定了我的想法, 并强调, 一定要端正自己的态度!
这里顺带说一句题外话,梁宁的<产品思维30讲>, 真的非常非常的棒, 如果你们认为我在给人家做广告, 那也行.
作为一名技术人员, 应该去读读,不会浪费时间的, 甚至在我们成长的路上, 还可以节省好多时间.
好了, 又回到正题上来.
就在今年 3 月份的时候, 老板看见我没有要加班的意思, 就亲自跟我提了出来, 他说, 最近这 1 个月, 就辛苦你了, 加加班, 公司可以适当的给你加班费.
我当时真的不想加班, 但也不敢说出来, 作为一个老板, 话都已经说到这份上了, 这就等于是人家在求我了, 如果再不加班, 那就是不识抬举了.
就这样, 我加班了, 但也仅限于周一到周五晚上, 周六依然不上班.
前面我提到过, 我曾经跟老板说, 6.1之前新系统可以完成, 但是准备到6.1的时候, 我只是完成基础数据部分的功能, 业务部分的功能还差一点点, 还有财务部分没有开始.
就在5月底的最后一天晚上吧, 应该是, 我记不得了, 我正在加班, 然后老板也在加班, 我发现, 平时老板都没有加班那么晚, 那天晚上他竟然加班那么晚, 我想, 他很可能要跟我说些什么了.
于是我开始怀疑起来, 当初我跟他说6.1之前可以完成, 这样的估算是否合理? 为了搞明白这个问题, 我就把 SVN 的修改日志翻出来, 查看当年他们开发公司主系统的时候用了多长时间, 以及有多少人开发, 同时也把主系统的数据库数据查出来, 看看真实数据是从什么时候开始生成的. 我要下班的时候, 跟老板打了声招呼, 说自己要下班了, 然后他回复说辛苦了.
就在我转身要走的时候, 他说有个事想跟我聊下. 然后他提到了我的婚姻大事, 他说, 我也是出于个人目的, 希望你多为公司效力, 要我赶紧找个女孩子结婚, 然后在这附近买房.
他说, 难不成我学了这个技术以后, 又要回老家种田不成? 他问我, 能不能跟他说说关于我个人的感情问题, 如果我愿意的话, 他可以凭借他的人脉, 看看能不能解决我的婚姻大事.
不过说实在话, 对于我个人的私人问题, 我都是倾向于保密, 我对别人的试探, 我都很反感. 所以我跟他说, 这个问题是我的私人问题, 我不想谈这个话题.
然后我转移话题, 说, 新系统可能要到7月1日了, 不过现在还有一个问题没有处理, 那就是高薪企业认证还没有完成.
他说高薪企业认证很简单啊, 没什么难度啊!
我说需要提供证明材料, 不过我们现在连一个界面截图都没有, 怎么提供?
然后我问他, 当年开发主系统的时候, 是什么时候开始的?
他回答说, 是2014年5月份开始的, 然后2014年11月份的时候就上线了, 是王总一个人开发的, 很厉害!
我说不可能啊, 我查看了了代码的修改记录, 2014年9月份的时候, 其他人员就已经参与到开发当中来了.
老板回答说, 怎么可能, 除了王总, 其他人员进入公司的时候, 已经是2015年了.
我说, 那不对啊, 我刚进公司的时候, 跟我交接的那两名技术人员都说, 他们是2014年进入公司的!
然后老板就去翻人事档案了!
当然, 翻出来的结果是什么我不知道, 因为当时很晚了, 我要急着下班, 所以先走了!
说到这里, 这一年来的故事基本上结束了, 新系统开发的事情, 业务主流程基本完成了, 还有财务部分没有开始, 最近这两周主要忙于高薪企业认证和新系统的流程测试.
不过在我提出自己的问题之前, 还需要在讲另外一件事情.
那就是关于加薪的问题, 老板已经跟我说了, 加薪的这一部分, 希望我能够拿出来, 作为投资的资金, 投入到公司业务中去, 然后分享提成.
举例来讲, 如果老板给我加薪500元, 也就是每个月多给我 500 元, 这 500 元是作为工资收入发放给我的. 但他希望我把这 500 元拿出来, 作为投资资金投给公司, 假设我要投资的资金是 10000元的话, 公司就每个月扣我 500 元, 一直扣20个月, 这样我每个月领到的工资跟以前没有什么两样, 而我有一个好处就是, 我每个月都有分成, 因为公司的这项业务是按月来结算的.
当然, 分成的金额肯定是比这500元少了, 但金额是多少, 这是个未知数.
不过我担心的问题是, 公司的这项业务是跟贸易有关系的, 现在中美正在打贸易战, 这多多少少会影响到公司的业绩, 因此, 关于投资的问题, 我就持反对的态度.
好了, 下面是我的问题, 我希望大家能够帮我回答下:
1 按照我这一年来的表现, 我存在什么缺点? 仅说缺点, 不要说我的优点, ok?
2 按照我这一年来的表现, 我可以拿到多少工资? 不要问我现在拿了多少工资? 我希望你们能够根据自己的经验, 给我一个比较可靠的数字.
3 关于投资的问题, 按照现在的环境和公司的做法, 我可以入股吗? 需要注意些什么问题?
请划为没有帮助,谢谢
我只想说两点:
1、为啥不早点走呢?
2、不适合入股投资。
大批人员跑路,连总负责人都跑路了,跑路时候说原因很多,而且钱也不合适,你还在这干啥呢?
