Software Developer

We’re looking for developers to join our software team full-time. We’re not trying to hire a rock-star, we’re trying to build a great team – which means finding people who work well together, who share a passion for technology and software development, and whose skills and experience complement one another.

Here’s our wish-list: we don’t expect you to excel in all of them, if you are confident in a couple of them and have aspirations towards the others, that’s fine.

  • Proven experience delivering interactive web applications. Working alone or as part of a team, you’ve developed, released and maintained data-driven web applications. Ideally in C#/.NET, but if you’ve done MVC, repository patterns, IoC, mocking and test-driven development in another modern OO language such as Java or Ruby, and you’re looking to move to .NET, then we’d still love to hear from you.
  • You understand what makes software great. From database optimization to SOLID principles to TDD to user experience and accessibility, you understand how to deliver systems that are great to use, great to maintain and great to extend.
  • You’ve worked on successful, large-scale software systems. You’ve built interfaces around legacy code and integrated them with green-field projects built using the latest platforms and tools. You’ve implemented patterns like message-passing and CQRS, and understand how they contribute to the stability of complex systems. You’ve built performance counters and diagnostics into your software, so your systems can give the operations team the information they need to support and maintain your code without having to call the developers in every time they have a problem.
  • You’ve worked on agile projects, and you appreciate the value of rapid iterations. You’re familiar with Scrum, you’ve taken part in sprint planning meetings and retrospectives, and you know what you can expect from the scrum master and product owner on a project – and what they can expect from you in return.
  • You know how to keep your projects clean and well-structured. You understand the importance of naming. When the answers are always “it depends”, you know what it depends on and you can evaluate the options, make decisions and keep things moving. You know why the arguments to a search function should always be called “needle” and “haystack”, and that there are times when you need to fire up Visio and draw something properly, just as there are times when a photo of the whiteboard will do just as well.

Skills & Requirements

Our existing codebase is primarily .NET/C#. We have systems running ServiceStack, DotNetOpenAuth, EasyNetQ, NServiceBus, WebAPI, ASP.NET MVC, NHibernate, Linq-to-SQL and other open-source .NET frameworks. Our front-end is HTML, CSS and jQuery; there’s some classic ASP code written in server-side JScript, and our back-end data store is Microsoft SQL Server.

Sometimes, we’re building new stuff – which, these days, is .NET 4, MVC, Razor, NancyFX, Dapper and RabbitMQ. Sometimes, we’ll be building new features on top of existing code – in which case familiarity with .NET, NHibernate, SQL and/or classic ASP is obviously an advantage. When it comes to integrating the new stuff with the old stuff, we use clean interfaces and APIs around our legacy systems, to make sure things keep evolving away from monolithic web applications towards a decoupled, scalable service-oriented platform.

Again, we have a “wish list” – but we don’t expect you to tick every box on it; these are skills we need as a team, and we know we’d be lucky to find them all in one person…

  • NET code – from DataReaders to dynamics. You know your way around ASP.NET MVC, Linq, NServiceBus, IoC containers, Moq and NUnit. You use tools like Resharper, Reflector, TeamCity, and SQL Compare. You understand testing. Unit tests, integration tests, acceptance tests, A/B tests. You know when they’re useful, and what they can teach you.
  • JavaScript – and not just the good parts. jQuery, prototypes, timeouts and closures. You know your AJAX from your JSON and your with() from your eval(). You’ve ideally had some experience with frameworks like Angular, Knockout and Backbone, and know a bit about building single-page applications.
  • The web. You’re fluent in HTML5 and CSS3. You understand HTTP; you know your GET from your POST, and how to use techniques like HTTP caching to deliver responsive front-end code.
  • PowerShell, T-SQL or Python – they’re not your tools of choice, but you know sometimes they’re still the best tool for the job. You’ve experimented with systems like NodeJS, Varnish or Memcached, and have some ideas about how they might fit into a predominantly Windows-based hosting environment. When someone says a server’s running slowly, you can think of a dozen things to try before turning it off and on again.
  • You’re comfortable with devops, configuration management and managing infrastructure as code. You’ve looked at Chef, Docker, Puppet and/or Vagrant, or maybe used CloudFormation to set up Amazon EC2 servers.
  • You know who’s who and what’s what in the world of modern software development. Maybe you’re on Stack Overflow, or Github, or Twitter. Maybe you go to events like DDD or NDC or BuildStuff, or you’re part of a local user group. You know what Elm and Elixir are, even if you’ve never used them.

Interested? Send your CV and a cover letter to jobs@spotlight.com

This is a full-time position, working Monday to Friday at our offices in Leicester Square, London WC2H 7RJ