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.
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 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.
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.
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?
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.
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.
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 (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.
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 GoogleUpwork 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.