-
Notifications
You must be signed in to change notification settings - Fork 0
/
it-doesnt-deserve-it.html
79 lines (68 loc) · 4.98 KB
/
it-doesnt-deserve-it.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta id="keywords" name="keywords" content="">
<link id="stylesheet" rel="stylesheet" type="text/css" href="https://oskipa.github.io/theme/css/code.css"></link>
<link id="stylesheet" rel="stylesheet" type="text/css" href="https://oskipa.github.io/theme/css/site.css"></link>
</head>
<body>
<header class="header">
<h1 class="site-name">
<a class="home-link" href="https://oskipa.github.io">Dada</a><br />
|> Structures<br />
|> Algorithms</h1>
<nav>
<menu class="minimal-menu">
<li><a href="https://oskipa.github.io/pages/today-i-learned.html">til</a></li>
<li><a href="https://oskipa.github.io/pages/now.html">now</a></li>
<li><a href="https://oskipa.github.io/short_index.html">index</a></li>
<!--
<li><a href="category/log.html">web log<a></li>
<li><a href="">about<a></li>
<li><a href="">site map<a></li>
-->
</menu>
</nav>
</header>
<div class="container">
<div class="row">
<div class="col-md-8">
<h2>It doesn't deserve it</h2>
<h3>Another YAGNI metaphor: don't pay until it deserves it</h3>
<label>13 January, 2022</label>
<p>A coworker from sales asks you if you can help her manage her list of potential clients.</p>
<p>You could start by designing a new kubernetes pod that includes Postgres as the database, Redis for caching, RabbitMQ for the queuing system. One container will run Node.js to serve the React user interface. For the backend, you are wondering if you should code it in .net core or use this as an opportunity to write that first Rust application. You will most likely put it in AWS, but you are open to Azure. The mobile app will be developed using Kotlin for Android and Swift for iOS.</p>
<p>Or you could spend 15 minutes showing her how to use Google contacts.</p>
<p>The first solution is complex. Complexity is expensive. It will take a long time to build. You must pay for the services. The diverse technologies take time to learn. Complexity is expensive in terms of understanding a system, fixing bugs, and maintaining it.</p>
<p>The second one takes 15 minutes. </p>
<p>The first solution makes sense in many situations. For example, if it is vital to keep the list and the privacy of its members private. Or if the plan is that a huge organization wants to have a custom, single contact system for all of their sales people. Or if the idea is that the company is planning on building a sales contact app, using their sales people as the active user base.</p>
<p>We don't know, though. All what we know is that your coworker wants to organize their contacts.</p>
<p>So far, the task hasn't earned complexity. So the task doesn't deserve it. You shouldn't give complexity to it. </p>
<p>Until the task deserve it</p>
<ul>
<li>use off-the-shelf software</li>
<li>use a simple script</li>
<li>Use a text file to store data</li>
<li>use a simple app </li>
<li>use known technologies</li>
</ul>
<p>A task has earned complexity when it can show that it makes money, saves money, or no solution exists.</p>
<p>One should be aware when the task has earned its complexity. The company website is moving from 4 pages to becoming an active blog, which is key for getting customers. Then it may be a good idea to get a WordPress account. They want some customized widgets? We can build custom modules. The desired features and workflow for the blog are so unique that it is hard to develop? Maybe now it is a better idea to write their CMS from scratch, custom-made for the business.</p>
<p>Keep in mind is that if it is reasonable to add complexity from the beginning because we know that it will be needed, go ahead and do it. We don't need to spend a winter freezing at a house because we needed to freeze during a winter to learn that we needed heat. Put heat from the start. Same with tech. If you gather relational data, use that database from the start. </p>
<p>For those paying attention, this is a different way to express YAGNI. Perhaps a meaner, more Scroogey way of saying it. Should we add Redis because it is cool? You ain't gonna need it. But also, you still don't deserve it.</p>
</div>
</div>
</div>
<footer class="footer">
<!-- <p class="about"><a href="http://hugoestr.github.io/blog/manifesto.html">About</a> --> <a href="https://oskipa.github.io/pages/about.html" >I am</a> a software developer. I code in Python, Ruby, Lisp, and many other languages. I like poetry, museums, and ukuleles. I try to guide my life on principles of dadaism and nonviolence.</p>
<p>
<a href="feeds/all.atom.xml">atom</a>
<!-- <a href="http://github.com/oskipa/">github</a> -->
</p>
<p>Artisanally built with <a href="https://blog.getpelican.com/">Pelican</a>. Content handcrafted in <a href="https://www.vim.org/" >Vim</a>. All hallucinations are human. 100% AI Free.</p>
</footer>
</body>
</html>