你是一名骇客还是工程师?

本文探讨了过去二十年间,随着硬件成本的下降和程序员薪资的上涨,软件开发领域的心态变化。从追求极致性能的“骇客思维”转向注重代码可读性和稳定性的“工程师思维”。

本文出处:http://www.yegor256.com/2014/10/26/hacker-vs-programmer-mentality.html


二十年之前,最优秀的程序员指的是有能力将整个应用放入64Kb的.COM文件中的人。那些将老旧的Inter 80386运用到极致的人才是是程序员中的精英。


这是因为二十年前,计算机是昂贵的,而程序员的成本相对便宜。这是”骇客思维“(hacker mentality)的时代。这个时代已经过去了。现在这种心态不会被人们所欣赏,因为市场行情已经完全相反了。


现今,计算机相当便宜而程序员成本变得昂贵。这是”工程师思维“(designer mentality)的时代,在这个时代中我们代码的可读性远比性能要重要。


价格VS工资

请看上面这幅图,这是在过去二十年(1994-2014)两个趋势的比较。下降的两条趋势表明计算机内存和外存的价格在二十年的时间里变得十分便宜。


第二个趋势证明软件开发者的薪水在这段时间内逐步增长。更准确的说,增长了三倍。我没有找到关于这个的官方报告,但是我保证,程序员的工资保持增长,这对所有人都不是个秘密——每年200000美元对于一个高级开发者来说将不是梦想……但是在二十年前,60K美元已经是可以给到的最好的了。我找到了一篇关于这个主题的非常有意思的文章


这基本上意味着,在1994年我们为了创建一个PHP网站,我们需要比现在多花费1000倍的资金在硬件上,少花费3倍资金在程序员薪水上。这里我们讨论的是用同样的技术。同样的Linux机器和Apache HTTP服务器。


不同之处在于,在1994年,如果我们的机器由于硬件限制而出现性能问题时,增加每一GB的RAM我们需要支付35000美元,而现在我们只需要10美元。


在1994年,招募更多的程序员让他们来优化代码甚至重写代码要比买新的硬件更有效。在2014年,情况正好相反。将服务器的规模翻倍要比支付更多薪水优化软件更加便宜(尤其是当服务器在虚拟云上)。


在1994年,最好的程序员拥有“骇客思维”,但是在2014年“工程师思维”更受青睐。


骇客思维(Hacker Mentality)


某些具有骇客思维的人会称这个Fibonacci java方法为“优雅的代码”(你会这样称呼么?)

public int f(int n) { return n>2?f(n-1)+f(n-2):1; }

我会看重以下这些为一个优秀骇客的品质:

  • 会运用一门编程语言所有已知的(和未知的)特性。
  • 按照骇客和初学者来区分他人。
  • 对规则和标准感到厌烦
  • 不写单元测试——初级程序员随后会写的。
  • 享受处理紧急事件——这体现出他的才能。
  • 喜欢用言语而非文档,因为这样更加有趣。
  • 讨厌自己的代码被别人修改。
  • 喜欢一段时间钻研一个项目。

一个骇客是一个有才能的个体。他希望通过他写的软件展示他的才华。他热爱编程并以此为乐。我会说,他和他的代码结了婚而且不能想象最终离婚后代码的幸福生活。代码的所有权是一个骇客完全占有的——他将自己理解为代码的“主人"。


当我问一个我的骇客朋友——“别人会怎样才能理解这段代码的功能?”我总是会听到这样的回答——“他们会问我!”(通常会以骄傲的语气笑着说)。



工程师思维(Designer Mentality)


具有工程师思维的人会将上述代码重构,使它更容易阅读。他会将这段Java 方法称为“优雅的代码”(你会怎么认为?)。


public int fibo(final int pos) {
  final int num;
  if (pos > 2) {
    num = fibo(pos - 1) + fibo(pos - 2);
  } else {
    num = 1;
  }
  return num;
}

我认为以下是优秀的工程师所具备的特点:

  • 偏向使用传统的编程技术。
  • 假设每个人都是初学者,并依此编写程序。
  • 享受现有的规则并遵守它们。
  • 偏爱文档而非言语,能够自动化最佳。
  • 花很多时间编写单元测试。
  • 讨厌紧急事件和加班。
  • 乐于看到他的代码被修改和重构。
  • 同时跟进多个项目。

一个工程师是一个优秀的团队工作者。他对团队进程、标准、培训和原则的贡献和他对源代码的贡献一样多。他可以确保当他离开团队时他的代码和他的想法会继续保留并产生作用。


令一个优秀的工程师感到满意的是看到他的代码过着“自己的生活”——被改写,改进,重构知道最后退休。工程师把他自己当做代码的父母——当代码到了自立的时候,它需要去过自己的生活。


未来


如果你认为你是一个骇客的话,我相信是时候做改变了。骇客的时代正在远去。


在不久的将来,我们将可能停止从硬件的角度思考问题,并将使我们的应用运行在没有存储性能限制和CPU性能限制的弹性计算平台上。我们将会通过简单地增加月账单的开支来解决资源使用和大多数性能问题。程序优化问题将不是我们所担心的。


同时,优秀的软件工程师的待遇将会越来越高,比如花500+美元每小时仅仅是去检查软件并给出一个诊断。


这就是为什么当开发一个新的软件产品时,付费的人考虑最多的就是它的稳定性。项目赞助者会懂得,最好的解决方案就是最易读,最稳定,自动化程度最高的那个。


而不是最快的。




**项目名称:** 基于Vue.js与Spring Cloud架构的博客系统设计与开发——微服务分布式应用实践 **项目概述:** 本项目为计算机科学与技术专业本科毕业设计成果,旨在设计并实现一个采用前后端分离架构的现代化博客平台。系统前端基于Vue.js框架构建,提供响应式用户界面;后端采用Spring Cloud微服务架构,通过服务拆分、注册发现、配置中心及网关路由等技术,构建高可用、易扩展的分布式应用体系。项目重点探讨微服务模式下的系统设计、服务治理、数据一致性及部署运维等关键问题,体现了分布式系统在Web应用中的实践价值。 **技术架构:** 1. **前端技术栈:** Vue.js 2.x、Vue Router、Vuex、Element UI、Axios 2. **后端技术栈:** Spring Boot 2.x、Spring Cloud (Eureka/Nacos、Feign/OpenFeign、Ribbon、Hystrix、Zuul/Gateway、Config) 3. **数据存储:** MySQL 8.0(主数据存储)、Redis(缓存与会话管理) 4. **服务通信:** RESTful API、消息队列(可选RabbitMQ/Kafka) 5. **部署与运维:** Docker容器化、Jenkins持续集成、Nginx负载均衡 **核心功能模块:** - 用户管理:注册登录、权限控制、个人中心 - 文章管理:富文本编辑、分类标签、发布审核、评论互动 - 内容展示:首页推荐、分类检索、全文搜索、热门排行 - 系统管理:后台仪表盘、用户与内容监控、日志审计 - 微服务治理:服务健康检测、动态配置更新、熔断降级策略 **设计特点:** 1. **架构解耦:** 前后端完全分离,通过API网关统一接入,支持独立开发与部署。 2. **服务拆分:** 按业务域划分为用户服务、文章服务、评论服务、文件服务等独立微服务。 3. **高可用设计:** 采用服务注册发现机制,配合负载均衡与熔断器,提升系统容错能力。 4. **可扩展性:** 模块化设计支持横向扩展,配置中心实现运行时动态调整。 **项目成果:** 完成了一个具备完整博客功能、具备微服务典型特征的分布式系统原型,通过容器化部署验证了多服务协同运行的可行性,为云原生应用开发提供了实践参考。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值