What I learnt at youDevise
Wednesday 31 October 2012 at 16:31 GMT
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 Atom.
Maybe you have something to say. You can email me or toot at me. I love feedback. I also love gigantic compliments, so please send those too.
Please feel free to share this on any and all good social networks.
This article is licensed under the Creative Commons Attribution 4.0 International Public License (CC-BY-4.0).