程序员的罪与罚

简介:

到家看着全幅的镜子,愣了一下。半袖圆领,宽松的运动裤,整个短发,带着右上角的一小撮明显是被睡觉压直的头发,勾勒出的方形的发型,两眼直盯盯的,好像在思索着什么,实际上是在放空神游。我想如果再加上小黑边框眼镜,这或许就是教科书版的程序员的样子了。什么职业就该有什么样的外在,原因不在于职业所要求的,而是职业营造的环境所熏陶的。我明白了,在程序员这条康庄大道上,我正在昂首阔步走着。。。

走着归走着,总归是会有一天想知道下是为什么要这么走着,以及怎么走更好的吧。我想,如果想好了这些问题,倘若还能继续走着,恭喜你,你今后是不会再被这样的困扰打扰了。如果从来就没想过这些问题,那么要不你就寄希望于及到老死,你不会想起问自己这样的问题,要么你总归是要停下来思考的。

程序员和产品

程序员做着公司的项目,拿着公司的薪水。天经地义,于情于理。然后呢?

一个公司的工种会分好多种,有产品经理,运营,测试,开发等。国内的公司大都是产品经理作为产品项目的主线(请不要拿google啥的公司做比较,那种比较就相当于一个3岁小孩在羡慕当值壮年一样)。

当一个项目开始进入概念设计阶段的时候,程序员一般是没啥发言权的,这个时候是产品经理的天下,据说最流行的是头脑风暴。而后是进入产品细节设计阶段,这个时候会有产品经理,UI,UE等人员介入。在这个阶段,有些公司会给予开发程序员一些话语权了,主要也是需要程序员考虑到实现的可行性。

下面是开发阶段了,这个阶段就完全是程序员的天下了。但其实,大都是这么个情境:产品经理问,-- 这个页面什么时候能开发完?2天?不行,时间缩短些吧。1天。-- 好的,一天就一天。后来发现,这个具体的实现起来好像还有些复杂,需要加班搞了。有些有良心的产品经理也会陪你加班加点,于是程序员和产品经理就有了深厚的革命基情。

开发完成后,进入测试,测试阶段需要测试人员+开发人员。测试人员测试也经常需要加班加点,而且测试的人员往往会比产品经理的IT知识懂的多些,于是呢?测试人员和开发人员的共通语言更多,所以开发和测试的革命感情较之开发和产品的组合更黄金些。以至于很多的你开发来我测试的夫妻店组合层出不穷。而后的运营,推广,客服,和程序员是半毛钱关系没有了。最多是做些技术支持和bug调试了。

至此问个问题:产品到底是谁的呢?

每个工种都是公司的螺丝钉,多好。总让我想到一些什么呢?对了,富士康。对,就是那个有名的垂直落体。每个人都是生产线上的一个环节,大家“共同”的努力结果是产品。但是实际上呢?上面的各个工种,产品经理才是最有发言权的。而这个工种,是被程序员们背地里诟病最多的一个。再我看来,只有产品经理才对产品付出的最多,从最开始的设计,到最后的运营。根据付出和感情的正比关系,它们是对产品最有感情的人。其实,它们是最不应该被诟病的人,至少是最不该诟病的工种。

程序员对产品也是有感情的。但是在过往的几家公司呆过之后,深刻体会到一点,大多程序员已经对产品没有感情了。我们不会把产品当做是我们的孩子一样呵护。原因是什么呢?亲眼见过你花两个月做的一个项目由于公司的决策,直接砍掉,所有人员分配到其他部门。也亲眼见过一个已经维护了很久的团队,由于决策的问题,直接换血换人。这些东西,于决策层,无可厚非,是正确的。但是于感情上,相当于是将一个已经养育成年的孩子谋杀或者假手他人。于程序员的个人观,是毁灭的。公司的项目是公司的,产品是公司的,我只是打工而已。这样的想法自然出现,于道理于人性,合理。于是,成为现实,大多数程序员已经对产品没有感情了。于是程序员天天的紧张、繁忙,在口头嚷嚷着为用户服务的时候实质已经变味,实际只是为自己的工作饭碗服务罢了。

其实环望一下,运营,客服,甚至于产品,有多少是把产品当做自己的产品在做呢?从这个角度上来说,技术其实是很幸运的了。因为程序员大都在处理业务的同时也在耕耘着一份技术的农田,在这里,才能真真感受到山泉,和有点甜。

所以说,倘若有刚毕业的人问我选择什么样的公司最为重要,至少以我目前的观感来说,选择一个稳定的,有技术成长的公司最为重要。这也是我对技术选择外包公司深恶痛绝的理由。

程序员和技术

技术至上,是没错的。但是至上到极端,或许就是我们程序员的又一个通病了。对于那些不懂或者不如自己的那些人来讨论问题,往往就有人摆出一份高傲的态度和姿势。技术已经是把一天的24小时进一半奉献了在了与人隔绝的时空中了,如果再丧失与人交流的机会和能力,我想这该是可悲的吧。人有千面,以一面判断人的黑白实在是太迂腐了。每个人都有闪光的地方,从这个理由来说,看不起一个人实际上是等同于你没有能力看到别人的闪光点。

自卑到极致也是一个通病。我对自己的技术没有信心,不敢对外展示我所知道的。怕丢脸,怕被人看不起。写篇技术文章害怕被别人说这么点水平也好意思写。于是乎,成长很容易在这种心态下被自己掐住脖子扼杀。

其实有一点我觉得很奇怪,程序是让世界更加美好的一个事物,它应该是一个以节省劳动力为目的的技术。理论上来说,程序员应该是越来越少的一个职业,但是现今望去,多是程序员已经成为了劳动密集型的工种了。大多的程序员的工作已经和装轮子,卸轮子没啥区别了。

这样的现状的原因是什么呢?是我们程序员还不够对程序精进吗?还是我们实际上没能力改变呢?我们的目标不要大到改变世界,或许我们只要能改变自己的环境就很好了?这个事情,我们能做得到吗?

后记

想想我们程序员还很喜欢自嘲,微博上发散信息并且捎带些幽默自我讽刺的段子大都是程序员发的。

文章写到的毛病在自己身上都找得到,思考的过程有点像手撕贴在伤疤上的人皮面具一样。没事,等头脑缓过来,我再贴回去。。。




本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2013/05/18/3086194.html,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 SQL 自然语言处理
YashanDB PL 引擎
YashanDB PL 引擎
|
消息中间件 监控 Java
Java一分钟之-Kafka:分布式消息队列
【6月更文挑战第11天】Apache Kafka是一款高性能的消息队列,适用于大数据处理和实时流处理,以发布/订阅模型和分布式设计处理大规模数据流。本文介绍了Kafka基础,包括生产者、消费者、主题和代理,以及常见问题:分区选择、偏移量管理和监控不足。通过Java代码示例展示了如何创建生产者和消费者。理解并妥善处理这些问题,结合有效的监控和配置优化,是充分发挥Kafka潜力的关键。
229 0
|
算法 容器
【算法】双指针
【算法】双指针
105 0
|
机器学习/深度学习 存储 人工智能
人工智能:重塑未来的力量之源
人工智能:重塑未来的力量之源
111 1
|
存储 Kubernetes 网络协议
安装Kubernetes集群
安装Kubernetes集群
729 0
|
机器学习/深度学习 人工智能 自动驾驶
Reinforcement Learning
强化学习(Reinforcement Learning,简称 RL)是机器学习中的一种方法,主要用于训练智能体(Agent)在不确定环境中做出最佳决策。强化学习通过反复试验,根据智能体采取的行动所产生的奖励或惩罚信号来调整其行为策略。与监督学习和无监督学习不同,强化学习是一种无模型学习方法,不需要大量标注数据。
182 3
|
机器学习/深度学习 搜索推荐 算法
16 机器学习 - CF协同过滤算法补充
16 机器学习 - CF协同过滤算法补充
116 0
|
SQL Oracle 关系型数据库
[MySQL] 排序与分页(二)
[MySQL] 排序与分页(二)
|
存储 编译器 Linux
C语言进阶之自定义类型(结构体,枚举,联合)
C 语言允许定义可存储相同类型数据项的变量,结构体是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
|
存储 缓存 iOS开发
Mac NTFS读写软件Tuxera23最新版本
当我们遇到磁盘不能正常使用的情况时本能的会以为是磁盘损坏了,但某些情况下却并非如此。
381 0