Printers Instead of Getters

  • 1257 words
  • 6 minutes to read
  • comments

Getters and setters are evil. No need to argue about this, it’s settled. You disagree? Let’s discuss that later. For now, let’s say, we want to get rid of getters. The key question is how is it possible at all? We do need to get the data out of an object, right? Nope. Wrong.

Jare.io, an Instant and Free CDN

  • 1649 words
  • 9 minutes to read
  • comments
badge

CDN stands for a Content Delivery Network. Technically, it is a bunch of servers located in different countries and continents. You give them your logo.gif and they give you a URL, which resolves to a different server depending on who is trying to resolve it. As a result, the file is always close to the end-user and your website loads much faster than without a CDN. Sounds good, but all CDN providers want money for their service and usually a rather complex setup and registration procedure. My pet project jare.io is a free CDN that is simple to configure. It utilizes AWS CloudFront resources.

Unspoken Secrets of an Elevator Pitch

  • 1371 words
  • 7 minutes to read
  • comments

Your success depends on the quality of your elevator pitch. Basically, your success doesn’t depend on much of anything else. The pitch is king. You have to impress the catcher investor in just a few seconds while the elevator is still moving (that’s where you are supposed to hunt for that prey). It’s not rocket science; you can learn a few basic principles and become an expert. Here they are, the principles.

Try. Finally. If. Not. Null.

  • 539 words
  • 2 minutes to read
  • comments

There is a very typical mistake in pre-Java7 “try/finally” scenario, which I keep seeing in so many code reviews. I just have to write about it. Java7 introduced a solution, but it doesn’t cover all situations. Sometimes we need to deal with non-AutoCloseable resources. Let’s open and close them correctly, please.

Wring.io, a Dispatcher of GitHub Notifications

  • 413 words
  • 2 minutes to read
  • comments
badge

I’m taking participation in over 50 repositories in GitHub. We manage all of our projects there. GitHub is sending me hundreds of emails every day. I’m serious. Hundreds! I tried to filter them somehow in Gmail, but it’s not really possible. Gmail filters are not powerful enough to understand the difference between different types of notifications, and there are many other problems. I decided to create my own simple filtering machine. It’s called wring.io.

Pimp Up Your Resume

  • 2728 words
  • 15 minutes to read
  • comments

There are tons of articles about resume writing. Literally, tons of them. And here’s yet another one? Well, maybe … but I don’t think so. I’ll try to give you a few practical hints for how to make your resume look “sexier,” and how to position yourself beyond the “good programmer” category and into the superstar zone. It may take a few years to truly pimp up your CV, but when it’s done, you will charge $100-plus per hour and face no hesitation from your clients in paying.

How We Interview Programmers

  • 845 words
  • 4 minutes to read
  • comments
badge

At Zerocracy, we’ve been getting about 10 resumes every day from programmers who want to work with us. We don’t do video or online coding interviews. We don’t ask you to solve any puzzles or demonstrate your algorithm-writing abilities. Moreover, when we decide not to hire you, we honestly and openly explain why. And we almost never offend anyone. So how exactly does it work? There are a few basic principles I would like to share.

Holacracy or Autocracy? Both!

  • 690 words
  • 3 minutes to read
  • comments

I strongly believe that while it is very effective to structure an organization in a democratic and sociocratic way, a project should be managed completely different. A project should resemble a dictatorship, authoritarian or military hierarchy with a single strong, result-oriented leader who gives explicit orders that are never doubted by subordinates and an explicitly defined hierarchy.

Are You Still Debugging?

  • 1457 words
  • 8 minutes to read
  • comments

Debugging is “a process of running a program/method interactively, breaking execution flow after each statement and showing…” In a nutshell, it is a very useful technique … for a bad programmer. Or an old programmer who is still writing procedural code in C. Object-oriented programmers never debug their code—they write unit tests. My point here is that unit testing is a technique that completely replaces debugging. If debugging is required, the design is bad.

Design Patterns and Anti-Patterns, Love and Hate

  • 794 words
  • 4 minutes to read
  • comments

Design Patterns are … Come on, you know what they are. They are something we love and hate. We love them because they let us write code without thinking. We hate them when we see the code of someone who is used to writing code without thinking. Am I wrong? Now, let me try to go through all of them and show you how much I love or hate each one. Follow me, in alphabetic order.

Defensive Programming via Validating Decorators

  • 685 words
  • 3 minutes to read
  • comments

Do you check the input parameters of your methods for validity? I don’t. I used to, but not anymore. I just let my methods crash with a null pointer and other exceptions when parameters are not valid. This may sound illogical, but only in the beginning. I’m suggesting you use validating decorators instead.

How Expensive Is Your Outsourcing Team?

  • 891 words
  • 4 minutes to read
  • comments

Let me put it this way: $15 per hour for a senior Java developer—is that cheap or expensive? It’s cheap, right? Right. What would you say if I told you this cheap Java developer hardly writes two primitive lines of code per day? You’re paying $600 every week but rarely getting anything back. How cheap is this Java guy now? My point is that using hourly rate as a cost indicator is a very bad idea, whether with outsourcing or in-house teams.

Good Programmers Don't Work for Equity

  • 295 words
  • 1 minutes to read
  • comments

“You’re a good programmer. I’m a great entrepreneur. This is a breakthrough idea. Help me build it. I don’t have cash, but I will give you equity. Deal?” I hear this at least once a month, and I always say no. Not because I don’t like your idea. Indeed, it is really interesting. And not because I’m too busy. I would definitely find time for a good idea. It’s not that. I say no because I don’t think you’re a good entrepreneur.

How Do You Punish Your Employees?

  • 1506 words
  • 8 minutes to read
  • comments

Punishment … how do you prefer to do it? There are many ways to punish employees; some are rather effective, while others simply don’t work. This is not an exact science. Actually, I would say it’s an art. You must be creative, innovative, and very open-minded. You never know which method of punishment will work with whom. Some people respond to one method, while others may completely ignore it. The overarching goal, of course, is to make employees scared of you, their boss, so they will obey enthusiastically. Here is a list of the most effective methods.

Why Don't You Contribute to Open Source?

  • 949 words
  • 5 minutes to read
  • comments

In my How Much Do You Cost? post last year, I said open source contribution is a very important factor in defining who is good and who isn’t, as far as programmers go. I was saying that if you’re not contributing to open source, if your GitHub profile is not full of projects and commits, your “value” as a software developer is low, simply because this lack of open source activity tells everybody that you’re not passionate about software development and are simply working for money. I keep getting angry comments about that every week. Let me answer them all here.

Investors Are Too Scared

  • 1338 words
  • 7 minutes to read
  • comments

We’re starting a new thing, a seed fund. Its name is SeedRamp. The formula is simple: You schedule an interview, we have a one-hour conversation, you present me your startup idea, and we either give you cash right away or explain why we don’t feel like it. We don’t do any due diligence or background checks. The decision is made right there. It’s something similar to angel investment, but the amount is smaller—less than $20K, and decisions are faster.

Temporal Coupling Between Method Calls

  • 999 words
  • 5 minutes to read
  • comments

Temporal coupling happens between sequential method calls when they must stay in a particular order. This is inevitable in imperative programming, but we can reduce the negative effect of it just by turning those static procedures into functions. Take a look at this example.

Throwing an Exception Without Proper Context Is a Bad Habit

  • 705 words
  • 3 minutes to read
  • comments

I keep repeating the same mistake again and again. So it’s time to stop and make a rule to prevent this from happening anymore. The mistake is not fatal, but it’s very annoying. When I look at production logs, I often see something like "File doesn't exist", and I ask myself: What file? Where is it supposed to exist? What did the server try to do with it? What was going on a second before it crashed? There is no answer in the log, and it’s totally my fault. I either 1) don’t re-throw or 2) re-throw without providing context. Both are wrong.

Imprisonment for Irresponsible Coding!

  • 296 words
  • 1 minutes to read
  • comments

If I drive too fast and I get caught, I may get a ticket. If I drive under the influence and get caught, I may go to jail. If I turn my radio up too loud in the middle of the night and my neighbors call the police, I may get into trouble if I don’t stop it. The law basically protects us from causing trouble with each other. Why don’t we have a law against irresponsible coding?

Ringelmann Effect vs. Agile

  • 432 words
  • 2 minutes to read
  • comments

The Ringelmann Effect (a.k.a. social loafing) is basically about people experiencing decreasing productivity when working in groups. We’re basically more productive when we work individually to achieve personal goals rather than being teamed up. That was discovered by Prof. Max Ringelmann a hundred years ago in 1913. Today, during my workshop in Berlin at DATFlock 2015, we tried to reproduce that experiment. It seems the French professor was right.

Stop Comparing JSON and XML

  • 1125 words
  • 6 minutes to read
  • comments

JSON or XML? Which one is better? Which one is faster? Which one should I use in my next project? Stop it! These things are not comparable. It’s similar to comparing a bicycle and an AMG S65. Seriously, which one is better? They both can take you from home to the office, right? In some cases, a bicycle will do it better. But does that mean they can be compared to each other? The same applies here with JSON and XML. They are very different things with their own areas of applicability.

10 Typical Mistakes in Specs

  • 2793 words
  • 15 minutes to read
  • comments

There is a great book called Software Requirements written by Karl Wiegers about, well, software requirements. It’s a must read for every software engineer, in my opinion. There’s no need for me to repeat what it says, but there are a few very simple and very typical mistakes we keep making in our specs. I see them in our documents again and again, which is why I’ve decided to summarize them. So here they are, the ten most critical and typical of them, from the point of view of a programmer reading a specification document.

A Chatbot Is Better Than a UI for a Microservice

  • 2213 words
  • 12 minutes to read
  • comments

A chatbot (or chatterbot, as Wikipedia says) is a piece of software that talks to you in chat format. We use chatbots in a few (micro)services, and they fully replace user interfaces. I don’t think there is any innovation in this approach, but it has proved to be very effective over the last year or so. That’s the impetus for this post. Here is how the Rultor chatbot works for us and what its benefits are.

Why Software Outsourcing Doesn't Work ... Anymore

  • 1548 words
  • 8 minutes to read
  • comments

I want to create an iPhone app for my web service, but I don’t have programmers. Well, I don’t have iOS programmers. And I don’t have money. Sound familiar? What do I do? Right, I go to Google Upwork and find an awesome company in Bangalore that is excited to work with me for nothing reasonable money. In a few months and after a few thousand dollars, I realize this is not exactly what I expected. After yet another few months, I swear to God I’ll never outsource any software development to anyone. Is it just me? Not really.

What Is the Difference Between Ridley Scott and Joseph Goebbels?

  • 794 words
  • 4 minutes to read
  • comments

I saw The Martian this weekend, and it triggered a few thoughts. Of course, I didn’t like the movie as a piece of art. It is total garbage, but this is not my point. There is something bigger to discuss, aside from the bad acting, primitive story-line, politically correct but absolutely unrealistic casting, and tons of logical inconsistencies. It’s Hollywood; what should I expect, right? Not just that. I think the problem is bigger.

Competition Without Rules Is Destructive

  • 492 words
  • 2 minutes to read
  • comments

When your team has to choose which technical decision to make, who has the final say? When one of your colleagues asks for a raise, who decides, and what is his or her decision based on? When it’s necessary to work overtime, how is it decided who will stay in the office? I’m expecting you to shrug your shoulders. You’re right, these questions never have explicit answers in modern organizations. We are used to working in a more “democratic” way, where such decisions are made subjectively by managers or more senior employees. Is this how it should be?

How to Be a Good Office Slave

  • 1603 words
  • 8 minutes to read
  • comments

This is a short manual for you, my friend. I assume you are sitting in the office right now, reading this blog post. Maybe you don’t like your office job, or maybe you enjoy it and feel excited to be close to your office friends. It doesn’t matter. What matters is that there is always an alternative to office slavery. I’m not talking about starting your own business. There are people in this world who work for someone without doing what is described below. They do exist, as well as companies that don’t turn their employees into slaves. I really hope you will eventually find one. In the meantime, this manual is for you.

You're Just the Mayonnaise in a Bad Sandwich

  • 1341 words
  • 7 minutes to read
  • comments

That’s what a character played by actor Bruce Willis said to Robert DeNiro’s movie producer character in Barry Levinson’s brilliant film What Just Happened. I second that. Producers, recruiters, managers, real estate agents, sales agents, lawyers, and outstaffers—what do they all have in common? They are middlemen standing between money and the proletariat, taking a huge percentage for themselves but adding no value. Their very existence is our mutual misfortune. We are too weak to get rid of them now, but sooner or later every supply chain will be mayonnaise-free. Look at Uber—taxi companies are dead already, and we now have only drivers and passengers with a computer system in between. The same will happen everywhere else.

sixnines availability badge  GitHub stars