Jump to content
  • entries
    943
  • comments
    5,899
  • views
    923,763

Why Small Companies Succeed


Josh

8,920 views

 Share

The development of Leadwerks3D seemed like an impossible task at first. Not only did I need to write a new 3D engine entirely in C++ mostly by myself, but I had to make it run on four platforms (Android, iOS, Windows, and Mac), with a scalability all the way from the fixed-function pipeline up to the very latest hardware tessellation features. All logical sense told me this was impossible. Even large companies with 100 programmers or more haven't yet been able to put out a 3D engine with the range of platforms and scalability I am targeting. What makes me think I can do it?

 

As we approach the initial release of Leadwerks3D, what I thought was impossible seems much more feasible now. During the course of development of Leadwerks3D, I've learned some important ideas that give a lot of hope to me and to indie game developers everywhere.

 

Systemic Interdependence

When managing complex tasks there's something called systemic interdependence. This refers to the idea that when you have many people working on one project, they are rarely isolated from one another. They often have to stop and wait for another person's job to be done before they can continue with their own, and programmers often end up stepping on each other's toes when they work together.

 

Even though only Aria and I are working on the source right now, we have experienced this. It's very important we keep busy with separate aspects of the engine. Aria works on platform implementation issues, I work on the core engine design, and we try our best to keep the source code repository in sync. So far this works well for us, but I could easily see a lot of problems arising if we had more people working on parts of the engine that aren't so easily compartmentalized.

 

Think about your own game. What if I told you I was willing to give you as much money as you wanted to hire programmers, (as long as your final project gave me a big return on my money). Sound great, right? So you go out and hire ten programmers. They come in every weekday, 9 to 5. They're willing to work, but you have to instruct them and keep them busy and productive. Don't have anything for them to do at the moment while you finish one little part? Too bad, they're still on the clock and you still have to pay them.

 

With ten programmers, would your game get done ten times faster? Almost certainly not. In fact, as you add programmers, your work output will probably look something like the graph below. With one programmer, we have an output of 100 arbitrary units. We gain efficiency with the first few programmers, but the effect lessens with each additional worker. They have to wait for another person to finish something. Now the code repository is conflicted, and you have to figure out how who added what code. You also have an increasing number of relationships and communication between individuals.

 

blogentry-1-0-74726900-1322335662_thumb.png

 

Once we get past five programmers, additional programmers actually have a detrimental effect to our output. If we continue adding more workers, we can reach levels of output that are below even that of a single programmer. Imagine if 30 people were working on your game. It would be chaos, and that whole time you would be burning money as they came in every day. Meanwhile, your investors would be sitting impatiently, expecting you to get back a lot more money than they put in.

 

My chart above isn't precise, and the number of programmers a project can support will vary based on its ease of compartmentalization, but the overall idea stands: Software development does not scale very well with additional manpower. This is why small companies are continually springing up and outmaneuvering larger ones. Android came from a small company. It was bought by Google, but only after a small team had built the foundation. Minecraft came from a very small company. Kinect originally came from a small company. Small companies with focused goals are able to compete with much larger companies because of the effect of diminishing returns.

 

Performance and Motivation

Another problem big companies have is motivation. In a professional software development environment, managers like to have measurable performance metrics to evaluate employee efficiency. These are used for performance evaluations, and are the basis for salary increases, promotions, and disciplinary actions. Managers set goals and milestones that can be easily measured after a period of time. Workers respond to this by doing exactly what management tells them because they get rewarded for it. If a worker has an idea for a new technique that might or might not work, they're not as likely to spend time on it in this environment. If it works, the company gets to keep their idea and they get nothing. If it fails, they've wasted time on something that doesn't fit into their manager's ideas of measurable performance. Now, a lot of tech companies do try to encourage innovation, but if a worker has an idea for something they really believe in, they are more likely to form their own company where they can be in complete control of their vision. The professional software development environment does not encourage risk-taking and innovation the same way small companies do, because they need easily measurable metrics to assess performance. They only get out of employees what they reward, and it's hard to measure the value of new ideas and attention to detail.

 

Conclusion

These ideas I've learned during the development of Leadwerks3D are directly applicable to your own game projects. Don't get discouraged when you run into a tough problem. Even if you had more help, you would still have to figure out a solution, one way or another, and you wouldn't be able to shift that responsibility off onto employees. You can do it, just be wise about where you focus your efforts and plan carefully.

 

--Edit--

 

I posted this article on GameDev.net and got a few interesting responses:

 

I've been saying this for years. Nobody seems to listen because they have never worked on their own projects. Only those who try their own work will ever understand. I work at about 60 to 100x faster on personal projects than I do at work. My graph would drop off after about 3 programmers though. You could be productive with 5, but your brains are less connected. 1 person can have a vision in which they don't have to communicate to anyone, 2 people share visions through talking and short meetings, 3 people is a discussion on mixing visions. After 3 people you need some longer group meetings.

 

One thing other than motivation you missed as well, is with a company of more than 10 people, people leave companies. So when you lose someone that built 1/3 to 1/10 of the entire code-base, no new hire will ever be 100% in tune with that persons code and know all the ins/outs, it is impossible unless you can physically read minds in the future.

-dpadam450

I've personally experienced this at my current job. It is just me and another developer, but he designed the whole project and wrote almost all 30k lines of code. Getting me up to speed is nearly impossible, but I have been able to built new components for it and implement them. We have ran into a lot of repo conflicts a long the way. This is just 2 developers too. But I often spend more time reading the code trying to understand it then I do actual programming. I've probably added only 3 - 4k lines of code to this project so far. But we are slowly getting in sync with each other, it is quite the progress. Excellent read though, I am also way more productive on my personal projects then the ones at work.

-wicked357

Sad but true, I've spent many a lunch conversation on this topic. We tried to express these issues to corporate but it was too little to late, and now our studio has been "economically down sized" LOL good riddance.

-ELawson

 Share

32 Comments


Recommended Comments



I think there is a lot of truth in what you say Josh. So long as Indie developers keep their goals realistic then there is no reason why they can't succeed with small teams and budgets.

Link to comment

Well, i totally agree with this. But on the other hand, i dont think that large companies (with, lets say, 100 programmers) works on a single project.

If i'd have 100 programmers - i'd just split them into a small groups (5 to 8 programmers each... 15 - maximum, depends on complexity of project) to work on different projects.

And, well, i think, things are done in similar way nowadays.

Link to comment

I code alone - yet, I have the output of a chocolate slug frantically typing in a furnace.

 

I think a massive factor is to employ people who basically have no other interest in life - don't play computer games, don't have children, don't watch TV, don't socialise, don't have any interests.

Link to comment

I totally agree with all of this. I've always thaught about getting help but then I think twice on the stepping on toes effect and I decide to do it myself. Thanks for that Josh it's good encouragement :)

Link to comment

Software development does not scale very well with additional manpower.. This is why small companies are continually springing up and outmaneuvering larger ones

 

I don't think the number of programmers and them stepping on toes is why this is happening. Big companies have more to lose if someone screws up big time. There are more people dependent on that company and there generally is more money involved. This often comes with a bunch of processes to minimize risks. Does Josh have to send out a change control document and get 5 different approvals before he can have his change packaged and implemented by another team where he has to document step by step the change because he can't make it in production? (this is what I have to do at a large company today) Most likely not. He most likely just makes the change himself and pushes it into prod with some testing.

 

Process like this kill big companies from being nibble, but it protects them from making massive mistakes. It greatly minimizes their risks. If a programmer at Facebook right now just pushed a change into prod himself and screwed up it would tarnish Facebook forever and possibly cause them users, but I promise you when they first started out and nobody knew about them that's what they were doing. Once they got massive, they had to change to avoid that risk. So now they just let small companies take that risk for them and buy them out when they are far enough along with their risk taking project.

 

Small companies will always outmaneuver large companies and they always have but it's because they can afford, and often have to, take that risk to survive.

 

I also think bigger teams can work, BUT it requires the person who is holding everyone together to not be a programmer, or an artist, or a designer. It requires them to be a manager. Now ask yourself how many people who want to get into the gaming field say they want to be a manager in the gaming world? 0, that's how many :) It doesn't work (not saying it couldn't) because the skills required to make it work just aren't there.

 

I don't mean any disrespect, it's simply a different take on the situation. I agree with the overall message just not some of the reasoning to get there.

Link to comment

..small companies who succeed, usually turn to be a big companies, and hardly remain 'small'..sure they are exceptions to the rule, but im pretty sure, its serious minority..

Link to comment

What about the 'Many hands make light work' scenario. I can't help but think that some individuals are most productive working alone while others are team players.

Link to comment

What I'm saying is the core of almost any complex technology is designed by one or a few people. You can expand and add more workers into the mix later, but they won't be anywhere near as effective as the initial team, and you can't very well split up the work of designing the overall system.

Link to comment

Hmm, can people other than the originators of an idea, pick it up and develop it efficiently? The aeroplane has been developed to where it is now by hundreds or thousands of people. So too the car and the PC. I think it's true that each of us has a completely unique point of view but we are only one of at least a hundred Monkeys who are contributing to major new ideas. I'm pretty sure that they correspond to mass shifts in consciousness. Like a veil is lifted and we all have the opportunity to peak with a fresh perspective and some (like yourself) take up the challenge to make use of it.

Link to comment

The simple fact is large teams are required for large endeavors. You are not going to make a modern AAA title with two people so big teams are required if that sort of product is being created.

 

I agree with Josh in as much as any large production team will inevitably have a few key people at the top with the big picture who have the vision and direct things. Certainly, large team work does require different working practices and procedures as Rick has already hinted at. However, if its handled well there is no reason why individuals within a big team can't contribute to the creative process and inject their own input. It's really down to how the key people choose to manage the projects.

 

What I'm really saying is large team production work requires a completely different kind of professionalism and discipline from small Indie projects. It is what it is, I don't really think it makes any sense to compare one with the other as they are such different endeavors.

 

I personally find working in small teams more rewarding as the level of involvement in the overall project and communication is far greater, however, the scope of the projects are always going to be correspondingly smaller. So it is good to get experience of working in larger projects but you very much need to be a team player and not everyone is cut out for that. Some people have a nature where they need to control everything or have communication problems and are unable to work effectively with others.

 

But as a general 'look at what I've done so you can do it too' prep talk I agree with Josh. If this forum is representative of a lot of others I'd guess that probably less than 10% of the total membership of this forum have ever worked in the software industry so have any first hand experience of this.

Link to comment

A pep talk is an emotional story that makes you feel good for a couple days. The effect wears off, because nothing was really learned. I explained in pretty scientific terms two significant problems a company faces as they grow. The purpose is to make you aware of advantages you have that you didn't realize. If you are forming teams and collaborating, this will also help guide your decisions on how many people you need, and what you can expect from others.

 

I'm not sure the definition of a "modern" AAA game even makes sense anymore. AAA games are targeting five year old hardware, so they've already given up on pushing technology forwards. RAGE on the PC looks about the same as RAGE on the iPad. Exactly what makes them AAA? Advertising and having a popular franchise, and not ever doing anything new? Look how many large studios are striking out on the consoles. If it's not "Call of Duty" or another well-established franchise, it's going to struggle. Meanwhile, Minecraft is selling like crazy, and it's not even finished. Casual and mobile make up a bigger and bigger percentage of gamers, so are they really "casual"? No, the days of the giant game studio are at an end. Indie is the new AAA.

Link to comment

Josh, I totally agree with this. As a good example, take a look at what happened to "Pixar", as a small group they accomplished incredible success. Once the executives took over, all went down the drain.

Link to comment

sandan,

On the other hand.. A Large company like Activision Publishing just made a profit of $1billion in the first five days after releasing 'Call of Duty, Modern Warfare3'.

Link to comment

There are good examples and bad examples at both ends of the spectrum and to make out that small is good and big is bad is not really very scientific or to be honest very astute. Minecraft may sell like hot cakes but fails to keep my interest much beyond half an hours game play whilst Skyrim (which has also sold like hotcakes) has had me hooked for the last two weeks continuously. If that's an example of game companies targeting five year old technology and not pushing the technology forwards then fine, because it delivers on the sort of game play I enjoy. Maybe pushing technology forwards is not all it appears to be .. as to use your own example most Casual games are hardly pushing the technology forwards, they are simply running on the latest technology!

Link to comment

sandan,On the other hand.. A Large company like Activision Publishing just made a profit of $1billion in the first five days after releasing 'Call of Duty, Modern Warfare3'.

And who enjoys the benefit of that? Is your definition of success to be a shareholder of a company that produces "Call of Duty: Modern Warfare 3", 4, 5, etc.?

Link to comment

Activision is money maker , and really is just that. There is no passion in Giant Studios any more . Skyrim is one of few which are still great. Call of Duty Modern Warfare 3 has almost same graphic quality as Modern Warfare 1 ,and AI as Call of Duty 1 . Not worth the money .

Link to comment

Well I don't think the millions of people buying MW3 are doing so out of an obligation to make Activisions shareholders rich, they are doing so because they genuinely enjoy the games, regardless of whether we feel they are getting real value for money!

 

I'd also like to point out that there is no escape from the multi-billion dollar companies of this world where gaming is concerned .... as the hardware they all run on are produced by them. We don't get little Indie hardware companies producing affordable tablets and mobile phones for worldwide consumption do we, or even better 'Open Source' hardware :) Shall we damn them and their shareholders too! This argument ends in one place and one place only ... not future gaming if you take the big players out.

 

Sure we Indie game producers have a rightful place in all this and can cater for a market that wants more creative output rather than just playing it safe and churning out the same content over and over again but lets not lose sight of reality altogether! Hollywood has been doing the same for countless decades. You don't need to like it but to say there is something wrong with that is elitist ****, it simply caters for a market that exists. That's what capitalism does!

Link to comment

Of course, my article was not meant to declare a hard and fast rule that was accurate 100% of the time. Everything else being equal, a larger team will have a lower per capita efficiency than a smaller one. When developing a complex application with many interwoven systems (like a game) this loss in efficiency can be very significant. This article was written to explain some of the advantages people working in small teams have, so they can better understand their own strengths.

 

In the past I sometimes found myself engaged in wishful thinking that if only I had more manpower I wouldn't have to figure out some complex task...but more workers doesn't make design challenges go away. You still have to make all the design decisions, describe to your employees exactly what you want them to do and how they should do it, and verify that it was done correctly. Often times it's much easier to just do it yourself than try to assign, monitor, and evaluate someone else's work.

Link to comment

Well I don't think the millions of people buying MW3 are doing so out of an obligation to make Activisions shareholders rich, they are doing so because they genuinely enjoy the games, regardless of whether we feel they are getting real value for money!

Perhaps most of them are new kids in the block, new generations. Believe me Most of the old players don't have the same opinion. I played MW but just multiplayer .

This argument ends in one place and one place only ... not future gaming if you take the big players out.

 

No one has said that . And it is not true . I can't say , there is no music without Led Zeppelin or Pink Floyd or somebody else ... I love them but there is some new kids and they don't care about them.

There will always be new babies , they will grow up in beautiful strong people, and they will become older and older , and some day they will die. But humanity will not die with them.

 

I just say. I love games. I always did . But I can't play same games all over again ,it is boring. Thanks God there are still some studios which don't care about release date .And Small studios with great new ideas.

Link to comment

Lol u guys are all taking this the wrong way. The idea here is that generally as you increase the size of a team of programmers for example: productivity PER PERSON will decrease due to time taken stepping on toes and communicating between team members.... It's an un deniable fact. The key words here are 'Per person'.

Link to comment

This argument ends in one place and one place only ... no future gaming if you take the big players out ... was really refering to removing all of the big companies including the hardware producers as the argument seemed to be edging towards big is bad.

 

I totally agree that we could lose the big software houses overnight and smaller companies could supply games to the market place. But then capitalism being what it is will simply start the process of growth and acquisition all over again and we'll be back to where we started.

 

I don't disagree with you Josh over the efficiency gains of remaining smaller but modern life demands a lot of companies need to operate on a scale well above this and its inevitable that they will no longer be as adaptable or possibly innovative as the smaller ones, but they do deliver things the smaller companies are just incapable of delivering and as such are often needed.

 

I don't personally see the big game companies disappearing any time soon because, as Afke pointed out, they know there is a constant stream of new purchasers coming on line and lots of people crave big block buster type games as well as movies. But it's certainly never been a better time for small Indie developers to sell their games too.

Link to comment

Absolutely correct ! Before 10 years it was extremely difficult to inides to make any serious attempt . These days you can literally create anything you like and sell , just less quantity.

Link to comment

You still have to make all the design decisions, describe to your employees exactly what you want them to do and how they should do it, and verify that it was done correctly. Often times it's much easier to just do it yourself than try to assign, monitor, and evaluate someone else's work.

 

I think this is just your personality of wanting control of things. Nothing really wrong with that it's just the way some people are. If you didn't know programming, because say you were just a designer, you would just have to take the code someone gave you and see if it worked. If it did you'd take it at it's value and just move on. Because you are a programmer you let your curiosity get to you and start digging in and looking at the code in which takes time. Then you might actually find a bug or an issue and address it, which takes time. All that, or you could have just taken it at it's face value and moved on with your product.

 

 

productivity PER PERSON will decrease due to time taken stepping on toes and communicating between team members.... It's an un deniable fact.

 

I don't see that as a undeniable fact personally. The amount and accuracy of planning greatly makes this fluctuate. It will be true for an unorganized group but for a very well organized group with a very detailed plan it won't be. In fact more people can make a person more productive because you can bounce ideas off each other and come up with a solution to a problem that you alone might not have been able to solve at all.

Link to comment

In my working experience of team based software development programmers are given functional specifications to work from and actually do all of the design themselves, often starting with a detailed design document which may be subject to review.

 

I admit that where an actual game engine is being designed which is a fairly performance critical component there might well have to be much tighter control on the overall design, but again you would expect to employ people who have experience in this field and any desired techniques to be implemented discussed in advance of any design work.

 

When it comes to people using Leadwerks to design their games I wouldn't have thought the design was that critical in many areas for someone to have to do all the design up front simply to delegate it out to programmers to code, unless the quality of the programmers employed was very poor!

Link to comment

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...