Make Sure the Simple Stuff Is Simple

?

Make Sure the Simple Stuff Is Simple

Chad LaVigne

SoFTWARE ARCHiTECTS SolvE a lot of very difficult problems but we also solve some relatively easy ones. What we don’t want to do is apply a compli- cated solution to an easy problem. As obvious as that advice sounds, it can be hard follow. People who design software are smart—really smart. The simple problem–complex solution trap can be an easy one to fall into because we like to demonstrate our knowledge. If you find yourself designing a solution so clever that it may become self-aware, stop and think. Does the solution fit the problem? If the answer is no, reconsider your design options. Keep the simple stuff simple. You’ll get plenty of chances to showcase your talent when the dif- ficult problems arise, and they will.

This doesn’t mean that we shouldn’t implement elegant solutions. It means that if we’re tasked with designing a system that only needs to support selling one type of SKU-based widget, it’s probably a bad idea to design for hierar- chies of dynamically configurable products.

The cost incurred by a complicated solution may seem small, but chances are that it’s larger than you’re giving it credit for. Over-engineering at the archi- tectural level causes many of the same issues as it does at the development level, but the negative effects tend to be multiplied. Poor decisions made at the design level are more difficult to implement, maintain, and—worst of all— reverse. Before moving forward with an architectural decision that exceeds system requirements, ask yourself how difficult it would be to remove after it’s in place.

?

??The costs don’t stop with the implementation and maintenance of the solution in question. Spending more time than necessary on an easy problem leaves less time for when the complicated issues show up. Suddenly your architecture decisions are creating scope creep and adding unnecessary risk to the project. Your time could be spent much more efficiently making sure no one else is doing that.

There’s often a strong desire to justify solutions with a perceived benefit or implied requirements. Remember this: when you try to guess at future requirements, 50% of the time you’re wrong and 49% of the time you’re very, very wrong. Solve today’s problem today. Get the application out the door on time and wait for feedback to generate real requirements. The simple design you create will make it much easier to integrate those new requirements when they arrive. If you beat the odds and your implied requirement becomes a real one on the next release, you’ll already have a solution in mind. The difference is that now you’ll be able to allocate appropriate time for it in the estimate because it’s truly required. Before you know it, you’ve got the reputation of a team that makes good estimates and gets work done on time.

时间: 2024-08-01 06:02:55

Make Sure the Simple Stuff Is Simple的相关文章

46 Simple Python Exercises-Very simple exercises

4.Write a function that takes a character (i.e. a string of length 1) and returns True if it is a vowel, False otherwise. def if_vowel(a): a=a.lower() if a in('a','e','i','o','u'): return True else: return Falseprint(if_vowel('A')) 原文地址:https://www.c

Simple JavaScript Inheritance--一个极简JS继承库

面向对象 面向对象思想的几个重要特征(针对类的要求): 抽象-封装.信息隐藏(将内部实现的方法和数据隐藏, 定义开放的接口) 继承-子类可以使用父类的资源,并可以定制自己的资源, 资源包括方法和数据 多态-重载(同名函数).覆盖(继承的基础上重写父类函数) JS与面向对象 javascript使用prototype实现类的继承功能, 非经典面向对象语言的类的形式, 使用方法也不同, 导致使用较困难. 请参考大师的<深入理解javascript原型和闭包系列> http://www.cnblog

simple data 安装和使用记录

simple data 安装和使用记录 simple.data是一个轻量级的.动态的数据访问组件,支持.net4.0. simple.data支持以下数据库: SQL Server 2005 and later SQL Server Compact Edition 4.0 oracle vistadb mysql 4.0 and later sqlite 3.0 and later PostgreSQL sqlanywhere informix Microsoft Access 2000, 20

初译 Support Vector Machines:A Simple Tutorial(一)

从本次开始我将开始尝试着逐章翻译一下 Alexey Nefedov的<Support Vector Machines:A Simple Tutorial>这本教材,这可是我们导师极力推荐的SVM教材,看了好久一直感觉一脸懵逼,索性开坑翻译一下吧,也当是加深理解,毕竟我也是一知半解,如果翻译的有不对的地方还望大佬们斧正,欢迎提意见,欢迎讨论. 嗯,就是这样. (一)Introduction 在本章节中将会介绍一些用于定义支持向量机(SVM)的基础的概念,这些概念对于理解SVM至关重要,假定读者了

ubuntu16.04下安装NS-2.35以及对simple例的理解

本人是在VMWare上安装的ubuntu16.04版本,然后安装NS2.35. 1.下载ns2的安装包,这里我选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包,all in one 安装包包含所有的组件,比较方便,另附下载地址: http://www.isi.edu/nsnam/ns/ns-build.html 2.安装前要先进行一些准备工作进行配置环境,输入如下代码: $sudo apt-get install build-essential $sud

[bzoj3489]A simple rmq problem

本题既不是rmq也不会simple(对我这种蒟蒻而言) 一开始只能想到树套树套树TAT然后看了看数据范围果断滚去膜拜题解. 然后才知道预先排序一下可以弄掉一个log.不过得写可持久化线段树套可持久化线段树.. 然后愉悦的开码了...感人的是竟然不用调...更感人的是交上去直接tle了. 然后从网上找了别人的代码(方法一样)发现同样的数据我要跑6s+..标称只要2s+.. 之后各种卡常还是慢了一倍TAT...最后自己写个max函数就和标程一样快了TAT这几天怎么总是出些奇怪的状况QAQ. 本来故事

地理数据可视化:Simple,Not Easy

如果要给2015年的地理信息行业打一个标签,地理大数据一定是其中之一.在信息技术飞速发展的今天,“大数据”作为一种潮流铺天盖地的席卷了各行各业,从央视的春运迁徙图到旅游热点预测,从大数据工程师奇货可居到马云布道“DT”时代,“大数据”被推到了一个前所未有的高度,连国家领导人出访演讲都言必称大数据.地理信息数据天生具有大数据属性,作为整天和地理信息数据打交道的地信人自然不甘落后,地理大数据概念脱颖而出. 地理大数据是什么?大体来说就是把社会经济.自然资源.商业信息等但凡具有一点空间维度的数据一股脑

简单工厂模式( Simple Factory Pattern )

1. 简单工厂模式( Simple Factory Pattern ) 1.1. 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮.矩形按钮.菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式. 1.2

NYOJ 707 A Simple Problem(结构体排序) 睡前一水~~

链接:click here 题意: A Simple Problem 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 You know, just as the title imply, this is a simple problem. In a contest, given the team-id, solved, penalty of all the teams, tell me the champion.If the numbers of solved pr