Yegor Bugayenko's Blog, page 16

February 12, 2018

Microvesting

Most startups don't have enough cash to pay programmers as much as they deserve, unfortunately (or maybe not). Instead of cash, startups give their early employees shares of stock, which they will be able to either 1) sell in a few years and become millionaires billionaires, or 2) throw away and remain nobodies. It's a common practice. The question, however, is what is the right procedure, and the optimal algorithm, to transfer those shares to programmers. When exactly do they become...

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on February 12, 2018 16:00

February 5, 2018

More Bugs, Please

A bug is something we find in a software product that "doesn't look right" (this is my personal definition). A bug can be hidden or visible; it can be "already fixed" or "still present"; it can be critical or cosmetic; it can be urgent or of a low priority. What is important is that the more bugs we are able to find and fix before our customers see them, the higher the perceived quality of the software. Simply put, bugs are a very good thing, if they are foun...

 •  0 comments  •  flag
Share on Twitter
Published on February 05, 2018 16:00

January 22, 2018

Are You a Coder or a Developer?

Software development and coding are two different things. Usually, the former includes the latter, but not always. Coding produces lines of code, while software development creates products. Unfortunately, the majority of programmers joining Zerocracy now are coders. Even though they claim to be developers, in reality they are lacking the very important sociotechnical skills that differentiate product creators from lines-of-code writers.

[image error]Hard Men (1996) by J.K. Amalou

Let me show you the sym...

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on January 22, 2018 16:00

January 15, 2018

The Educational Aspect of Static Analysis

Very often new programmers who join our projects ask us whether we have auto-formatting instruments to make Java code look exactly the way Qulice expects. (Qulice is the static analyzer we use.) I always reply that having such an automated code polisher would only be harmful and wouldn't help the project and its members improve and grow. Here is why I think so.

[image error]Blind Fury (1989) by Phillip Noyce

Static analysis, the way we do it in combination with read-only master branch, is a fully aut...

 •  0 comments  •  flag
Share on Twitter
Published on January 15, 2018 16:00

January 8, 2018

Five Stages of Microbudgeting

Microtasking, which I explained in an earlier post, works only when each task has a very specific reward for success and a punishment for failure. I believe that the best reward and punishment instrument is money. The budget is fixed, the programmer gets it only when the task is completed (reward), no matter how much time it cost; if it is not completed, there is no money at all (punishment). Pure and simple. However, a logical question arises: how can we know upfront what is the right budget...

 •  0 comments  •  flag
Share on Twitter
Published on January 08, 2018 16:00

January 1, 2018

Operator new() is Toxic

To instantiate objects, in most object-oriented languages, including Java, Ruby, and C++, we use operator new(). Well, unless we use static factory methods, which we don't use because they are evil. Even though it looks so easy to make a new object any time we need it, I would recommend to be more careful with this rather toxic operator.

[image error]The Gift (2015) by Joel Edgerton

I'm sure you understand that the problem with this operator is that it couples objects, making testing and reuse ve...

 •  0 comments  •  flag
Share on Twitter
Published on January 01, 2018 16:00

December 25, 2017

The Formula for Software Quality

How do you define the quality of a software product? There is definitely an intrinsic emotional component to it, which means satisfaction for the user, willingness to pay, appreciation, positive attitude, and all that. However, if we put emotions aside, how can we really measure it? The IEEE says that quality is the degree to which a product meets its requirements or user expectations. But what is the formula? Can we say that it satisfies requirements and expectations to, say, 73%?

[image error]Coco Chan...
1 like ·   •  0 comments  •  flag
Share on Twitter
Published on December 25, 2017 16:00

December 18, 2017

SRP is a Hoax

The Single Responsibility Principle, according to Robert Martin's Clean Code, means that "a class should have only one reason to change." Let's try to decrypt this rather vague statement and see how it helps us design better object-oriented software. If it does.

[image error]The Thomas Crown Affair (1999) by John McTiernan

I mentioned SRP once in my post about SOLID, saying that it doesn't really help programmers understand the good old "high cohesion" concept, which was i...

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on December 18, 2017 16:00

December 11, 2017

Alan Kay Was Wrong About Him Being Wrong

Time to time someone is asking me what I think about what Alan Kay, the father of OOP, the designer of Smalltalk, the first object-oriented language, said in 1998 about OOP. He literally said that the very term "object" was misleading and a more appropriate one would be "messaging." Here is what I think.

[image error]Rain Man (1988) by Barry Levinson

I believe that there are two orthogonal means of interaction between objects: messaging and composition. Let's say, we have a point...

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on December 11, 2017 16:00

December 4, 2017

DAO is Yet Another OOP Shame

Someone asked me what I think about DAO and I realized that, even though I wrote about ORM, DTO, and getters, I haven't had a chance yet to mention DAO. Here is my take on it: it's as much of a shame as its friends—ORM, DTO, and getters. In a nutshell, a Data Access Object is an object that "provides an abstract interface to some type of database or other persistence mechanism." The purpose is noble, but the implementation is terrible.

[image error]Requiem for a Dream (2000) by Da...
 •  0 comments  •  flag
Share on Twitter
Published on December 04, 2017 16:00