起因

前几天在群里和以前一起在成都培训的同学谈论到了求职, 有一位朋友说他在某家外包公司试用失败了, 然后我说了句:不要去外包公司、即使工资高一点。 其实说的时候也没考虑到他本人的处境, 毕竟还房贷资金是很紧张的, 而后有位同学说:是呀,我也就一万多点, 可我并不快乐云云, 可怜我这个正在吃低保的人无法反驳, 只能打出一句:怎么说呢,故作高深却也没想出一个说法出来, 今日做房屋大扫除的时候突然想到了我久违的理由。

以下的观点仅是个人所偏见, 思想杂序无章, 经不起个把推敲, 若有冒犯还请海量。

优雅是什么?

这段时间我们公司来了一个程序员, 他上一家公司做外包的, 和我并不在同一个部门, 有天下班他还在写代码顺便我就在一边看了一下, 哎, 代码风格之乱,修修补补式编程,我觉得不要说优雅二字了, 可以论其恶心二字。

何为优雅? 不少社区都有过文章说过优雅的程序员, sublime是优雅的云云内容, 但很少有人谈及:如果没有优雅可言, 我们程序员本人又会出现什么问题呢? 工资还不是照拿, 毕竟钱才是硬道理。 我觉得论没有优雅的坏处需要从计算机本意谈起, 这是个很大的话题, 笔者目前学艺尚浅, 举不出很多高级的例子, 各位仁者见仁、智者见智吧。

那么计算机的本意又是如何的? 此处的本意可以说本质、本体等, 也就是产生计算机时是为了什么? 答: 方便。 最初的计算机产生是为了计算方便, 人类总是朝着更先进的地方前进, 先进会使人节约时间, 这是人类支持人类进步的一种力量, 说回计算机, 其实这种“方便”的理念即为我们所说的优雅, 这是计算机存在的唯一目的(以下优雅=方便含义), 读者可看当今的最新技术有哪一个不是为了实现优雅? 如今的云计算、AI、VR, 以前产生的汇编语言、B语言、C语言、C++语言等等实现不就是为了优雅吗? 试问如果还是0011或者mov ax, 1100H来进行每一种程序的编写, 你觉得会怎样? 暂且不论计算机改变现实中的优雅, 且论程序方面的优雅。

没有优雅的后果

我们总是要和人共同工作的, 所以团队的协作极其重要,重要到一个团队协作方案可比千金, 当然这是大公司。  但即使是小公司, 团队协作不好,可说为不优雅, 协作得好, 可谓优雅二字, 不优雅也就是不方便, 不方便就会浪费时间, 当这种不方便是一个体系造成时,体系内人数越多, 那么这个浪费的时间也就很可观了, 所以会产生架构师、CTO等等职业, 他们需要对实际业务和团队协作做一个平衡点, 平衡天平偏向任何一方都会让其不优雅。

那么没有优雅会怎样呢? 且看假如: 如果你们不用项目管理软件, 单论多人协作写功能时的不便, 恐怕就可以让几个程序员猝死, 举一反三,假如到版本发布、生产环境、BUG修复以及一些自动化设施搭建等等, 估计下要猝死多少人呢? 而且行之大多为繁琐性的, 日复一日、年复一年, 恐怕需要将办公环境迁到医院附近, 以便于抢救。 我们再来想想上面说的新技术的产生原因: 为了优雅。 且论如果你不懂得优雅, 又该以怎样的途径来学习新技术?

体系和优雅的关系

那么这和外包公司有何联系? 笔者最近常看历史书, 每当里面谈论到历史关键点时, 书中总会提一句: 形势强于人嘛。 这句话所代表的是总结性的经验, 且看清朝李鸿章外交以夷制夷手段何其高明, 却也敌不过形势, 最终间接被俄国外交者逼死在床, 所以历史家们谈及某关键性事件时总需要思考形势, 不然无法理解其所作所为。 据我所知(见识少,且海涵), 如今国内的外包公司基本都是追求最快速度, 只要能按时完工, 那么公司基本是不会为难你的, 其实体系也就相当于形势, 在一个坏体系里你是不太可能咸鱼翻身的, 大多数外包的情况且不是翻不翻身的问题, 而是你会不会被其体系吞噬个人思想,最后无它法只能转型。  不论其优雅单说学习新的技术, 新技术好比一颗需要上在适合业务的螺丝钉, 而业务是由公司产生的, 所以公司达不到业务亦没有其需求, 这个技术对你而言是何其鸡肋, 最后懵懂其构造弃之。当然体系的重要性远比我写的多得多, 这里可拿古人对科举制度状元等形成的重要因素评价比喻:1. 运气.。2. 命运 。3. 祖宗墓葬风水的影响 。4. 善行。5. 学习。

外包体系的局限性

如今的外包有多少是有一个良好的体系的? 当然做独立产品的公司也是坑遍地, 不过论其数量我想应该是不及外包的, 其危害性我只能打一个比方论其一方面之利害: 笔者在最近维护公司产品时深感前端代码之杂序无章, 所以自主构建了一套前端的MVC应用(技术不强、轻喷)。 处在外包公司的大多数人会不会想到不需要人督促来修整行为呢? 答:几乎不会。 这是体系造成的, 外包领导人只需要快速完成最后的交付工作, money到手就可不用大管了, 这里快速并不代表是有多么高效, 基本只有“效”无其“高”, 最终这种追求效率且不追求质量的行为久而久之是会影响你自己对于产品等等的理解。 我有幸进入了一家麻雀虽小却五脏俱全的公司, 可以说在这家公司我学到的最重要知识便是:认真对待你目前敲的这行代码。  这个思想很重要, 这是让我们构建自己的优雅基础部分, 其次还需要标准化等等, 我们部分的老大是位对其产品为自己孩子的人, 虽然这种理念看上去有点鸡汤, 但这对于程序员来说基本是有益无害的, 这也是你成为对产品有处理权(高升)的一个重要部分, 不然我觉得去code review时看见别人的代码就会不自主的想略过, 也就是其严谨。

为什么需要优雅以及组成优雅的必要条件

想形成优雅, 需要的主观方面有很多, 不论是严谨、自我驱动等都不可少, 这些东西基本是外包无法让其形成的, 而优雅是在想脱离程序员初级层次以及以后每时每刻都是必需品, 可说目前外包大多数的体系都是违反计算机潮流的, 为了远见及深入、 难有入其外包之理。 说一个小例子, 某日有人面试了位两三年工作经验的程序员, 谈其mysql等数据库只停留在基本crud层次, 对mvc设计理念停留在model、controller、view几个文件方面, 虽然这些东西已是基础不能再过于基础。

该怎么办?

每人学习的方式都不一样, 简要总结就是: 多思考、多行动、少撕逼。 精华总结便是黑哥的:整就牛。

最后

再多说一句,在不那么急需钱时不应该想着类似“十五年赶英超美”的想法, 虽然作为穷人基本每人都想在最有野心的时候拥有一切, 欲速则不达, 这句口号其实也是个笑话, 背后的机制让人恶心, 有兴趣可以在《晚清七十年 ---远洋版》一书中找到原因。

IT行业常谈的优雅的更多相关文章

  1. JavaScript中常谈的对象

    为浏览器编写代码时,总少不了window对象 window对象表示JavaScript程序的全局环境 同时 也表示应用的主窗口 到处都是对象 window对象 常用的属性和方法介绍 location ...

  2. 再谈 javascript 数组去重

    前言 数组去重方法老生常谈,既然是常谈,我也来谈谈 双层循环 也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法: var array = [1,1, ...

  3. [原创]浅谈在创业公司对PMF的理解

    [原创]浅谈在创业公司对PMF的理解 在创业时,大多数人都常谈一个词叫"MVP“,但PMF谈的比较少,PMF在创业公司尤为重要,以下谈谈个人一些看法. 1.什么是PMF? 创业公司:一种是找 ...

  4. TOGAF:企业信息化复杂吗?

    本文更新版本已挪至:http://www.zhoujingen.cn/blog/2666.html -------------------- 在与人交流TOGAF的时候,离不开企业信息化,而信息化又离 ...

  5. 十三篇系列:king转折点,wooga瓶颈,supercell营收结构

    转自:http://gamerboom.com/archives/95125 十三篇系列:king的历史转折点,wooga的瓶颈,supercell的营收结构 第一篇 这句话In other word ...

  6. [BUAA2021软工助教]案例分析作业总结

    目录 一.作业链接 二.优秀作业推荐 A+作业推荐 A作业推荐 三.总结 所有案例分析总结 特色与优点 问题与建议 不同类产品案例分析Bug汇总 CSDN问答社区.Stack Overflow.Seg ...

  7. Android终止线程的方法

    线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象.但有时run方法是永远不会结束的.例如在程序中使用线程进行So ...

  8. 淡扯javascript编程思想

    一.面向对象-OOD   虽然js面向对象的编程思想已经老话常谈了,但了为了文章的完整性,我还是把它加了进来,尽量以不太一样的方式讲述(虽然也没什么卵不一样的). 1.面向对象,首先得有类的概念,没有 ...

  9. Android响应式界面开发要点

    现在很多项目需要到达同一个Apk既可以在Phone上跑也尅在tablet上跑,即界面要适应不同尺寸和类型的需要而自动调整.这个即为响应式设计.在web开发商响应式设计已经是个常谈的内容了,而对于and ...

随机推荐

  1. October 19th Week 43rd Wednesday, 2016

    I find that the harder I work, the more luck I seem to have. 越努力,越幸运. However, I find that the harde ...

  2. SQL入门语句之运算符

    运算符是一个保留字或字符,主要用于连接WHERE后面的条件. 一.算数运算符 运算符 描述 + 加法 - 把运算符两边的值相加 - 减法 - 左操作数减去右操作数 * 乘法 - 把运算符两边的值相乘 ...

  3. 【Javascript】解决Ajax轮询造成的线程阻塞问题(过渡方案)

    一.背景 开发Web平台时,经常会需要定时向服务器轮询获取数据状态,并且通常不仅只开一个轮询,而是根据业务需要会产生数个轮询.这种情况下,性能低下的Ajax长轮询已经不能满足需求,频繁的访问还会造成线 ...

  4. windows 10 设置

    精简应用 邮件和日历: Get-AppxPackage *communi* | Remove-AppxPackage 新闻: Get-AppxPackage *bing* | Remove-AppxP ...

  5. redis数据类型之—Sorted set

    (1)sorted set 简单介绍 有序集合,在集合类型的基础上为集合中的每个元素都关联了一个分数,这样可以很方便的获得分数最高的N个元素. (2)sorted set 常用命令

  6. 《DSP using MATLAB》示例Example5.12

    代码: n = 0:10; x = 10*(0.8) .^ n; y = cirshftt(x,6,15); n = 0:14; x = [x, zeros(1,4)]; %% ----------- ...

  7. Python爬虫学习(6): 爬取MM图片

    为了有趣我们今天就主要去爬取以下MM的图片,并将其按名保存在本地.要爬取的网站为: 大秀台模特网 1. 分析网站 进入官网后我们发现有很多分类: 而我们要爬取的模特中的女模内容,点进入之后其网址为:h ...

  8. 分享一下自己用c++写的小地图

    http://www.unrealchina.com/forum.php?mod=viewthread&tid=451&extra=&from=portal&page= ...

  9. java-集合1

    浏览以下内容前,请点击并阅读 声明 集合(collection),可以看做一个容器,是将多个元素组合成一个单位的对象.集合用来存储,检索,操作,交互一些聚集的数据.通常,集合用来表示一个组的数据,就像 ...

  10. 一言不合敲代码(1)——DIV+CSS3制作哆啦A梦头像

    先展示一下我的头像吧. 作为一个前端ER,我的头像当然不能是绘画工具画出来的.没错,这个玩意是由HTML+CSS代码实现的,过年的某一天晚上无聊花了一个小时敲出来的.来看看它原本的样子: 为什么会变成 ...