zoukankan      html  css  js  c++  java
  • 四年记——身在中小企业

    半年的时间,办公室里的人已经走马灯似的换了一个又一个,除了两个领导和几个老资格的员工外,其它的座位似乎都已经至少换了一次主人了。
    这是我心中难以思议的景象,在我的认知里,我们这个行业是世界上最依赖于无形资产的行业之一,这些无形资产,就是程序员脑袋里装着的那些有关公司产品的各种知识以及在工作过程中所积累的专业技能。


    一个更加显然的事实则是,多半的企业,并没有将这些无形资产固化沉淀在公司的能力。人来人往,除了产品的源代码增加或变动了一些,公司依然还是那个公司,并没有任何变化。就如同学校一般,学生一茬一茬的换,而校园,除了今天打破块玻璃明天换了个广播喇叭之类的,不会有任何改变。


    我已经在三家半大不小的企业工作过,这些企业给我的印象,无一例外地都是如此。虽然每个公司都会说,我们通过过了ISO900X,我们有产品周期各个阶段的标准化文档。但你若认真的去考察一下,就会发现,它们虽然个个都有几百K甚至数M的大小,从几十页到几百页不等,但其中只是塞满了截图、代码片断、零星的UML图片以及只有标题的留空段落而已,间或有一些言简意赅的文字。如果想要了解某个“别致”的逻辑的由来,或为什么某个数据不用另一个看起来明显更方便的方式统计出来,最好还是去问项目经理或实施人员,文档一般不会告诉你答案的。


    与这种情况相呼应的则是产品的代码。在第一个企业,我曾惊诧于那些混乱冗长一条龙的代码的生命力,它们似乎好多好多年前就已经存在,历史可以追溯到我还没上大学还分不清主机和显示器的时代。它们看起来却甚至比小孩一年级写的第一篇作文还要糟糕,我一直都无法明白什么样的程序员能写出这样的代码,也不明白经理为什么会纵容这样的代码存在。不过后来我逐渐熟悉这样的代码出世的场景了:


    1. 
    我怒道:“虫哥,你们那个函数能不能不要产生 _2、_3之类的版本啊,你让我用哪一个啊?用多态改写一下会死啊?”
    虫哥:“我也没办法啊,李哥说就这么改,我们没时间啊”


    2. 
    甲:“经理,你看这个模块的开发时间...?”
    经理:“尽快吧,承德的版本里有个类似的模块,你可以参考参考。”
    甲:“那我是重新开发还是...?”
    经理:“你拿过来改扒改扒就好了,先出个能用的版本,等项目上线后再完善”


    场景1是我最郁闷的时候。
    场景2则是皆大欢喜,至少在下一任程序员上任前,所有人的都很满意。程序员不用煞费苦心地设计界面,不用小翼翼地写SQL,只要像农民整地那样,用锄头改扒改扒就好了,Oh!完全不用加班。项目经理也可以按时甚至提前交付程序。领导仿佛已经看见了客户的回款。简单是太棒了!


    关于项目经理,在我刚开始工作时,我曾一度认为那就是产品的姆妈,技术的上帝。直到我看了温伯格的《程序员心理学》,我才恍然大悟,其中第四章中写道:
    现在对软件开发主管们的考评,很大程度上仍然是根据其已有的成果多少,而不是看其是否有能力建立能够创造出更多成果的团队,或是看他们的成果质量。在这样的压力下,主管们就会极尽其能事,编造种种相互矛盾的甜言蜜语去哄骗其属下,以期得到更多成果——当然,这些成果大多是短期的。他们的一些下属也可能领悟出这个游戏的原理,于是也会效仿起这种伎俩,去欺骗他们的下属……;这样一直下去,直到他们也成为这样的主管。这种主管根本不屑于去建立团队,也开发不出什么高质量的成果,而只会再带出更多像他一样的下属——有朝一日这些人又将成为下一代被这样误导的主管。


    虽然事实并非全都如此,但不可否认,有很多经理人也确实是这样的。在我之前的环境中,人们在考虑职业规划时,一般那种实际上对编程没有什么兴趣甚至是厌恶的人才会把第一目标定为项目经理,而那些热爱写代码热爱技术的人则倾向于技术专家或设计师之类的定位。再加上大部分的老板也并不关心代码的情况,因此出现这种情况并不为奇。现在,我已经丝毫不会为了从经理那里听到诸如“改扒”这类词而感到惊讶了。虽然这个词听起来让我感觉有那么一点点不舒服,但后来我就发现它是多么的形象和贴切了。


    我曾一直单纯地认为程序员都是具有叱咤风云的气度的,他们能用0和1把客户的balabalab神奇地变成现实,翻手为云,覆手为雨。我也曾一直认为程序员是最幸福的艺术家,他们不用受制于材料和已经成为现实的遗憾,他们可以随意挥洒,随时重来,直至完美。


    当然,事实证明,我从来都是在以已之心,度他人之腹。后来我才发现大多数程序员绝对不会为自己的工作不会有任何创造性上的限制而感到幸福,因为人们压根就不想成为什么艺术家,或许大部分人们压根就就没有思考过这个问题。对这个行业里的大部分人而言,写程序、出产品只是一个营生,它们只是用来卖钱的东西,与设计和艺术无关。若基于这样的定位,则一切都变得理所当然。

    我可以肯定,在大多数规模中等及以下的企业中,普遍存在着这种状况。你感受不到太多的热情、活力,以及对卓越的追求(嗯,卓越这个词太遥远了,事情上连靠谱都未必能达到)。许多其中的程序员也意识到了这个问题并为此而困惑,然而,我所见到的大部分程序员大多半对这种困惑无法抱以积极的面对态度和处理方式。很多人选择融入这个环境,得过且过,开始生产一样的代码,一样的敷衍客户和领导。另外有少数人则选择逃避,立即辞职考研或试图寻找一家符合自己预期的企业。第二种选择一般难以奏效,小单位总是有之所以是小单位的理由,顶多换个不一样的缺点而已。

    迄今为止,我所工作过的单位基本上都可以归为这一类,它们未必技术水平很烂,然而,它们出的产品却总是离一流水准有很大差距。这有多方面的原因,从程序员、经理、技术储备、管理甚至客户等各个角度都可以找到。不过,关于我对于企业的思考,我需要用另外的篇幅来写。在这里我想说的是我对于自己职业发展的一些想法和精神支撑。

    前面说到大部分程序员无法在沉闷或消极的工作环境中保持积极的工作心态。我很庆幸我能够在这方面做得比一般人要稍微好些。

    我一直不能理解的一件事情是,大多数人们在做选择时,左右他们决定的,往往不是道德、喜好或是理想之类,而是别人的选择。这样的标准在我看来非常荒谬,但这是实情,人们总是试图让自己与大家保持一致和相同,他们对离群和成为异类的恐惧超乎我的想象。我不知道这是否与社会的进化有关,也许平庸真的是安全的代名词吧。而我有一点值得自豪的是,倘若周围的环境或人物不为我的欣赏,那我并不介意成为一个特立独行的人。我不喜欢自称出淤泥而不染之类的——嗯,我不是神棍。任何时候,我愿意身先士卒,我从不指望有谁给我树立一个标杆或给我一条康庄大道,我会用自己的脚印踏出自己的路。

    在我这几年里,我自认为一直保持着较高的学习效率和一流的工作成果。除了对技术的本能爱好外,还有其它一些主观或客观的原因。

    对于价值所在,我有自己的理解。我会把我的工作做到我能做的最好,因为我相信那正是我的价值所在。即使是在这房子遥不可及的时代,我也从未想过只为了生存而工作,我无法放下那份骄傲。或许有点可笑,在我上初中的时候,有老师曾说我有点骄傲,自那以后便时常前瞻后顾地反省自己有没有骄傲。然而从上大学至今,我的所谓理想和向往,却只能深植于这份骄傲之上。

    除此之外,回头再考虑一下我们所处的环境,它们又真的是否如我们所抱怨的那样不可救药和一无是处呢?即便在那个被称为“有一流的市场营销,末流的程序员”的单位,在我所在的部门中,我认为也至少有五六个人完全算得上是真正的程序员。另外,你又真的完全没有空间来完成优秀的作品吗?在我第二个单位的时候,第一个开发独立模块的任务就是延期完成的,然而看到效果后,经理基本上就不在接下来的工作中过问我的进度了。我也渴望一流的团队,激动人心的工作内容。但我一直谨记一句话,在黑暗中,点滴星光足以指引我们前进。大部分在中小企业中废掉的人,都缺乏将责任归咎于他人和企业的足够理由。

    最后,我是一个危机感很重的人,年少的时候既然是在为十年乃至二十年之后打基础,那我就无法得过且过。从第一家单位离职的时候,技术总监把我抓去聊天。我对他说,我们目前的优势来自于总部的品牌优势和规范的数据库平台,但我们的前端落后太多,我们那些刚刚开始使用电脑的客户(机关里的大婶大姐们)或许现在能够接受我们的软件,但当他们对电脑驾轻就熟之后,或是我们的客户换成年轻一代时,以我们的用户体验,能留住多少用户?这不仅仅是我那时对企业的担忧,也是对自己的担忧。如果数年后,我能做出来的东西会被用户鄙视,那我该何去何从?就算我放弃对卓越程序员的向往,我也无论如何都不会让自己毫无退路。在坐以待毙和经济危机下的前路未知之间,我宁可面对后者。

    历数数年来所工作过的单位,在问心无愧之余,我亦庆幸自己能够一直有勇气做出选择。虽然我的选择并非总是于自己的职业生涯有利,但毕竟人的一生并非仅仅一份工作而已,用同学中混得最好的小乐同学的话说,就是“我们这刚进入社会的,先要学的是做人做事”。小乐平素爱瞎扯忽悠,但也偶有靠谱之语。我不爱扯淡,但总算是有原则的人。所谓为人当俯仰无愧,在TX、Baidu等大树下无风无雨的同学自然无此顾虑,但在万般皆下品,唯有公仆高的当下,多数人却不得不时刻在着生活的考验中,小心翼翼的维护心中那分微薄的理想与坦然。

    此致!用小子娄的话说,我这叫“脚踩西瓜皮,滑到哪里是哪里”,请勿介意这段毫无头绪的我为数不多的扯淡。其实这主要是前三年的一些困惑与焦虑,现在的心态早已平和,也了解就算一线企业,也未必那么理想。只是心中依然有些不甘平庸而已。

  • 相关阅读:
    qq客服不需要加好友
    mysql中表名为关键字的处理方法
    DIV+CSS最小高度(兼容IE6\IE7\FF)(转载)
    Js%26String添加加+trim()方法
    MS Sql 定期自动备份
    MySQL 中文显示乱码
    SQL Server 2005 中的Row_Number()函数
    Jquery中使用setInterval和setTimeout
    fieldset 居中
    script language="JavaScript" defer
  • 原文地址:https://www.cnblogs.com/yedaoq/p/2037214.html
Copyright © 2011-2022 走看看