IT行业常谈的优雅
起因
前几天在群里和以前一起在成都培训的同学谈论到了求职, 有一位朋友说他在某家外包公司试用失败了, 然后我说了句:不要去外包公司、即使工资高一点。 其实说的时候也没考虑到他本人的处境, 毕竟还房贷资金是很紧张的, 而后有位同学说:是呀,我也就一万多点, 可我并不快乐云云, 可怜我这个正在吃低保的人无法反驳, 只能打出一句:怎么说呢,故作高深却也没想出一个说法出来, 今日做房屋大扫除的时候突然想到了我久违的理由。
以下的观点仅是个人所偏见, 思想杂序无章, 经不起个把推敲, 若有冒犯还请海量。
优雅是什么?
这段时间我们公司来了一个程序员, 他上一家公司做外包的, 和我并不在同一个部门, 有天下班他还在写代码顺便我就在一边看了一下, 哎, 代码风格之乱,修修补补式编程,我觉得不要说优雅二字了, 可以论其恶心二字。
何为优雅? 不少社区都有过文章说过优雅的程序员, 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行业常谈的优雅的更多相关文章
- JavaScript中常谈的对象
为浏览器编写代码时,总少不了window对象 window对象表示JavaScript程序的全局环境 同时 也表示应用的主窗口 到处都是对象 window对象 常用的属性和方法介绍 location ...
- 再谈 javascript 数组去重
前言 数组去重方法老生常谈,既然是常谈,我也来谈谈 双层循环 也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法: var array = [1,1, ...
- [原创]浅谈在创业公司对PMF的理解
[原创]浅谈在创业公司对PMF的理解 在创业时,大多数人都常谈一个词叫"MVP“,但PMF谈的比较少,PMF在创业公司尤为重要,以下谈谈个人一些看法. 1.什么是PMF? 创业公司:一种是找 ...
- TOGAF:企业信息化复杂吗?
本文更新版本已挪至:http://www.zhoujingen.cn/blog/2666.html -------------------- 在与人交流TOGAF的时候,离不开企业信息化,而信息化又离 ...
- 十三篇系列:king转折点,wooga瓶颈,supercell营收结构
转自:http://gamerboom.com/archives/95125 十三篇系列:king的历史转折点,wooga的瓶颈,supercell的营收结构 第一篇 这句话In other word ...
- [BUAA2021软工助教]案例分析作业总结
目录 一.作业链接 二.优秀作业推荐 A+作业推荐 A作业推荐 三.总结 所有案例分析总结 特色与优点 问题与建议 不同类产品案例分析Bug汇总 CSDN问答社区.Stack Overflow.Seg ...
- Android终止线程的方法
线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象.但有时run方法是永远不会结束的.例如在程序中使用线程进行So ...
- 淡扯javascript编程思想
一.面向对象-OOD 虽然js面向对象的编程思想已经老话常谈了,但了为了文章的完整性,我还是把它加了进来,尽量以不太一样的方式讲述(虽然也没什么卵不一样的). 1.面向对象,首先得有类的概念,没有 ...
- Android响应式界面开发要点
现在很多项目需要到达同一个Apk既可以在Phone上跑也尅在tablet上跑,即界面要适应不同尺寸和类型的需要而自动调整.这个即为响应式设计.在web开发商响应式设计已经是个常谈的内容了,而对于and ...
随机推荐
- Java控件(日常笔记)
Java的一些控件 text:文本区域 readonly属性:是否只读.password:密码区域,输入的文本以'*'展示checkbox:复选框 checked属性:是否选中:radio:单选框: ...
- [Java基础] Java中List.remove报错UnsupportedOperationException
Java中List.remove(removeRange,clear类似) 报出 UnsupportedOperationException 的错误.原来该List是一个AbstractList,不支 ...
- 单词(bzoj 3172)
Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N ...
- WdatePicker.js开始日期和结束日期比较
jQuery.validator.addMethod("endDate", function(value, element) { var start ...
- SQL SERVER中的扩展属性
以前在SQL SERVER建表时,总看到扩展属性,但一直未使用过.今天研究下: 增加扩展属性: 语法: sp_addextendedproperty [ @name = ] { 'property_n ...
- Vue#表单控件绑定
使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...
- 逗号分割符--字段中含逗号等情况的解析方法Java实现
最近在处理文本字符串时,没一行数据都是按照逗号分割的,每个字段值一般情况是带有双引号的,但是有的字段值里面还包含逗号,甚至有的字段就没有双引号,这个分割起来就有点麻烦了 下面说一下我解决方法,如果谁有 ...
- linux install Theano+Tensorflow+Keras
安装过程中,网络状态一定要好,如果安装过程中出现time out的提示信息,今天就可以洗洗睡啦,等明天网络状态好的时候再安装. 安装过程出现不知名的错误的时候,执行第一步,update一下 1.#up ...
- ehcache memcache redis 三大缓存
最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考! Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS ...
- 一些稍微复杂点的sql语句
UPDATE test SET content = REPLACE(content,'国家级',''),content = REPLACE(content,'世界级',''),content = RE ...