What I learnt at youDevise
Today is my last day at youDevise (or TIM Group, as it’s now known). I’ve loved it here, but it’s time to move on and do something a little different. With that in mind, I made a list of all the things I’ve learnt in my two years here. Here it is:
- How to pair
- Ping-pong
- Driver/navigator
- Board and ball
- What a hedge fund is
- What a hedge fund definitely is not
- How an ORM works
- Dependency inversion
- Dependency injection
- Unit testing
- Integration testing
- Browser testing
- Acceptance testing
- Database testing
- Why mocking is actually useful
- Reflection voodoo of the highest order
- The builder pattern
- Build environments
- Continuous integration
- Pipelined builds
- Deployment
- Beer is delicious
- Why you shouldn’t think “Engine!” when doing calculations
- Why you should never aim to build an “engine”
- Why frameworks suck
- Why home-rolled frameworks can suck even more
- Why home-rolled frameworks can be excellent
- That
<table>
s aren’t always evil - Why you shouldn’t build your own table generators
- The importance of a decent type system
- How wrapping types in Java makes everything harder
- How making everything strings makes everything even worse
- That waking up in the morning is harder than it looks
- Which conferences I should check out
- Why I should go to a conference
- How to learn at conferences
- How easy it is to try and fix everything at once
- The importance of committing regularly
- The power of the revert command
- How hard it is to make yourself revert
- How gorgeous JavaScript can be
- How terrifying JavaScript can be
- That I really like having a more static type system
- Why a static type system sucks for experimentation
- Trade ideas
- That trade ideas aren’t trades
- That if you have a great idea, you should totally do that
- The importance of a domain model
- Why your domain depends on who you’re talking to
- Why you shouldn’t use your database model as your domain model
- Why ORMs suck
- How to use an ORM in a way that doesn’t eat your database
- Why you should just avoid the problem altogether
- Why frameworks REALLY suck
- Why reinventing the wheel never pays off in production
- How reinventing the wheel always pays off in experimentation
- That when Steve Freeman tells you it’s a spike, it’s a spike
- How to host a developer event
- How to run a developer event
- How to sound enthusiastic even when you’re exhausted
- How to ignore the one muppet at the back
- The importance of milling about and chatting
- How to write ten lines of code when one functional line would do just fine
- Why functional programming isn’t always the best solution
- How to write terrifying functional code in Java
- Why Java 8 will solve all my problems
- Exactly how hard it is to understand monads
- Exactly how hard it is to explain monads
- Why having free sweets at work is a terrible idea
- Why having free fruit at work is an excellent idea
- The importance of a morning coffee run
- That you should know why you’re breaking the rules
- Why Selenium is broken
- How WebDriver is better
- IE6 quirks I never knew existed
- That IE8 is no better
- How hard it is to get a stable cluster of test nodes
- The different concerns that infra have
- How awful Puppet is
- How amazing Puppet is
- That idiomatic Ruby code can still be terrible
- That idiomatic Java code is almost always terrible
- Beer is so goddamn delicious
- That god objects can manifest themselves in all manner of forms
- That you shouldn’t try and rewrite them
- That phasing out works pretty well
- That you should fucking COMMIT or REVERT
There we are. Almost a hundred things I learnt. I came up with that list in fifteen minutes on the train last week. I hope that after a couple of years at my next job at Palantir, I can do even better than that.
If you enjoyed this post, you can subscribe to this blog using RSS. I personally use Feedly; you can subscribe here.
Maybe you have something to say. You can comment below, email me, or toot at me. I love feedback. I also love gigantic compliments, so please send those too.