Structuring your Development Environment

As Ibo just posted about Sevenload’s Secret Garden strategy, I thought I’d wage in with my own thoughts on structuring your development environment. We see ourselves as a technology company at Ormigo, mainly because we do not believe the local market problem, getting it online, will be solved with a sales force.

Ibo’s article is in german so I will try to translate a few of his views and comment and elaborate. He is only giving a few insights, but they are relevant none the less. The basic idea is to build an environment that helps to build great products.

What Ibo has developed, with Tom and Axel, is to put the developers in a “hermetically sealed” environment, meaning they are behind closed doors. The general idea is good in that you need to get into a flow and disrupting developers in their work is bad. Fully closing the door and letting nobody in is an interesting concept and I am looking forward to hearing more of how it works. From my personal experience I would argue that you then need core teams and an operations team and that operations team needs to be in another room, because there are operating things that need to be discussed shortly.

The other big problem with this closed door is that you loose communication, and the most important thing in software development is communication. That is the entire idea behind scrum, which he hints on later. Of course the communication needs to be structured, but based on his idea, there would be no problem having teams dispersed over different countries, especially because he says that most communication goes over an internal IM client.

He does say that developers need the right gear and among others two monitors. We have been doing that from the start and it is proving very valuable, but it is not limited to developers. Especially if you say that developers need a laptop, buying a second 20+” monitor is needed and the price point is not so much different from a desktop system in many cases. One thing I like is his idea of having large flatscreens on the wall that give the status of the servers and features in development or just launched.

There are no walls between people in the same group, which I agree too, but only glass walls between different teams within development. We actually have smaller rooms here, with 2-3 people in development in one room because some people need to close the door from time to time. That is really his secret garden idea but tailored to the developers that want it like that and those that don’t.

His basic ideas of a secret garden actually fit to scrum again and also are often common sense, like not fighting but discussing. But that is a culture thing and the culture at Ormigo can sometimes seem rough. This is an extension of having people with experience and clear views in the company though, and we can all disagree vehemently, discuss things and then come to the conclusion for a plan to follow, because each view has been heard and we can then agree to disagree but agree on a plan. That is very important, and needs a good managed of a meeting culture, which is independent of the secret garden system though in my mind.

He also says that they have only structured discussion among small teams, also with different departments, which is fully reasonable. It fits with our meeting system for bi-weekly deploys. In the middle of the current sprint we have a short meeting with everybody for an update of the current sprint and discussing the next sprints high level goals. There we also discuss who is responsible, which will be one person from bizdev and one developer as a minimum. That allows for rotating responsibilities through the entire team. This small team then makes sure to get a better idea about what the next sprint will be about showing that in a short meeting over lunch at the end of the week. Next monday we normally deploy our current sprint, and then go down into tasks for the following sprint, splitting up different tasks for different people in kind of sub-responsibilities. Then the system starts over. So yes, you need small meetings, clear responsibilities, but you need very semipermeable walls between each department in the company, while being clear that you don’t just walk up to somebody and ask a short question (which is hard sometimes).

Congratulations for using JIRA as a task management system, even though I am not sure if it does not create too much task management overhead. Doing development for corporations that might be needed though. We are using Trac internally and are feeling very happy with it because it allows us to easily handle small sprints and mix around tasks. Yes, there are no task dependencies in the system and no required process flow, but that is not needed with the right structure behind it and small sprints. These interdependencies are only needed if you do a 3 month sprint for example, where you start to need a real project management. Interdependencies are for us between sprints on a higher level.

He also says that often you loose yourself in technical details, which is something I can only agree with. This is why the development team needs to know the business side and the numbers and the real goals. Goals are not “build feature x” but “get more SEM traffic” or “allow more ratings” which can be measured afterwards. The technical detail bit is actually what makes the difference between a great developer and a good one. A great developer will know what is needed and what is overkill. You should not die in beauty. But there again the bi-weekly deploy system works very well in that it requires you to focus.

Looking forward to hearing more from Ibo about their structure and how it is working out. Scrum is great but real Scrum is REALLY hard.

On Habbo Hotel and Scrum

The two topics do not really relate but they come up in one article that Valerie from alarm:clock euro linked to. GigaOm also has a few comments on the article, also stating that the Sulake Labs, the finish start-up behind Habbo Hotel, is making something like $77 million a year at the moment. Not bad for a 2.5d virtual world. The article is a good read though on learning more how they stumbled upon their success.

Our company has, indeed, stumbled onto some of its new products. But never forget that you can only stumble if you’re moving. - Richard P. Carlton, Former CEO, 3M Corporation

It’s a really interesting model their playing with, and fun to hear a bit about what “games” people play within the game. I also found it interesting that the founder talks about having moved all development to an agile/scrum methodology and now releasing every 30 days. They seem to be very happy with it and the switch must have been very hard, especially if you pull it through 100%. The uncertainty that comes into the system is sometimes challenging. The speed, happiness and creativity is the reward.

Some Stories waiting posting

As there are some things I’d like to link to I’ll just aggregate them right here to finally get them out of the way. :)

First of all, the Pirate Bay Legal page is a real fun to read. As a background, they run their torrent servers in a country where hosting the torrent files that point to files of copyrighted material is just not illegal and so they are fully in the green for doing what they do. Their answers are to the point :)

Qype had a relaunch and I really like it. Congratulations to the people behind it. Very nice indeed. Technorati also had a very good relaunch and especially of note is the new Technorati Search page. I have to admit that after having been a member since 2003 I am really using Technorati more and more. It just happens very often that you want to know what people are saying right now and there the search is just a nice interface. Next up is the Xing Marketplace which is really nicely done and I am looking forward to seeing how it develops. Still need to play with it though.

When you want to start a new coding project, I suggest taking a look at Springloops if you do not have your own servers for development or even if you do, because it looks awfully well done. Setting something like this up is not an easy task, especially if you move to the Garden version and can set up automatic deployments. Our system now consists of live, staging, dev and integration servers, where the integration server checks trunk for changes in short cycles and automatically deploys the software, sending out alerts for failed tests. It even blames people via svn of errors ;) But we built it ourselves, just having the knowledge in the team.

On another note, Jeremy just cannot quit with Desktop Tower Defense. I can understand that ;)

Nine things developers want more than money

Very good post over at Software by Rob. It’s about the important things that developers need to work happily at your company.

He places everything in two parts. Hygiene and Motivation. This is actually very similar to Maslow’s hierarchy of needs something that is always again turning out to be true. Maslow put motivation into a hierarchy.

* Physical Needs: working conditions, wage, housing, catering,…
* Safety: health insurance, pension provision, safety, security in job
* Social: sports, clubs, parties, outings, open communications, …
* Esteem: Regular positive feedback, prestigious job titles, promotions
* Self-actualisation: challenging, encouraging, can structure own work

The idea is that you need the first parts like with a pyramid. If the base is not there, it is futile to add the others. In bad working conditions, no amount of challenge will lead to motivation.
The same thing is true for hygiene. You need it to start with. Or at least a good amount of it. Maslow is actually a bit clearer that you need the base as a must have.
So let’s put this more into perspective for developers.

1. Being Set Up to Succeed
The idea is that you really want to build something, something that doesn’t put unnecessary road blocks in your way, that is maintainable. It needs to be a quality product. It’s craftsmanship. You don’t tell a craftsman to build a crappy table. I am happy to be able to put a check here.

2. Having Excellent Management
You need to take bullets for your team, no micro-managing, give them free the freedom to think themselves. This is really too early to tell. This really takes time to build up. The verdict is still out.
3. Learning New Things
It seems that if your job gets more variety, and you get to acquire new skills, you will forgo a 20% raise. A really good developer needs to learn. Of course they have to want to, which is kind of a circle. Good developers do. This is a kind of test. I am making damn sure they have the option.

4. Exercising Creativity and Solving the Right Kind of Problems
I think I have to try one suggestion he has: drop a Sudoku in the middle of the developers to see them attack it. Might be a good trick when hiring somebody new. :) I agree that developers love challenge in general, so a big job is to make sure that the problem at hand is a difficult one. And remember, easy problems can be difficult if put in the right light and made into a challenge.

5. Having a Voice
When a developer speaks, somebody has to listen. Simple. That’s actually true for all people I’d say.

6. Being Recognized for Hard Work

Peer pressure. Something Google uses as a management style. Hard to make right and not backfire.

7. Building Something that Matters
Building something that somehow has more reason than making money. I think we score big there at Ormigo, because we give local merchants an option to compete in the global advertising market.

8. Building Software without an Act of Congress
Let them build it. Don’t talk about building it, but build it.

9. Having Few Legacy Constraints
This is really a cry for refactoring and putting that into your development model, making time for it. The thing is that you don’t want anything in your app to hold you back. But as you are learning along the way, the stuff holding you back will appear again and again.

I actually have to say that we are doing pretty well at Ormigo. A lot of this can be read out of simple management practices from an MBA if you look at it from the right angle.