Value for Money in Software Development

Paweł Brodziński June 4, 2014

High QualityI was wandering around Cascais to find a place for dinner. Not just a place – it’s pretty easy to find a place in touristy locations – but a place that serves good food. I ended up in an alley with four restaurants side by side. I didn’t make my choice based on the content of the menus displayed outside. I used the guidance of reviews I found in the internet. In fact, the reason I ended up in that alley was because I was seeking that very place.

Later, when I was eating a gorgeous sea bass I realized that I hadn’t a faintest idea of what the other three restaurants charge for a similar meal. The neighboring places might have been cheaper, even significantly cheaper and I wouldn’t have noticed.

I guess price is not the only factor one considers for when they want to have a good meal. Of course, I looked at the prices before committing, aka ordering a meal, but an idea of cross-checking the prices with other restaurants hadn’t even crossed my mind.

I wasn’t there for a cheap dinner. I was there for a good dinner.

Another layer to that story is why I was in Cascais. It is where this year’s Kanban Leadership Retreat was held. This event for me is the one where I start planning my travels every year around. The quality is great, the setup is perfectly adjusted to its goals and the people who pop up are the right people.

Is it cheap? No. I wouldn’t say it is super-expensive either but it’s definitely not cheap. Does price matter for me? Not until it is outrageous.

I’m not here for a cheap event. I’m here for an awesome event.

Now, why would I bore you with stories about eating great seafood in beautiful Portugal?

The reason is that it reminded me painfully of the number of sales conversations I had with our potential clients. The focus of those calls was based on our rates. What’s more, the rates seemed to be the only key factor for these guys in which to base their decision around.

This is exactly the wrong discussion to have.

It’s like looking for a good dinner and choosing the cheapest place. It’s like looking for a good event and choosing the least costly. Do you do that? So why, the heck, would you do that when the future success of your product was at stake?

Don’t get me wrong. I’m not saying that price is irrelevant at all. We all have some sort of budgets. I wouldn’t pay 200 EUR for my dinner only because the sea bass was delicious. What really matters here is the value for money. What is value for money? This is the ultimate question which needs to be answered. This is the parameter that we should be focused on.

Interestingly enough, when it comes to feeding ourselves we are pretty damn good at it. We don’t eat crap food only because it hits our pockets the least. Occasionally we’d go for something fancy even if it is expensive. We can even dynamically balance the tradeoffs we make across cost and quality dimensions depending on the context.

On occasion we’d take convenience into consideration and eat whatever is available at hand. Sometimes we may not be able to afford what is the best value for money as it would simply be too expensive. From time to time we’d experiment and go with a risky option which we can’t easily assess its value.

Now, the thing I don’t understand is why people turn their common sense off when it comes to building their products. Imagine that you have an idea that you believe in. You took effort to get funding or you fund it by yourself. Alternatively, you may act as a proxy for someone funding the whole thing.

Do you really want the cheapest possible delivery? Are you aware of all the tradeoffs you are taking in a package? And I’m not talking about quality or lead time only, but also about all the interactions and collaboration.

Are you OK to get the fast food of software development? If so, that’s perfectly OK, but I’m afraid we are not the right partner for you.

If you, however, want to get good value let’s discuss how we work so that you achieve a quality outcome. What’s more, I would encourage you to run an experiment. Don’t invite your whole family and friends to our restaurant for your birthday party. Just stop by for a quick light lunch. You’ll learn whether you like what you get.

When I say an equivalent of lunch I mean just few weeks of work. Define which feature or features will be required in every single crazy scenario you can think of. I don’t ask you to define an MVP. Just something that you’d start with. We sometimes label it as Minimal Indispensable Feature Set. Once we’ll have built it, you will pretty much know whether you want to continue. And so will we.

By the way, a conversation about the rates makes perfect sense in that context. Except, you may realize that in the same way as it was with my dinner it may be fairly irrelevant as long as it is reasonable. Not reasonable as in “compared to the cheapest fast food around” but reasonable as in “seems like a fair price for what I expect to be a good dinner here.”

Another interesting context to this whole discussion is that the consequences of choosing a bad restaurant aren’t nearly as painful as consequences of choosing a bad partner to work with on your software product. Yet, it seems to me that software vendors are most often chosen for all the bad reasons. No wonder that what is acceptable quality for software would be considered appalling in pretty much any other context.

There is one more thing. When looking for a restaurant it isn’t unusual that we use higher prices as an indicator of quality. After all, if the restaurant had exactly the same quality as all the other places they wouldn’t be able to consistently charge more and keep the business running. They must be doing something better, right?

The same story goes with how busy a place is. The more people sitting around the tables the more likely that they serve good food.

Keep that in mind for the next time when you’re looking for a partner for something lasting and costing a few orders of magnitude more than a dinner. Like your web application for example.

Finally, please don’t treat that as a marketing message. Even if you consider us as your partner and you use that guidance to choose another partner, that’s perfect. Any business relationship is healthy and sustainable only as long as it is win-win. What I hope for is that this post is helpful in terms of finding those win-win relationships.

Avatarly - Create avatars on the fly!

Lukasz Odziewa May 28, 2014

The Idea

It’s hard to find a forum or any other social site that wouldn’t let you to set up an avatar to establish your own, unique, identity. Sure, aside from making people’s profiles unique, it also has a use value. For example, in a Kanbanery board with lots of users it would be hard to distinguish them from each other. No doubt, not having avatars in place would lead to a mess which, to be sure, is not productivity’s friend. To let users add their avatars to Kanbanery, we integrated Gravatar. It’s a service that lets you create an account using your email address and set an image that will be used as an avatar on any site that has Gravatar integration in place. Cool, isn’t it? Ummm, not really.

The Problem

An example of an avatar generated by AvatarlyPractice shows that most of the users (ok, at least Kanbanery users) have never heard of Gravatar or, simply, don’t want to use any additional services like that. It leads to a situation in which customers get confused – where’s the ‘upload avatar’ button? At some point we realized that there are tons of Kanbanery boards with many users who don’t have their avatars set up, all using the default one and not liking the service because it had ‘no possibility to set up an avatar’. Of course, Gravatar lets you to set up your own default avatar, but it’s not the solution – they still would be the same. Summing this up, i still think that Gravatar is a cool idea, but it lacks popularity (maybe now, when it belongs to WordPress that will change at some point?) and that, in my opinion, makes it nearly useless for most of the users. So, what to do if you, for any reason, don’t want to let users upload their own avatars?

The Solution… maybe?

Screenshot of how Avatarly works in Kanbanery
Here’s how it looks in Kanbanery.

Use Avatarly! What’s that? When trying to solve the problem for Kanbanery, for a long time I hadn’t realized that I used to have it in front of my face for the whole time. If you’re using Gmail, you’re probably familiar with simple avatars containing a colored background and your initials only. I was pretty sure that somewhere there must be a gem letting me create avatars like that in any Rails application. Ok, now it’s there, but it wasn’t there when I was looking for it. I had to create it. I called it Avatarly – you can find it on RubyGems and the source code is available in GitHub. Basically it doesn’t do anything aside from taking any string provided by user and making a Gmail like avatar out of it, returning a image that you can save or use ‘on the fly’. As simple as that, but you’re not limited to defaults. You can set your own background color, font and its color and size. As for the text it can be any string, including email addresses.

Isn’t that cool? Notice that it doesn’t force you to give up on using any other avatar ‘providers’ (like Gravatar, doh) if you want. There a simple demo on Heroku, so you can give it a try.

Summer Internship at Lunar Logic

Paweł Brodziński May 21, 2014

Sunny internshipThink of a company that cares about technical skills but pays even more attention to how we act as a part of a team. Think of a company where collaboration is paramount, helping others is a default option and competitiveness isn’t welcome. Think of a company that, despite having pretty damn good developers, understands that writing more code is rarely, if ever, the best strategy to please their clients.

WELCOME TO LUNAR LOGIC

We are looking for great candidates for our summer internships. Obviously, we are looking for people with decent Ruby on Rails, Javascript and/or iOS development skills, but those are not necessarily the most important qualifications. Most of all, we are looking for people who care about teams they’re a part of and the projects they build. This means being open to a much broader context than just coding.

And yes, we’re going to help you on that journey and we promise it’ll be a lot of fun too. If you feel like you want to be a part of all this apply here.

Internships are planned for 3 months (July to September) and are in Krakow.

What we expect:

  • Decent RoR, js and/or iOS development skills
  • Passion for learning
  • Empathy and interpersonal skills

What we offer:

  • Support on your learning path
  • An unusual work environment with: kudos, badges, board games, etc.
  • Paid

Want to become part of our team? Apply here.

The bonus system at Lunar Logic

Paweł Brodziński April 16, 2014

We don’t believe that money is a motivational factor. We don’t believe that bonus systems work either. Which means that we don’t have monetary bonuses. Sort of, um…, actually we do. Are we being hypocritical? No, not really. Here’s why.

20PLN post-itWe have bonuses only on one occasion per year – just before Christmas. In fact, they are even called Christmas bonuses. The goal of the bonus was never connected to appraisals or performance at all. It’s just a nice gesture before Christmas.

That was reflected in how we shared these bonuses. Everyone who spent an entire year working with us, on a full-time basis during that period, would get the same amount. By the way, this isn’t a huge pile of money. Part-timers or people who joined throughout the course of the year would get their piece of the pie proportionally. The position of the employee isn’t reflected at all in this. Neither is seniority, salary, performance nor anything else.

I told you that it wasn’t any sort of an appraisal tool, didn’t I?

I wouldn’t share that if it were not the fact that we have already changed how we handle Christmas bonuses. No, we didn’t get rid of them. Since the premise of the bonuses was just to make people feel happier we decided to go further.

Getting goodies is nice – more so if you really need them. Sharing goodies is even nicer – more so if others really need them. So why not allow people to share? This is exactly what we do.

Instead of simply getting your bonus what you’d get is a few sticky notes – each worth the same amount. You can write down a name of anyone working for the company and they’d get the amount added to their bonus.

Of course, you can choose as freely as you want. Choosing yourself is perfectly OK. In fact if someone liked the old way of doing Christmas bonuses they still can have it that way. You can however be as generous as you want and in the way you want. Maybe you want to share because someone really helped you? That’s great! Or maybe it’s just the fact that someone needs money more than others? Awesome!

Despite how we value transparency, we don’t make these decisions public. What is public is the overall results, but not the individual decisions that contributed to the outcome. Why? There’s one reason.

Having the opportunity to share makes it more difficult to take everything ourselves. I make it explicit that it is perfectly OK, yet still some may feel like it’s being a bit selfish. In fact, the only complaint about the bonus system we have is that some of us felt it was easier when we didn’t have to make these decisions explicitly.

That’s a pretty damn low cost for the opportunity to feel like Santa Claus if you ask me.

And obviously it has nothing to do with the common perception of what bonuses are. After all there are many things we do that are anything but what we perceive as a canon of management. That’s all part and parcel of being an exceptional company.

Lunar Logic’s cooperation with Rails Girls

Beata Mosór April 11, 2014

How old were you when you first started falling in love with… Ruby on Rails? How old should you be to start learning programming? Rails Girls Youth shows us that there are no barriers blocking you to learn Ruby on Rails development and you can start very early. WebMuses (who organize Rails Girls events in Krakow) invited 40 girls from 13 to 19 years to a workshop on the 5th of April (but finally the youngest one was as young as 11).

Rails Girls Youth - summary
Check out our poster summarised Rails Girls Youth 2014 edition :)

What was behind that event? It was the first edition of Rails Girls Youth in Krakow, but Rails Girls is a series of workshops, which have been organized around the world (e.g. at Helsinki, Shanghai, Singapore, Tallinn, Berlin, Warsaw) since 2010. The goal is to open up technology and make it more approachable for girls and women. It was the third edition of the event in Kraków.

Lunar Logic has been a partner of Rails Girls Krakow since the beginning. We help with pleasure and when Ania Migas (who works at Lunar, but also is one of the RG organizers) asked who would like to be a coach in the 2014 edition 8 people were interested. It was an amazing event. Why? Below you can view opinions about the workshop from organizers, coaches and also from the coachees perspective:

Ania (WebMuses member & Rails Girls organizer)

WebMuses (myself included) organized Rails Girls for the third time. This year’s edition was different – we decided to dedicate the event to young girls (13-19 years old) who haven’t yet decided what to do with their lives – and it was a great idea! The girls were full of energy and enthusiasm. At least half of the participants of Rails Girls Youth declared that they would love to become programmers in the future. I can’t wait to see that!

From the organizational point of view, the greatest challenge was in choosing the girls, who all should have a chance to attend our event. One of organizers, Przemek, made a simple app that helped us to mark all the entries. Picking applicants wasn’t a problem of organization any more.

Lunar Logic - cakes
Cakes for girls :)

The other thing was finding sponsors, who would like to support our event. The point was to convince companies, that these girls are the future and that, soon or later, some of them would would start looking for the IT-related jobs. Somehow I convinced Lunar Logic to become a sponsor and they helped us buy lunch and tons of delicious cakes for the merry group of people attending the event. ;)

Hopefully, it won’t be the last Rails Girls edition in Krakow. And probably not the last one dedicated to younger girls. Everything went as expected, but we were super tired by the end of the day. Taking care of almost 70 people and making sure that everyone is happy is not an easy task. Tiredness didn’t prevent us from attending the after party which was linked with the WebMuses b-day party though. :)

Coaches point of view:

Hania

This was the fourth time I coached at Rails Girls and was really curious how it will be to work with such young girls. Actually, I was little bit scared too.

But the girls were wonderful, eager to learn new things, centered when needed, and they were catching on really quickly. It was a real pleasure to work with them. They were also more persistent than older girls from previous editions, maybe because they still have their “learning mode” activated :)

It was an excellent idea to organize this event for a younger audience and I hope WebMuses will continue their great work on both motivating and inspiring people.

Tomek

The event was well prepared, all the organizers and coaches took their responsibilities seriously. However all that we, as coaches, received was a guide in how create simple Rails applications and sets of tips from friends who were coaches during previous editions of Rails Girls. We needed to figure out the rest by ourselves.

The girls were mostly middle and secondary high school level students who are used to learning in quite a formal way. This is completely different from how workshops and meetups for programmers usually work.

I think the most important challenge was to convince them that I’m not a teacher but just a colleague who knows how to use this strange Rails thing. This significantly improved the communication and added lots of fun and humour throughout the day we spent together.

I was totally exhausted after the event ended, but satisfied to see that the girls learnt the basics of HTML, CSS and Ruby on Rails. They left with ideas for creating applications and making plans about what to study next.

Maciek

I was very impressed by how well organized the event was. The Rails Girls were working on it since January and everything was prepared down to the last detail. I’m also astonished that so many teenage girls were interested in programming and web development. They made an effort to wake up early in the morning and come to Kraków from far away. All of them were eager to learn. This workshop was a real stereotype breaker.

Grzesiek

I participated in last year’s Rails Girls as an observer where I was helping girls and coaches with their technical issues. The idea of programming workshops seemed so cool that I decided to take part again. This time as a coach and a member of WebMuses.

Grzesiek at Rails Girls Youth
Yeah, the event was not bad.

My group turned out to be one of the youngest. It made me really anxious that my teaching skills wouldn’t suffice and I’d bore them to death. Fortunately, girls were great and understanding. They kept asking questions and pushing for more knowledge. It was really amazing to see their engagement in learning how to code. I really wish I could show you what we built during those 10 hours of hard work (we didn’t manage to deploy it to web :( ).

Just after lunch I ran a small exercise for the girls – Bentobox. The idea was to make them more comfortable reading technical texts and recognize popular technologies. In the end they were presented with a list of 10 tools, libraries and concepts (like PHP, Django, SaaS, jQuery, nginx). The goal was to figure out what each item was.

After a long day of work, all the coaches and organizers received lots of love from the attendees. Many girls mentioned how cool coding, the programming community, and finally, the workshop, are. We heard many statements about becoming a programmer. This was very inspiring and made me feel like I accomplished something big.

Coachees point of view:

Weronika (Paulina’s sister, 15 years old) 

Weronika Materna at Rails Girls Youth
Weronika Materna with her coach and colleague.

An open, friendly atmosphere and a perfect communication with the coach – it’s my one-phrase description of the Rails Girls workshop. Firstly, I had been stressed and was full of doubts, but finally I closed the workshop with a lot of positive energy and openness to the new ideas. I’m happy because of that as my first contact with HTML, CSS and Ruby on Rails was painless and with: such a great atmosphere, crazy positive people, comfortable working environment and… of course – muffins! :D

I strongly recommend Rails Girls workshops everyone, who (such as myself earlier) don’t know how get started.

Julka (Lucek’s daughter, 11 years old)

Julka Odziewa at Rails Girls Youth
Julka was the youngest attendee.

When registering for this year’s Rails Girls, I was extremely curious, and a bit scared too – is this ‘coding thing’ as complicated as it seems to be? Good for me that it wasn’t the first time I had contact with this kind of workshop – I accompanied my mum when she was learning how to code at last year’s RG. But how is it to actually be an active participant? It turned out that it’s a totally different experience – much more interesting! At first everything looked like a Chinese language class to me – I had to deal with these parts of my computer that I have never heard of, not to mention seeing them ever before. But thanks to the great coaches, minute after minute everything was starting to become more clear for me and all the ‘wizardry’ became less mystical than what I had thought before. However, there’s one thing I did not like about Rails Girls – that it ended so quickly :( I can’t wait for the next workshop that I’ll be able to take part in. Thanks for everything and hope to see you again soon!