Montag, 27. August 2012

Don't fix it, if it's broken

I talked about the buggy games some days ago. Today let's have a look on what happens when a bug was found.

Nowadays the number of bugs in online games is so high that most of them will survive the whole life cycle of the product. The most important thing about a bug is not how much it will cost to fix it but how much it will cost to not fix it. There are two simple reasons for that: On the one hand a bug that don't hinders a user to pay or makes the player leave the game is not really a problem and sometimes you manage to implement a Bloombug. On the other hand fixing bugs in online games is always expensive just because of the great code quality.

So you will fix only a few of the bugs. That's fine to me, it's your product. But from this attitude there comes the famous word "Don't fix it, if it's not broken". It mostly comes from Producers and Managers who fear costs. They always fear costs. That's why in a way THEY are responsible for the bugs and not their developers.

So if everyone went through this world with that "Don't fix it, if it's not broken" attitude we would be sitting on the trees nowadays with the club in our hands and trying to make fire with a flintstone. This is a sentence that expresses fear. It does not express any kind of security, it's only fear. Fear of change. Fear of costs. Fear of invention.

So if you fear to invest in invention how will you stay or become the market leader of tomorrow. You will always be a copy of someone who really had the courage to face the risk of inventing or discovering new things.

Donnerstag, 23. August 2012

Inventing Design Patterns

We've got a BIG problem - we don't know how to solve it. Let's invent a Design Pattern!

It seems that the number of Design Pattern inventors has increased dramatically over the last years. Design Patterns are not a standardization and productivity technique or tool anymore, they have become that ultimate "I can fix everything" thing.

Although there are a lot of Design Patterns published, there is no other way for the God-like programming gurus (every company has at least one of them) than inventing new ones. All the time. "Hey I think, I've invented a new Design Pattern."

So what qualifies you to be a real good Design Pattern inventor? Let's have a closer look on that.

  1. You know the GoF - It's the Gang of F... Four? Was it Four? Or Five? Doesn't matter! YOU know them! In person! But the most important thing about this is: You must never remember their names! It's the GoF! They have no names! Ah and by the way: Robert C. Martin, Kent Beck, Martin Fowler and all the other never existed!
  2. You know that they wrote a book. You know it was called "Design Patterns - ... bla bla bla somewhat". And you also know: It's THE book about Design Patterns. There are also no others.
  3. You know it contains the Singleton Pattern. And this was the starting point of your career (as a Design Pattern inventor)
  4. You know only the Singleton.
  5. The first thing you invented was a Statleton / Staticton / Staticleton, you know, this Singleton that loses it's getInstance() method for performance reasons and maintainability - just to reduce the boiler plate code. (Sure, others would call it a static class, but you call it Staticleton) Read the linked post and you know, what we are talking about - and thanks to Steve Yegge again.

So boy, let me tell you some stupid words:

Design Patterns are common practice. You invented common practice? On your own? And you're the only one who uses it?

R.E.S.P.E.C.T. - That's why I call you the God programmer.

Design Patterns are OO - and that's not that o.O you're doing at the moment, when reading this. Try this one.

Boy, you should have understood at least the 23 Design Patterns named by the GoF. You should also have understood that not all of them are good pratice (anymore). Your task: Find out which ones. You should also have understood that the biggest collection of Design Patterns is called Functional Programming Languages.

And please keep yourself informed. Then you will see that there are so many "new" Design Patterns out there and new ones getting published all the time. Maybe you will publish one of these new appearing Design Patterns in the next years. Maybe you also initiate the usage of a new Design Pattern. But you won't never ever be it's inventor for real.

Mittwoch, 22. August 2012

Game developers have fun! Or are they?

Let's talk about the German games industry, especially the German game developers, today...

Working as a game developer is fun. Game developers have fun. All the time. Nearly everyone who becomes a developer became it because he wanted to make games. Cool games.

Imagine you worked as a developer for several years. Also in the gaming industry. What are you looking at? You can see a lot of developers, a lot of enthusiastic developers who want to change the world. Do they? Kind of!

Have you ever wondered why EVERY game is buggy?

Well look at these guys. They have fun - and I'm really sure they do so - I know it. I also developed games, and I had a lot of fun. By the way: Thanks to the guys! They love their job. And their employer loves them, too. You know why? Guys who are having fun at work don't need too much money. Simple but true.

The best about it: They studied Computer Science because they love games and ever wanted to create games. You know what? That makes them even cheaper.

Now you have some more or less well educated, enthusiastic guys who love their job, do extra hours, every day, because they really love what they do. And they have fun. That's great. They will create high quality games... ummmm... even without... ummmm... experience. BUT we have our Seniors! They've got experience.
How many Senior Developers did you see who stayed in the industry without becoming a manager? Have you ever noticed that nearly every gaming company is always looking for "Senior Principal Lead God Programmers"? And have you ever asked yourself: "What happens to all that (junior) developers who swarm into the industry every year? When do they become a Senior?"

Don't worry - they do. Either while, shortly before or shortly after leaving the games industry. But why does this happen? Because they grow up! Even game developers start to have a life (some of them earlier, some later). You can't feed your children with all that fun you have at work. And I claim that the gaming industry is one of the best teachers for creative, self-contained developers - just because there are so many Juniors you have to be clever and educate yourself. So everyone loves to hire a developer that was trained in the gaming industry. Don't they? They do!

Game programmers might not be the ones that write the cleanest and nicest code, but many of them are clever - some of them are brilliant. And they're willing to learn. And they learn quick. So if you're brilliant, at least clever, and have experience you want to be payed at least good - latest when you realize that all of your friends are payed better.

But there must be some Seniors in the industry. Somewhere. Well. There are! We forgot about two kinds of guys:
The first group are the guys, I honestly respect for what they do and how they do. They are the gods of the industry. But there are very few of them. And most of them usually leave their employer to build up their "own thing" - to make everything better. By the way - by then they become managers, too.
Now let's come to the darkside. The second group are the leftovers. What about the guys who are good, maybe only good enough not to get layed off? Well what would you do, as a manager who has no idea of programming? You have the choice between that guy who managed to survive the last five, maybe ten, years in the industry and the guy who arrived from university - months ago. What do you think, who will become the Senior, the Lead, the boss of the development team?

If you look at the very young browser games creating companies, that popped up out there over the last few years, you can see their very, very young staff. There are Lead Developers with only a few years of experience. They often don't know anything about scalability or performance, or platforms, or professional software development techniques and methodologies, not to speak of leadership and all that unnecessary "soft skill crap". What options do you have, if you have a bunch of Leads who aren't Leads and you hire the real Leads (if you manage to convince one of them)? There is no other chance than lifting up the real Lead to the management level, to not immediately lose him after he arrived. So your structure is getting even worse. Because now you have Lead Developers that are no Lead Developers and you have managers who are no managers. Got it?

Now please ask yourself again why games are so buggy!

At the moment some companies, especially in the online gaming business, try to handle that big issue. And they seem to be successful. Also big players have recognized that you can't grow successfully over the next years or decades if you lose your best staff. Maybe this is THE chance for the German games industry to make a change, to attract the real good developers from outside Germany. But most of all this is a chance to keep their own talents - in the company, in Germany. I know a lot of very good guys that turned their back towards Germany and headed to England, the US or Canada. The Big Players are located there and the talents will follow them.

So let's cheer all the German game development companies and publishers who realized, that there is only one chance to become mature, senior companies by fascinating their Senior Developers and manage to keep them in the company. There is only one way to achieve this goal: Pay fair, treat them fair, value them and their work, teach and educate them.

Never forget: "Human capital" is all you have. It makes your company successful. You will be treated by them, as you treat them!

Dienstag, 21. August 2012

SOA thoughts

Maybe you've read the legendary "Stevey's Google Platforms Rant" by Steve Yegge - I did so today. If you call yourself a Software Architect or somewhat like this you have to think about his words and sentences.

You. Have. To.

For me the most important statements of him are:

 "But they [Amazon] do services because they've come to understand that it's the Right Thing. There are without question pros and cons to the SOA approach, and some of the cons are pretty long. But overall it's the right thing because SOA-driven design enables Platforms."

"We [Google] don't understand platforms. We don't "get" platforms. Some of you do, but you are the minority."

"A product is useless without a platform, or more precisely and accurately, a platform-less product will always be replaced by an equivalent platform-ized product."

So let's talk about my thoughts and maybe yours.

Did you ever feel like this? Sitting in your chair, reading such sentences and think "We don't understand platforms." Working in the online gaming business means perfomance. Tune up performance. Don't care about code quality. Tune up performance. Don't think about maintainability. Tune up performance. But why? Right! Because "We don't understand platforms."

Nobody cares about SOA, because it's slow - in the eye of many developers in the online gaming industry. But is it really important for a casual social click-based game to be high performant? Is it really important to ignore the opportunities a platform offers? I don't talk about a second Facebook. I talk about internal platforms. About publishing platforms. Regarding the understanding for the importance of a platform: "Some of you do, but you are the minority."

And I think, the ones who will understand the importance of a platform in the online gaming industry will rule the future. You can't beat Facebook. Did you ever think about why? Have you ever thought about what Facebook is? Not? Then go and read "Stevey's Google Platforms Rant". We don't talk about a social network website. We talk about a platform. A networking platform. A gaming platform. An application platform. I fully agree with Steve Yegge - that's why Google+ failed, why it sucked. It never was a platform and it will never be a true platform. Google can build products, Google can't build platforms.

And what about you?