PHPNews

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. …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday February 13, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday February 6, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday January 23, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday January 16, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday January 9, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday January 2, 2018


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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday December 26, 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. The Thomas Crown Affair (1999) by John …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday December 19, 2017


Alan Kay Was Wrong About Him Being Wrong

From time to time someone asks 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. …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday December 12, 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 …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday December 5, 2017


How Micro Is Your Tasking?

"What are you doing now?"—when you hear this question from your boss, be aware: you're dealing with a micromanager . Keeping us busy is the key objective of these creatures and this is what makes them so annoying. To the contrary, effective managers make sure we are productive , meaning that our results satisfy th…

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday November 28, 2017


Trust. Pay. Lose.

"Listen up, dude," a friend of mine said when he called yesterday, "I trusted them for over a year—we've been partners. They've been programming it all and I was busy doing business development. Now they've quit and I'm left with nothing! What am I supposed to do with all these JavaScript files? How do I even know …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday November 21, 2017


Constructors or Static Factory Methods?

I believe Joshua Bloch said it first in his very good book "Effective Java" : static factory methods are the preferred way to instantiate objects compared with constructors. I disagree. Not only because I believe that static methods are pure evil, but mostly because in this particular case they pretend to be good and …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday November 14, 2017


Five Features to Make Java Even Better

I stumbled upon this proposal by Brian Goetz for data classes in Java, and immediately realized that I too have a few ideas about how to make Java better as a language. I actually have many of them, but this is a short list of the five most important. Idiocracy (2006) by Mike Judge Global Variables . There …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday November 7, 2017


Software Quality Award, 2018

This is the forth year of the Software Quality Award . The prize is still the same— $4,096 . The rules are still the same. Read on. Previous years are here: 2015 , 2016 , 2017 . Fill THIS FORM to submit. Rules: One person can submit only one project. Submissions are accepted until September …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday October 24, 2017


Streams vs. Decorators

The Streams API was introduced in Java 8, together with lambda expressions , just a few years ago. I, as a disciplined Java adept, tried to use this new feature in a few of my projects, for example here and here . I didn't really like it and went back to good old decorators. Moreover, I created Cactoos , a …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday October 10, 2017


What Motivates Me as a Programmer

I wrote a number of sarcastic articles about management and motivation, where some traditional and very popular practices were criticized. Now I've decided to think it all over and summarize what actually motivates me as a programmer when I'm working for someone else. Let's say you hire me tomorrow as a Java …

Continue reading »

Written by Yegor Bugayenko - - Aggregated on Tuesday September 19, 2017