27
Feb/08
0

Do It Now, Carefully!

“Do It Now!” – saying is a very good tip for everybody, but it also has its problems. You can really perform well if you use it right. It is like using Scrum, if you don’t use it right, it will do more harm than good. The problem is that this doesn’t have rules like Scrum does. I’m going to go through some common problems related to this great tip.It is a good tip and easy to follow when you work by yourself, but inside a team you need to be really careful when you follow this tip. Some problems that it can cause :

  • Lack Of Design
    • Don’t spent time on designing.
  • Communication Problems
    • Easy to cut down all communications just by saying “Just do it!”.
  • Missing Customer Needs
    • Because of no proper design, rushing “to do it”…

To avoid these problems you’ll need to start applying the “do it now” in right places, like after you have designed and agreed on tasks you should use it to boost your performance. Start watching how people act in your team, if they are doing this then they should be notified that they might be really creating some problems instead of just boosting their performance.

Small things like this matter.

Post to Twitter

18
Feb/08
0

Team And Personal Values

I’m a fan of values as they help me a lot at my work. Some people don’t use values at all, I see this as a problem because then people “are not aligned to anything” -> how should they act as a company, as a team, as an individual?

Here are some values that I know have worked :

  • Individual honesty
    • There is nothing worse than lying to yourself.
  • Team instead of individual
    • What is better for the team.
  • Company instead of team
    • What is better for the company
    • Everything should be aligned to company vision / target / values.
  • Individuals instead of processes and tools
    • Be dynamic, modify the process for the team, not other way around!
  • Ownership
    • Let the team and individuals take the ownership of the product they are doing. Let them be proud of what they are doing!
  • Learning
    • There is always something to learn!
    • Learn from mistakes -> don’t make the same mistake twice.
    • Encourage to learn : take courses, read books, keep training sessions.

I assume that every company has list of values they act by, but if there is a company that doesn’t have a list of values they really should start thinking about their values and lay them down.

Start driving these values : act by the values by yourself, which is one of the most powerful ways to get your team to use these values as they see the power of values. Also tell your team members why these values exist and what do they mean. Point is that somebody should know why the value is listed and why you should be using it.

What if the values you are driving doesn’t seem to work? Well then it is time to raise the question : do these work at all? has somebody else used these successfully? and so on.

So what is the real power of using values? Well in the best case everybody continuously try to learn new things, try to be honest, and so on. Few examples :

  • If people keep learning, it is adding value to your company.
  • If people are honest they tell the truth. If a problem occurs people can react to it very quickly as the problem is raised right away instead of hiding it until everything explodes.

Each company, team and individual should have values. I loved working at Nvidia because they took their values very seriously and it worked. You should do the same thing.

Post to Twitter

Filed under: Personal
16
Feb/08
0

Technology Demo Released!

I released the very first technology demo from my 2D graphics engine. It currently runs only on Windows.

This version doens’t have much interaction with user, but you can play around with the object scripts if you want to.

Download Here.

Main Features :

  • Sprite system
  • Image
    • Scaling
    • Alpha Blending
    • Color scaling
  • Font
  • Speak System

Most of the art from : http://reinerstileset.4players.de/

Screenshot :

All feedback is more than welcome!

Post to Twitter

Filed under: Personal
13
Feb/08
0

Book News

Original book annoucement post. Without too much talk here is a list :

  • Sold 3 copies – not much, but it is better than zero.
  • Got reviewed at GameProducer.Net
  • Both negative and positive feedback.
    • Negative : it is not very pro (well it is my first book) and not much content.
    • Positive : everybody learned something.
  • I learned loads of new things.
  • Motivated me to start a new book which will be a lot better (I hope).

That’s it. :)

Post to Twitter

13
Feb/08
2

Game Institute Training

I have been watching Game Institute for years now and  lately I have been receiving some very positive feedback about it.

From what I can tell it is a very great place to get game programming training. They have some really talented teachers there, like Andre LaMothe! So check it out :

Post to Twitter

12
Feb/08
0

Eternal Management Problem : Communication

Communication problem between the team core and team management is something that almost every team faces at some point. There are loads of reasons why this could happen, to name a few :

  • Core team doesn’t trust the management.
  • Management is somehow ‘freezed’ or doesn’t care.
  • Core team doesn’t have anyone to raise the problems -> remember that management doesn’t have some kind of magical crystall ball to see what is really going on.

How to solve it isn’t easy and it requires time and patience. To solve it you’ll have to start looking up the problems, what kind of communication problems do you have, where do those come from?

During the process it is very important to not blame individuals, it is very easy to do that. Yes, I need to admit that I have done it and will probably do, but I always try to remember that this is a team problem. In rare cases individual person is really causing all the problems.

I remember one indie team where I was working and we had similar problems. We spent loads and loads of time to think about how to solve it. We found out that by taking an outsider to look at our problems helped us to understand the real problems -> it is hard to solve anything if you don’t even know what the problem is.

Anyway, that is my experience and it probably doesn’t apply to other cases as each of them are unique.

If your team is facing these kind of problems, start raising the problems before it is too late. That is the only way to solve things : face the facts. In most of the cases it will reveal other problems too and the thruth will hurt, but it can save your team so it is worth of it.

Some helpful things that I have learned :

  • Individual honesty
    • There is nothing worse than lying to yourself!
  • Talking the thruth
    • Don’t say “Everything is OK” if manager asks how are you doing and you know that things aren’t OK.
  • Taking ownership
    • Start raising the problems and solve them.
  • Team instead of individuals
    • Try to remember to not blame individuals!

Post to Twitter

Filed under: Personal
10
Feb/08
0

What I’m Currently Working On

Well first of all I’m still working full-time at Futuremark Oy, and I love it!

Also at my ’spare time’ I’m working on my 2D graphics engine and my new book. New book will be about how to make a game with free tools, it will contain source codes to my 2D engine and to one game, but more on that later. ;)

My 2D graphics engine is processing pretty well, it currently contains :

  • Alpha blending
  • Scaling (nearest filtering)
  • Color scaling
  • Sprite Animations & Key Frames
    • Also supports scripts.
  • Bitmap ASCII Font
  • Speak System
    • Renders a background with text and with options to choose from.
  • Framebuffers
    • Can be placed on top on each other, blended together, etc.
  • TGA images (not compressed)
  • Windows
    • There is currently only 1 file that is platform dependent, so I’m planning on porting it to linux and mac.

Here is a screenshot from the test application that uses some of the features :

Wait until you see that in action, I’m really proud of it. From the software developers perspective, it is the coolest thing I’v ever done.

Post to Twitter

Filed under: Personal
8
Feb/08
0

Books To Read – Page Opened

Link

I’ll be adding more books in there from time to time. :)

Post to Twitter

Filed under: Personal
8
Feb/08
0

How To “Level Up” In Programming

Easy to way to ‘level up’ in programming is to ask for somebody else to review your code and to bitch about everything that he doesn’t like. After that you’ll go through all the comments and do something about them if you think those are right, if not then you’ll ’spar’ / argue with the reviewer – note : in that you don’t have to find a solution which pleases both, idea is to get new point of views and to learn.

Post to Twitter

5
Feb/08
1

Function Driven Design

I have been trying out different ways of doing things while writing my 2D graphics engine. I came up with a pretty neat way of doing things fast with good enough design before implementation, I call it function driven design, don’t know if that already exists or not, but that describes my way.

The Basics

The idea in function driven design is to first design your ‘module’ interface, e.g. write down all your functions to header file. Now this requires a bit discipline, like everything. For each function spent some time (max 5 min) to give it a proper name and right parameters. Time is fixed because I don’t want to be spending eternity on thinking the function declaration. Now after you have written all down you probably already have some ideas about what needs to be changed / improved, now run through a second iteration doing the same thing : check the names, parameters (and their names too!), the general design (think about how it should work) and add new required things.

Second Move

Now you have a interface designed and it is start to continue to source file. Copy all your functions from your header file to your source file in the order they are presented at the header. Then make them all do nothing ‘NULL’, ‘nada’, got it?

After you have functions that can be executed, but won’t do anything you have a prototype of it, kinda. Now start going through every function and add description in few sentence what it should do, if you can’t do it in few sentence then it is probably too long function and at that point I have added TODO in there (explain why) and continued to next funtion. Spent 5-10 mins on each function to come up with the description, again think about how it should work, what it should do, what is it using…

Nearly Implemented

So now you have an interface and null functionality and descriptions for the functions. Do a quick overview of everything : handle the TODO’s, if you spot mistakes fix them right away and so on.

Alright, now you should have a pretty good idea of the ‘module’ : what it should do, how it is designed, what it will use, etc. So we can start implementing, start doing the real implementations : even if some function is not yet implemented use them as you will implement them soon anyway. Compile at least after each function to fix all warnings, errors, etc.

Finishing Touch

After you have implemented your functions go through it once again with small functionality test, e.g. if it is sprite module try that you can create sprite, render & animate and destroy it. Fix all design errors, etc.

As a side note to testing : remember what ever happens it should not ever crash! Even if you shoot nulls, empty filenames, etc. in it, it should just return a clean error message and exit.

Conclusion

I have found this way to be very effective. It has reduced design mistakes, bug and time spent on doing the module and getting it up and running. Used to I had to fix loads of stuff after implementing the module before getting it running, now I’m even sometimes able to get it working right away!

Many iterations and fixed time boxes ensures the quality -> -> makes it is good enough and it doesn’t take eternity, which is really cool. :)

Post to Twitter