转眼间,入职工作就一个月了。虽然短短的一个月,却有很多感触。

工作后,首先是身份的转变,由学生到职场的社会人。相信每个工作后的人,都会怀念学生时代吧。学生时代的安逸舒适,有充足的时间娱乐,允许“犯错”,代价不大,而工作后,是不允许随便犯错的,特别是对于创业公司,犯错是要承担代价的,一不小心就被炒了。杨boss在我入职前也这样对我说,创业公司是比较辛苦的,可能会经常加班,要有强大的压力承受能力,做好心理准备!这我当然知道,要是我没有心理准备,我就不会加入这家公司了(附:杭州找工作小记)。

工作前的期待

之所以放弃掉另外两家相对稳定的公司,而选择这家创业公司,因为找工作我看重两点: 跟对人和做对事,另外也希望在创业公司能学到更多东西,磨练自己。共享经济模式的私厨领域是非常有前景和有意思的,值得加入,而且在创业公司说不定除了跟着牛人学技术,还可以了解到整个项目的策划、运营、产品等各个模块呢?(呵呵,不过现在想想也太可笑了,too young too simple ~)。然后就满腔斗志“入伙”了。

现实向我泼了一瓢冷水

公司很小,现在也不到20号人,各人各司其职,所以就不可能了解到除技术外的东西(除非你自动问别人)。公司开发人员加上CTO老大居然只有5人,而且有两个女生,起初比较惊讶,后来也逐渐发现团队技术并不是十分强,所以就更不要提有牛人带了。一次公司聚餐中,和杨boss聊到新项目的一些想法,只记得当时自己的想法确实有点天真,万万没想到私厨领域的市场会那样做,也了解到一个观点: 一个好的idea是需要经历和阅历去沉淀的,而大学生这方面比较缺乏。

虽然是创业公司,但阿里系的杨boss算是第三次创业了,加上其他人也工作很多年了,资历上都算比较丰富,所以项目的决策基本都是CEO、CTO和PM决定,分配到各部门的头头,再分配下去,我也就只是个技术打杂的,所以对项目的一些详细的内容也不是特别清楚。当初没认清学生团队的创业者和这种有资历的创业者的区别,是后来造成心理偏差的原因。

开发团队不注重技术的更新,这是我心凉大半截的原因。入职几天后,就开始发现这个问题。所以我也就“初生牛犊不怕虎”地“怂恿”老大用新的技术/平台,不过这也悲催的成为了后续矛盾的火种。从eclipse转到android studio,新项目采用material design的设计风格,并使用android的MD support包,可惜他们都不了解这些东西,所以当时费了不少口舌说服团队转换到AS开发平台。当然也被老大追问了很多使用新平台可能遇到的坑,也叫我一一解决。真是压力山大,但作为开发者,不能容忍不注重技术的更新!不过,从中也知道一个真正的商业项目,技术选型是十分重要的,所以他们偏向选择熟悉的技术也正常不过,一旦选择新技术,就要考虑到技术的稳定性、可靠性、开发周期是否会受到影响。但是,但是,我就是不喜欢一成不变,而且以上所说的技术,很多公司早已经使用了,第一次接触,难免会踩坑的……于是,两个性格都很犟的人就吵上了……

工作的状态

入职后,老大直接让我做新项目的demo版,刚开始以为项目比较紧而且他天天问进度,作为新人,也希望尽快弄些成果出来证明自己,所以搞得比较紧张。后来慢慢了解公司和项目情况才慢慢适应下来。前三周不用加班。

新项目是最近两周才正式开始,要求月底上线第一个版本,也就是三周的时间。上班改为单双休,加起班来几乎是996(早9晚9, 6天班)的状态,天天如此的话,真心有点吃不消(无论身体还是脑力),也会逐渐觉得工作有点乏味,所以如果有未上过班的人和我说加班不到10点,不算什么,我就呵呵了,真正体验过每天都加那么晚的话,你会越发觉得工作越来越没意思,除了工作也就只剩下工作了(当然这种情况,游戏公司的除外,可能不会这样觉得)……反正我是这样认为的,当然,也不是讨厌加班。

差点就想辞职了。为什么会萌生这种想法?可能是当时压力太大,而且不被理解,团队沟通有问题。上周三,当天的任务就是集成支付宝的支付模块,官方的demo是本地测试的,所以所有key都是直接放在代码中的,这确实不符合一个商业项目的开发方式,也不够安全。真正的流程是客户端不需要知道任何key,加密都是在服务器处理,只需要将订单id提交给服务器,再接受返回的结果向支付宝发出支付请求……可是当时用的是他们之前弄的一个demo,在处理服务器返回的字符串时,原代码将顺序的格式写死了,然后和老大加班调到晚上12点多才解决这个问题。第二天,又遇到一个坑爹的问题,就是向服务器提交订单信息时的头部base验证问题,弄了好久还是没解决,老大找了个代码,说那不是很简单吗,自己看代码解决下?(每次他这样说,我们都弄了很久,简单个毛线……十分不喜欢那种自以为是,说话太过绝对的语气)。又一天早上,他来处理那个头部base验证的问题了,也弄了很久,然后,然后,发现Android studio平台上不能快捷查看方法的相关实现代码,然后问我怎么解决,这是你推荐使用的平台,有问题得你解决呀!!!(⊙﹏⊙)b,这是AS的一个瑕疵,我怎么知道怎么解决,要找的话,试下全局find不就可以了吗???这问题一定要解决,不然就换回eclipse开发。。。(这不是坑爹吗?有必要吗?心想)……后来,我找到解决头部验证的问题,才作罢。不过,又一个问题来了,喂,前天的支付问题,不是叫你怎么处理那个顺序的问题,balabala,我顶你个肺(真是这样说)……然后我问他“怎么弄?”,问了三遍,他没说怎么弄,我没等他说完就走了……就不能直接点说怎么弄吗?好像非得让我折腾一番,然后还是不懂,你才愿意告诉我答案似得,好累,无语了,我真算是跟错人了……反正已经吵了,最多被炒,最多辞职,无所谓。(当时的想法,不过现在想想确实有点冲动,不过于人于己都有错: 技术人的自负,说话太过肯定与绝对,人性的傲慢与偏见、冲动与犟)

开发中的那些不酷的事

作为一个技术人,一个有完美主义偏向、代码洁癖和有技术追求的开发者,如何看待开发?
1.刚入职第一天,发现公司的网络居然不备梯子,还在开着chrome却用度娘,卧槽,这种在墙内工作也太不酷了吧,还是用回自己的笔记本(可惜现在红杏也挂了),后来公司开启了极路由的梯子也就作罢;电脑性能有点差,才4G内存,有时候有点卡,特别不爽;
2.团队不注重技术更新,太过保守,虽然技术选型需要考虑安全可靠和效率,但有些技术已经比较成熟,只不过他们没使用过罢了。如Android的MD设计、MD support包、Android studio平台和gradle。作为技术人,个人觉得技术更新非常重要,而不是一项技术用n年(不过不是技术型驱动的公司难免会存在这问题,所以最近越发萌生期待进入技术型驱动的公司的想法);
3.开发中命名规范不统一,有些命名,如一坨翔般(团队中居然没有统一的编程规范)。首先是服务端端命名与客户端命名不统一,造成理解成本增高,容易产生误解,如菜名的字段,我在客户端命名dishName,服务器端却是title。。。啊啊啊,这是什么鬼?(刚开始有这样赶脚,现在也逐渐适应了,以后要全部统一,才比较好理解和提高效率);客户端命名不统一,代码风格也糟糕透了!Android客户端就两个人,发现同伴命名有时真的不忍直视呀,如: 静态常量居然是一连串大写字母,也不用短横线_分开,可读性极差;还有一些变量命名也完全没规则,看了完成不知道什么意思;Java的左括号居然另起一行!另外,居然用拼音命名,我要哭了;僵尸代码不删,无用资源文件不删……这纯粹只是为了完成任务吧?好吧,鉴于项目比较赶,暂时不计较那么多。但这是最基本的编程素养,应该在开发过程中就做好,而不是以后再改呀!
4.整个团队的沟通不够顺畅,信息传达不够直接!我们使用的是有道云协作工具,每次服务器提交或修改接口都直接发在什么,也不提醒下,谁会整天去看?所以每次都害得我再问一次,或调试了很久才发现问题;由于原团队的一个Android主程去弄iOS了,然后每次还是由她传达任务,不够直接……
5.能力不被认可,总是和我说一些低级的问题,所以每次都有点不情愿地听;
6.感觉PM就像个监工的赶脚……
7.……
当然,我只说了团队中存在的一些缺点,但也是有优点的,也有很多值得学习的地方,不能吹毛求疵,感谢这种不完美,让我有更多机会去发展。

如何看待加班?

“不作无谓的加班”,这是CEO提倡的加班文化,也就是当天没完成任务的自觉加班,加班一定要做实事,有价值,而不是为了加班而加班。所以这两周晚上,基本上也只有开发的5、6个人加班而已。加班我是不反对的,但频繁的加班确实有点吃不消,还需要慢慢适应。另外,也赞同卖桃君的看法: 无论加班与否,能够高效高质量产出才是最重要的,个人在工作中得到的锤炼和心智的提升也是非常有价值的!

杂想

1.有些事别人不会直接告诉你,而是让你自己去体会,去经历,但同时,你又要保证自己不能犯太大的错误;
2.要拥有强大的内心,去容忍所谓的”委屈”
3.产品经理”懂”技术,就好比流氓会武功;
4.编程就如一门艺术,有人精益求精,有人只是为了混口饭吃。然而,完美主义,有时并不是好事;
5.要主动问,不要等着别人来告诉你!Don’t wait to be told.Ask!
6.某种程度上,没有一定的时间积累和人生阅历,不足以谈产品,你所看到的东西,都是别人让你看到的表象。不要被现象所迷惑。(其他领域也一样)
7.时间的打磨,会让一个人更加认清自己,认清现实,少几分傲气,多几分脚踏实地,并追求更优秀的自己!

最后,套用和菜头的话结尾:

请你相信我:
我所说的每一句话,
都是错的

(不知道,工作一年后,再看这篇文章时,会有怎样的想法呢?-_-)

by cfanr
2015.08.23