写点什么

陈皓谈对待技术的态度

  • 2012-08-18
  • 本文字数:2327 字

    阅读完需:约 8 分钟

最近在酷壳上,陈皓撰文阐述了对待技术的态度,如何面对技术的快速更新?是否做软件开发比以前更加困难了?他都给出了自己的见解。

陈皓首先针对“如何看待日新月异的新技术”做出了回答:

遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。有人说技术更新换代很快,我一点儿都不觉得是这样想。虽然有不成熟的技术不断地涌出,但是成熟的技术,比如 Unix,40 多年,C,40 多年,C++,30 多年,TCP/IP,20 多年,Java 也有将近 20 年了……,所以,如果你着眼成熟的技术,其实并不多。

他的核心观点是——要了解技术就一定需要了解整个计算机的技术历史发展和进化路线。你要朝着球运动的轨迹去,而不是朝着球的位置去,要知道球的运动轨迹,你就需要知道它历史上是怎么跑的。

然后,他简要回顾了 IT 技术的脉络,并列出了几条关键的主线:

70 年代 Unix 的出现,是软件发展方面的一个里程碑,那个时期的 C 语言,也是语言方面的里程碑。(当时)所有的项目都在 Unix/C 上,全世界人都在用这两样东西写软件。Linux 跟随的是 Unix, Windows 下的开发也是 C/C++。这时候出现的 C++ 很自然就被大家接受了,企业级的系统很自然就会迁移到这上面,C++ 虽然接过了 C 的接力棒,但是它的问题是它没有一个企业方面的架构,而且太随意了,否则也不会有今天的 Java。C++ 和 C 非常接近,它只不过是 C 的一个扩展,长年没有一个企业架构的框架。而 Java 在被发明后,被 IBM 把企业架构这部分的需求接了过来,J2EE 的出现让 C/C++ 捉襟见肘了,在语言进化上,还有 Python/Ruby,后面还有了.NET,但可惜的是这只局限在 Windows 平台上。这些就是企业级软件方面语言层面就是 C -> C++ -> Java 这条主干,操作系统是 Unix -> Linux/Windows 这条主干,软件开发中需要了解的网络知识就是 Ethernet -> IP -> TCP/UDP 这条主干。另外一条脉络就是互联网方面的(HTML/CSS/JS/LAMP…)。

同时,他还分析了架构领域的发展:

  • 从单机的年代,到 C/S 架构(界面,业务逻辑,数据 SQL 都在 Client 上,只有数据库服库在 S 上)
  • 再到 B/S 结构(用浏览器来充当 Client,但是传统的 ASP/PHP/JSP/Perl/CGI 这样的编程也都把界面,业务逻辑,和 SQL 都放在一起),但是 B/S 已经把这些东西放到了 Web Server 上,
  • 再到后来的中间件,把业务逻辑再抽出一层,放到一个叫 App Server 上,经典的三层结构。
  • 然后再到分布式结构,业务层分布式,数据层分布式。
  • 再到今天的云架构——全部移到服务器。

陈皓针对“忽视关键核心技术,盲目追逐新技术”的现象做出了回应:“如果连技术主干都可以不学的话,还有什么其他的好学呢?这些是计算机发展的根、脉络、祖师爷,这样的东西怎么可以不学呢?”

那么,现在做一个软件开发者是否更加困难了?陈皓认为“更简单了”:

因为现在互联网很发达,你可以找到很多共享的知识——相对于我那个时候。第一,知识你容易查到,然后社区很多,文章、分享的人也越来越多。我们那个时候没有的。上网一查,什么都没有。都得去自己琢磨,自己去调查。所以我觉得相比我们那个时候更容易了。第二,工具变多了。现在的工具比那个时候好用多了。我们那个时候就是一天到晚在 vi 里面,连个自动提示都没有,连个版本库管理都没有。不光工具变多,框架也多了,各种各样的编程框架。我们那时候都是生写。写 JavaScript,生写,连个 jQuery 都没有。没有这些辅助性的、让你提高生产力的东西。J2EE 那时候也没有。而且整个(开发环境)都很不成熟。一个服务器的最高配置就 1GB 的情况下,一个 WebSphere 起来就占了 900 多 MB——这还能跑什么应用?所以只能去用最基础的系统。所以我觉得现在,无论是环境,还是开发的过程,都更规范了。以前我做开发的时候就是,什么都不懂就上了,瞎搞,没有什么开发规范,没有人理你,反正你搞得好就搞好,搞不好就搞不好了,全靠自己,包括做测试维护等等。我觉得现在的软件开发就很好,你一上去,就有好的工具,有好的知识库,有好的社区,有好的开发框架,还有好的流程,方法,甚至还有人帮你做测试,还有人告诉你应该怎么做。幸福得很。现在好多人还说这个不好那个不好,开发难什么的。其实容易多了。

但是,有个东西我觉得是现在的软件开发者比我们那时候变得更难的。就是,你享福了以后,人就变懒,变娇气了。对很多东西的抱怨就开始多了。我们那个时候哪有什么好抱怨的?没啥好抱怨的,有活就干,有东西学就赶快学。现在呢,学个什么东西还挑挑拣拣的,抱怨这个语言太扯,那个 IDE 不好,这个框架太差,版本管理工具太扯,等等。这就好像以前我没东西吃,只有个糠吃,要是有面包有馒头,我就觉得非常非常好了。现在是,好吃的东西多了我们还学会挑食了,这也不好用,那也不好用。

根本就不是技术变难了,环境变差了,是程序员变娇气了。所以软件开发变难,归根结底还是程序员们自己变娇气了。

陈皓认为“任何一门技术玩深了,都是很有意思的”:

另外,任何一门技术玩深了,都是很有意思的。有些人形成了一个价值取向,“我只做什么,绝不做什么”。前段时间有一个刚来亚马逊的工程师,他原来做的是数据挖掘推荐系统,原来的公司重组要让他做前端,他不肯就离职了,他说他不想做前端。我觉得,前端后端都是编程,Javascript 是编程,C++ 也是编程。编程不在于你用什么语言去 coding,而是你组织程序、设计软件的能力,只要你上升到脑力劳动上来,用什么都一样,技术无贵贱。你可以不喜欢那个技术,但是还是要了解了解,也没有必要完全不用,完全抛弃。

如果你没有兴趣,什么都是借口,如果你有兴趣了,什么都是好玩的。

详细的内容,读者朋友可以查看陈皓的原文,也欢迎大家发表自己的看法。

2012-08-18 09:293295
用户头像

发布了 501 篇内容, 共 259.9 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

Alibaba内部Java面试手册,10W字全是精华

Java 程序员 后端

AQS源码分析看这一篇就够了

Java 程序员 后端

Bootstrap框架快速上手

Java 程序员 后端

CAT中实现异步请求的调用链查看

Java 程序员 后端

Chrome上的这些灵魂插件太猛了,碾压其他同款

Java 程序员 后端

588页!三个通宵学完这份“宝典”,4面斩获字节跳动offer

Java 程序员 后端

【Promise 源码学习】第三篇 - 实现一个简版 Promise

Brave

Promise 11月日更

AQS-AbstractQueuedSynchronizer源码解析(下)

Java 程序员 后端

Centos7搭建maven私服nexus3

Java 程序员 后端

CentOS7系统中安装JDK8

Java 程序员 后端

Prometheus HTTP API 查询(四)Target 和查询结果格式

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

3 条掏心掏肺的建议,新手学习编程必备,快上车!

Java 程序员 后端

BIGO Java 三面 + HR 面面经(已意向)

Java 程序员 后端

构建大型 Vue.js 应用程序文件结构

devpoint

Vue 11月日更

ApplicationContextAware使用理解

Java 程序员 后端

7月份了,再不准备金九银十就晚了,阿里2021最新数据结构与算法面试题手册

Java 程序员 后端

BS-GX-018 基于SSM实现在校学生考试系统

Java 程序员 后端

《Kubernetes in action 读书笔记》:Kurbernetes 架构设计

后台技术汇

Kubernetes 11月日更

69-个经典-Spring-面试题和答案详解(下)

Java 程序员 后端

AtomicBoolean介绍与使用

Java 程序员 后端

as-if-serial规则和happens-before规则的区别

Java 程序员 后端

4年Java程序员十面阿里终拿下offer,评级P6+年薪30-40w无股票

Java 程序员 后端

Android C++系列:认识JNI

轻口味

c++ android jni 11月日更

ConcurrentHashMap锁的前世今生,了解一下

Java 程序员 后端

容器 & 服务:Helm Charts配置文件分析

程序员架构进阶

容器 Helm 11月日更 chart

Chrome 灵魂插件!爱了爱了!

Java 程序员 后端

模块三课后作业-详细架构设计文档-外包学生管理系统

断水风春

架构实战营

BATJ互联网月薪45K的Java岗面试题首次曝光,掌握这些Offer指定跑不了

Java 程序员 后端

CentOS安装rar及用法

Java 程序员 后端

4月面试5月成功入职阿里,工作之余整理复盘:面试经历+备战经验分享!

Java 程序员 后端

ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

Java 程序员 后端

陈皓谈对待技术的态度_语言 & 开发_崔康_InfoQ精选文章