Julio Biason
5 years ago
9 changed files with 122 additions and 5 deletions
@ -0,0 +1,36 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Gerrit Is A Mistake" |
||||||
|
date = 2019-07-29 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "git", "gerrit"] |
||||||
|
+++ |
||||||
|
|
||||||
|
I hate calling software "a mistake", but I can't find any other way to |
||||||
|
describe Gerrit. You may see people using Gerrit 'cause Google uses it. The |
||||||
|
thing is: Google misunderstood what Git actually is. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
When Linus Torvalds came with Git, he was trying to mimic another system, |
||||||
|
BitKeeper. Along with some improvements over CVS and SubVersion, Git made |
||||||
|
really easy to create and merge branches, something that was either |
||||||
|
almost-not-supported or slow-as-heck, depending on which tool you look at. |
||||||
|
|
||||||
|
You need to take this into consideration: Git made branches easy. |
||||||
|
|
||||||
|
Then someone came with the idea of Gerrit: Instead of managing branches, it |
||||||
|
actually manages _commits_. Instead of having a branch for each feature, you |
||||||
|
should have _one single commit_ as feature. You can have branches on your |
||||||
|
machine, but the server only deal with commits. |
||||||
|
|
||||||
|
So Gerrit took Git, a tool that improved the way we deal with branches, and |
||||||
|
removed branches. This is akin to taking a text editor and taking away the |
||||||
|
ability to _edit text_. Does that sound right to you? |
||||||
|
|
||||||
|
In my personal opinion, what they did was to take git apart and put an err in |
||||||
|
the middle: gERRit. |
||||||
|
|
||||||
|
When I see someone using Gerrit, I know something is wrong there. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/one-change-commit", prev_chapter_title="One Commit Per Change", next_chapter_link="/books/things-i-learnt/project-organization", next_chapter_title="Organize Your Code by Data/Type, Not Functionality") }} |
@ -0,0 +1,41 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - Nothing More Permanent Than A Temporary Solution" |
||||||
|
date = 2019-07-29 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "code", "writing code", "temporary solutions"] |
||||||
|
+++ |
||||||
|
|
||||||
|
Depending on where you look, "Nothing more permanent than a temporary |
||||||
|
solution" is either an old Russian proverb or a quote by Milton Friedman. |
||||||
|
Thing is, temporary solutions, unless you think about the future to fix them, |
||||||
|
will become permanent. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
A temporary solution may appear either as a proof-of-concept or due some |
||||||
|
restrained deadline. You may create perfect [system |
||||||
|
specs](/books/things-i-learnt/spec-first), you may have a perfect |
||||||
|
understanding of the whole [in your Gherkin |
||||||
|
files](/books/things-i-learnt/gherkin) but, at some point, you'll put some |
||||||
|
small script to fix a minor problem, or do a "not so good" solution to a point |
||||||
|
due to deadlines. |
||||||
|
|
||||||
|
This happens and unless you take steps to get rid of those, you'll end up with |
||||||
|
a bunch of spaghetti code pretty fast. And that will snowball to a point that |
||||||
|
you won't be able to manage the project. |
||||||
|
|
||||||
|
Once a scrum master suggested that we came with an idea to our product manager |
||||||
|
to do something akin to "Every three sprints, we'll focus on product value; |
||||||
|
the fourth one is ours to fix the things that are annoying us". I don't think |
||||||
|
we ever talking to the product manager about this, but we managed to open |
||||||
|
issues on our ticket system about the small warts we left behind, specially |
||||||
|
due deadlines. So there we had, a specially crafted bug type for "technical |
||||||
|
debt" which we never actually took the time to fix. |
||||||
|
|
||||||
|
Unless you have a pretty good safety net to fix those, they will life forever. |
||||||
|
And it may be a better option to tell "we can't deliver in time" than adding |
||||||
|
(yet another) temporary solution, as hard as it is to convince the higher ups |
||||||
|
that you can't deliver the product with a temporary solution. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/run-locally", prev_chapter_title="If It Doesn't Run On Your Computer, You Have A Problem", next_chapter_link="/books/things-i-learnt/config-file", next_chapter_title="The Config File Is Friend") }} |
@ -0,0 +1,37 @@ |
|||||||
|
+++ |
||||||
|
title = "Things I Learnt The Hard Way - You Always Have The Time" |
||||||
|
date = 2019-07-29 |
||||||
|
|
||||||
|
[taxonomies] |
||||||
|
tags = ["en-au", "books", "things i learnt", "personal", "time"] |
||||||
|
+++ |
||||||
|
|
||||||
|
You may think "Alright, I have a list of things I don't know, but I have no |
||||||
|
time to learn those things!" You do have time. |
||||||
|
|
||||||
|
<!-- more --> |
||||||
|
|
||||||
|
Most of this blog/book was written during my lunch breaks; I can have my lunch |
||||||
|
in 30 minutes, and then I still have 20-30 minutes free for myself. In those |
||||||
|
lunch breaks, I wrote a very stupid application in Rust to download some stuff |
||||||
|
I wanted. |
||||||
|
|
||||||
|
I don't fall asleep straight away, it still takes me about 30 minutes to |
||||||
|
actually feel sleepy. That's when I pick my tablet and read a book, which most |
||||||
|
of the time is technical book, about some technology I'm interested in. |
||||||
|
|
||||||
|
Even if when I get home I don't feel like sitting in front of a computer to |
||||||
|
code/write something, I always have the time to slowly progress. |
||||||
|
|
||||||
|
And that's how I always have the time. |
||||||
|
|
||||||
|
Sure, I could take those 30 minutes after lunch just to play games. I could |
||||||
|
put myself to sleep watching Netflix. But, then again, I'd never wrote this |
||||||
|
bunch of words, would never have an automated downloader and would not learn |
||||||
|
about new stuff that people are talking about. |
||||||
|
|
||||||
|
Maybe people think "If I don't finish, it's over". Your life doesn't end in |
||||||
|
one day. You still have tomorrow to keep going -- _to keep going_, not to |
||||||
|
start. |
||||||
|
|
||||||
|
{{ chapters(prev_chapter_link="/books/things-i-learnt/things-i-dont-know", prev_chapter_title="Keep A List of Things I Don't Know") }} |
Loading…
Reference in new issue