Building awesome things, awesomely

I’m a big believer in doing things properly. Not hacking things together and regretting it later, whether it be software development, taking photos or messing around with cars, three things of which I do a lot of.

So a few months ago, I did a presentation at work in our weekly “Beers and Ideas” session, and I thought I’d share it online too, though with a few small changes so it makes sense here, but it’s still generally about the software side of things.

{<1>} This is one of my favourite quotes. Explains my approach perfectly. Just because you can’t see it, doesn’t mean that it doesn’t matter. And if you get into the mind set that it’s ok to do shit work in hidden places, it’ll quickly expand out into your wider solution.

{<2>} As much as we’d all like to believe that awesome things happen overnight, they don’t. They take months, if not years to get somewhere. And it’s taken someone an enormous amount of energy to get there too. If you want to achieve something awesome, you can’t let anything stop you.

{<3>} Do you work in a company that restricts what and when you can do things? Or maybe they force you to work in a way that doesn’t work for you? You quickly become bored/frustrated and loose your drive for what you’re trying to achieve. To build awesome stuff, you need the freedom of time and space to properly think through what you’re trying to achieve.

{<4>} Have an idea? Let it be known. Just because something made sense when it was implemented doesn’t necessarily mean that it makes sense now. If someone can’t give you a reason for why things are done like they are, it’s probably time to re-evaluate it.

{<5>} Mistakes happen everyday. Everybody makes them. Instead of being ashamed of them, or worse, not trying in the first place, do it. Who knows, it might work? If not, you’ll learn something. And know how to approach it differently next time.

{<6>} Tools are what software developers deal with day in, day out. We have some we love, we have some we hate. But as a whole, they should stay out of the way as much as possible so you can get your work done as efficiently as possible. If they get in the way or hold you up, they’re probably not the right tool for the job.

{<7>} Just because you like using your mega-ergonomic keyboard with space buttons, doesn’t mean that the next person. Give your people choice. Let them choose what they want to work with. Personally, I’m much more productive working on a Mac with Parallels for Windows dev. So being forced to use a Windows machine makes me sad. But the person next to me could very well be the opposite. And that’s cool.

{<8>} The IT industry moves fast. You need to keep up. Or your staff will be left behind and your processes will be left behind. And you really don’t want to be that guy still running XP these days. Be constantly evaluating what you’re using.

{<9>} “Don’t just a book by it’s cover” - how many times have you heard that? And as much as you want to believe it, people do. Life would be too hard otherwise. Don’t like a major part of your new product? Fix it before it goes live. You have one chance to impress someone. Do it well.

{<10>} If you’re working as a programming ninja and you don’t love IT and stay up to date with the latest news and things, you’re in the wrong job. Programming is an incredibly frustratingly awesome job. It will drive you crazy, but also make you feel on top of the world.

{<11>} Hang around passionate people - people that are driven by something, it’s amazing. And they will rub some of that passion off onto you. If you’re absolutely passionate about something, people will listen to you. They’ll believe in your vision. And will be more willing to take a gamble with you.

{<12>} Success is awesome, but you will learn far more when something didn’t quite go right, as long as you can accept that it didn’t. After a failure, take the time to figure out why it went wrong, then move on. There’s no point in dwelling over the past.