简单就好(转)

多年前,面对复杂,我会感概自身能力的不足。多年后,我可能会更多地反思复杂。爱因斯坦主张凡事力求简单,但不要过于简单,大卫马梅也认为 Keep It Simple, Stupid就好。但遗憾的是,“复杂”仍然横行霸道。不是复杂代表潮流,而是因为越简单越复杂。换句话说,简单更多地是一种能力的表现。当然,在市场化的环境下,简单只是利益最大化的手段之一,不排除复杂也是某些商品利益最大化的途径。但我相信这只是少部分,按照“进化论”规律,大环境总体还是往好的方面发展。

我遇过某行业核心系统会以应用各种专业技术、功能复杂度和庞大的服务器数量为标准而号称强大,但该系统运维组做得最多的也唯一能做的运维手段却是重启。到目前为止,服务器进程挂死或宕机已经是该系统的“日经”现象。到了这种地步,其实更应该思考架构或代码层次的优化了。但系统高层责怪的却是系统运维组的各种“不专业”。归根到底,这套系统的“复杂”只是这个行业的映射,也是体制、社会的一个缩影。所以,对于雾霾治理的忧虑,不无道理。在这样的一个大环境下,更让人担忧的是,这种“复杂”往往会被误以为能力的表现。

如果对一套系统架构的了解,需要花费数周的时间,我会祈祷这套系统能运行至正常“退休”。如果说一个普通的程序员不需要对系统架构有太多的了解,我会为这套系统的稳定性和运维成本而感到压力山大。当然也不排除“以0元投标建站来欺诈后续庞大运维费用”的商业目的。还是以上述某行业核心系统为例,我曾经试问过他们的开发和运维人员对这套系统的了解程度,他们毫不犹豫且出奇一致的答复是“真正对这套系统了解的人不多”。事后我思考最多的不是这套系统的问题,而是在同样的大环境下,房子更应该担忧的是质量问题,而不是房价问题。如果以商业安全为由,不允许员工拥有“过多地”的源代码权限,那也不应该忽视员工对系统整体了解的重要性,否则迟早会为“装B”的行为付出代价。

刚开始我也会深深地质疑自己以“简单”为核心理念设计的系统架构,不过经过了时间的考验,至少证明不比复杂的坏。曾经的简单会被客户以“没有运用开源框架”而备受质疑;也曾经因接口没有使用“webservice方案”而被轻视;更试过被其他项目组同事鄙视这简单架构的支撑能力。但时间确实是检验真理的唯一标准。客户可能不知道,当前每日一亿接口访问量的系统上线到目前为止故障率为0;到后来我才知道曾经对接过我们系统的开发人员原来只懂webservice而不会写HTTP(S)+JSON;其他项目组的同事可能不知道我们的架构也使用了单例,而他们只懂Spring才有IOC和AOP。曾经羞涩的我现在变了,我更多地会以上述现象而变得更加自信。

无须质疑,“通用”的背后意味着臃肿和复杂,但通用往往被过于褒义。我现在更加坚信“创造更多思维正面碰撞的机会”是开源的目的,而非简单的开放源码。从这个角度去思考,如果开源过程能更加重视开源设计理念方面的材料,以简单易懂的表达手段呈现给大众百姓,全民参与开源也许是一种可能,带来的效果不亚于市场化对经济产生的强大冲击。如果参与开源的“门槛”减低,也不会出现以“看过源码”为目的的人,更不会为了看懂其设计理念而不得不掌握更多的知识和花费更多的精力来研究其源代码。

我始终认为,以“宏观”的视野做“微观”的事情,是社会未来趋势。我不认为博士生做农民是大材小用,我更认为这是一种“专业”的态度。一个眼神就可以“出卖”心灵,一行代码就能看出实力。广阔的视野更能接近事物的本质,本质越清晰,事物越简单。三十后竞争的不应该是加班能力,而是思考本质的能力。所以,一切简单就好,但似乎没那么简单。

http://www.cnblogs.com/wcd144140/p/5121225.html

时间: 2024-08-10 00:06:00

简单就好(转)的相关文章

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL

Winfrom 简单的安卓手机屏幕获取和安卓简单操作

为啥我要做这个东西了,是因为经常要用投影演示app ,现在有很多这样的软件可以把手机界面投到电脑上 ,但都要安装,比如说360的手机助手,我又讨厌安装,于是就自己捣鼓了下 做了这个东西, 实现了以下简单功能   1.屏幕获取(因为是截图方式获取的,所以有点卡顿) 2.实现点击功能,并在点击的时候出现一个手势图标,方便用户观看 3.实现简单的滑动功能 4.实现在界面上画图功能 5.实现拖拽安装apk功能 操作说明:鼠标左边 模拟手机点击,中键停止/开始刷新界面(画图的时候不能刷新),右键去掉画图内

iOS instruments之ui automation的简单使用(高手绕道)

最近使用了几次instruments中的automation工具,现记录下automation的简单使用方法,希望对没接触过自动化测试又有需求的人有所帮助.  UI 自动测试是iOS 中重要的附加功能,它由名为"Automation"的新的工具对象支持.Automation工具的脚本是用JavaScript语言编写,主要用于分析应用的性能和用户行为,模仿/击发被请求的事件,利用它可以完成对被测应用的简单的UI测试及相关功能测试. 一. 简单的录制脚本 打开xcode,这里用我为我家亲爱

Android ExpandableListView 带有Checkbox的简单应用

expandablelistview2_groups.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&qu

Android ExpandableListView的简单应用

Expandablelistview1Activity.java package com.wangzhu.demoexpandablelistview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widg

一个简单的主机管理模拟程序

最近写的一个小练习,主要是把前面学的东西整合一下.写了一个简单的主机管理界面,主要是练习以下知识点: Session和Cookie进行登录验证(装饰器) 数据库的基本操作 (单表,1对多,多对多) Form的简单使用实现验证 Bootstrap模板写个简单界面 自定义分页 信号,中间件,CSRF,模板语言,JavaScript,AJAX等等 界面比较low,毕竟不是专业的. 附件里面是Django的源代码,3个文件放在一起winrar解压就可以打开

简单介绍一下vue2.0

Vue Vue是用于构建用户界面的渐进框架.作者尤雨熙特别强调它与其他的框架不同,Vue是渐进式的框架,可以逐步采用,不必一下就通过框架去重构项目. 另外Vue的核心库只专注于视图层,这样就更容易与其他库或现有项目进行集成,也更灵活. Vue在兼容性上不支持IE8以下版本的浏览器,用到了ECMAScript 5的功能,所有支持ECMAScript 5的浏览器都没问题,像这些: 安装 如果你已经熟悉并安装webpack那可以直接装一个CLI版即命令行工具,快速方便. $ npm install -

简单利用filetype进行文件上传

对于文件上传大家都很熟悉了,毕竟文件上传是获取webshell的一个重要方式之一,理论性的东西参考我的另一篇汇总文章<浅谈文件解析及上传漏洞>,这里主要是实战补充一下理论内容--filetype漏洞! filetype漏洞主要是针对content-type字段,主要有两种利用方式:    1.先上传一个图片,然后将content-type:image/jpeg改为content-type:text/asp,然后对filename进行00截断,将图片内容替换为一句话木马. 2.直接使用burp抓