Engineering at InterExchange: Lead Engineer's Perspective
Wednesday, May 4, 2016
Oh hai! I’ve been here almost spot on a year as I write this so I feel like I can give a good account of what it’s like to work at InterExchange.
I’m currently the Lead Engineer on our team. I’d like to think my main job is leading the technical direction of our various projects whilst taking my lead on organisational direction from our CTO and COO. It’s a really small team but we manage three core projects using various technologies so an overall lead position can be important. That being said I don’t have all the best ideas and I’d like to work with people that challenge me and make me better!
So first thing I’d like to say is I’ve not worked in a team that follows the Agile methodology as well as this team. By that I mean I think the sign of a team truly following this method is that problems hit halfway through a story are not an emergency and are nobody’s fault. Problematic stories don’t happen often here at all, but I like that it goes back to the drawing board - often involving my input along the way - and I just work on something else until it is considered ready for IPM again. The blame game is a gross spiral I’ve seen in a lot of places and pits QA/PMs against developers. This isn’t the case here. It’s not uncommon here to do QA with the PM and have the developer pick up their own errors. No blame, just make it as good as we can right now.
Further to this I call the PM on the work I’m doing at least once a day. They’re open to engineers at almost any time and realise we also want to make whatever we’re working on awesome. If I have a better idea - even after pre-IPM and IPM have groomed it - and we agree then we do it there and then. We have the test coverage to save my butt if I’m wrong and we get to a better solution for everybody.
We care about nomenclature! Domain Driven Design is important to us as we are primarily an organisation that should be able to help anybody in the world experience some other part of that world. We have over 40 years of various work flows and processes baked into parts of our software and services. As such I’ve found it really important that I’m consistently looking for a deeper understanding of what we do as an organisation to try and make the experience and language more uniform over time. I want our engineers, staff and users to be able to speak the same language and easily understand our process. Hopefully you’re passionate about this too!
I should include a downside or two here otherwise you’ll think I’m a shill. It’s a struggle to be honest and in my experience if you find something you’d like to improve then everybody’s door is open. I mean that.
With that said I personally want to keep improving our test coverage at the unit level. We have been pretty good at developing feature tests using RSpec or Cucumber but the unit testing could do with some time.
I also feel like we’ve leaned heavily on some tools and trends that would be nice to move away from for the future of our newer services. By this I mean I feel that Rails developers tend to lose their SQL chops - this might be true in other frameworks too - so we have a few inefficient data designs and a seeming overuse of common table expressions for search. To be honest they’re small technical issues and if you want to keep working on improving this stuff, if you’re an ElasticSearch - or other search tool - guru, or you just love query optimisation then come help us.
I think the take home for me is that I enjoy coming to work pretty much every day. This year the organisation had to tell me to take leave as I’d already accrued too much. It’s that easy to come to work each day. You’ll enjoy working with us, everybody is pretty cool and understanding and empathic. It’s a really nice place to work because we’re really nice people to work with.
See you soon? :)
Join InterExchange and help us improve the future of cultural exchange.