Software Engineer – UX and Apps
Elliot Nash on November 27, 2024
INTRO
If you are an amazing software engineer, want to make great money working at an amazing company with amazing people, then keep reading!
BACKGROUND
In 2015 Slicedbread launched an innovative technology application called Sharedo. Described as a work and case management product, the platform helps organisations define, execute, and manage work such as legal cases, exploration, project development, property management, help desk, ticketing systems and much more.
Since its introduction, we have successfully delivered Sharedo across many verticals – FTSE100 energy companies, media and telecoms companies, and most significantly we have enjoyed considerable success in the legal market, having now deployed sharedo into a number of the UK’s largest law firms.
In September 2018, we closed a round of series-A funding led by Sussex Place Ventures, the venture capital arm of the London Business School. Although the company has always been a profitable, self-funding company, this investment enabled us to accelerate our vision to make sharedo the de-facto work planning and management platform.
As a result, having maintained positive growth, and as we continue to grow rapidly, we are looking to expand our talented and experienced software engineering teams.
THE PEOPLE
Everyone says this, but the people at Sharedo truly are our biggest asset. Why?
Every individual in the team is unique, they have a diverse range of skills and specialisms, but the one thing they all have in common is a desire to learn. Our industry is constantly evolving and let’s face it, it’s impossible to be an “expert” in everything. Our people learn from each other daily, there’s a desire to not only share knowledge, but to absorb it too. Every day, we learn from each other – and not just in a top-down senior to junior fashion – an engineer with 25 years’ experience will regularly learn new things from someone with 2.
For that to flourish the culture needs to enable it, and culture isn’t a tag line dictated from on-high, designed to attract new hires, it’s what happens organically around the people involved. You won’t find elitist types, cargo culters, or anyone suffering from the Dunning Kruger effect – we firmly believe that no-one can possibly know everything, and that there’s no such thing as a silly question. We have standards, sure, we have opinions, true – but they are weakly held, and everyone is open to new thinking.
The team is made up of various levels of expertise and experience – we have some with 25+ years’ experience, some with 10, and a handful of relatively new entrants to the world of engineering. We have Microsoft MVPs, we have repo owners of some of the most popular .net open-source projects on GitHub, we have people that have built massive systems, small systems, real time systems, wizards who can tune SQL queries to bend its optimiser to their will, experts in clean coding practices, process geeks who can Kanban their way to the moon – anything you can imagine in the tech space, we’ve got it covered.
Aside from the tech and learning culture though – there’s a wild range of interests and outside specialisms. We’ve got cyclists, runners, skiers, snowboarders, video game players, movie fans, musicians, D&D players, Rubik’s cubers, podcasters, streamers, and even a resident PhD in astrophysics.
We’re geeks, we’re proud to be geeks, and all this is what makes our team special.
THE TECH
There’s a range of tech in play within Sharedo. We’re not afraid to use the right piece of tech for the right purpose and we don’t have any affinities beyond our core tech stack which is .Net (C#), HTML, CSS, and JavaScript plus SQL Server.
Back end wise, beyond that core stack we use NancyFx as the API framework, elastic search as a read store for fast dynamic searching of data, which we project into when changes are made to the transactional data (in SQL server) using an eventing system (Event Store), which is used to trigger and control customer specific business logic and workflow in response to things happening on the app, use Seq for structured logging and analytics, power bi for reporting and natural language query.
Front end is largely vanilla JS, HTML, and CSS for the main application, plus vue.js for our various different flavours of apps.
In the coming year we intend to continue with “modernising” work to extract components of the system and upgrade them to .net 8+, to refresh our UX stack with svelte.js and we’re looking to potentially containerise parts of the system. In addition there’s a good chance we may project to other read stores for other purposes – such as neo4j to drive some of our more complex graph-based queries, we have intent to move all of our telemetry and diagnostics data to influxDb – we’re not afraid to seek out the right tech for the right purpose and, unlike a lot of .net engineering teams, the answer to a problem isn’t always to “use Microsoft’s X”.
Internally there’s a fair bit going on too – we’re quite focussed on good engineering practices and writing clean code – good OOP design is a must, especially in such a large code base, understanding approaches to problems and having a good patterns vocabulary is also important, but again, not as a bible, but as a general understanding of certain techniques that can be applied to approach different kinds of problems.
We obsess over performance – for instance our primary data store is SQL server, but we don’t use entity framework. Not because it’s bad – it’s perfect for a lot of scenarios – but because we need to have total control over some of the queries we write so we can optimise queries by hand. Yes, we hand-craft SQL queries. We do also leverage micro-ORMs though to give us C# objects out of those queries – our preference is currently PetaPoco.
In terms of hosting the SaaS platform, we run everything on Azure presently – we use pulumi to define infrastructure in C# code and try to automate as much as we possibly can, driving it all through Azure DevOps – we’re not perfect here, but we’re working on it.
There’s always something new and interesting to get stuck into when working on Sharedo.
WHATS THE ROLE
The role is within the core product engineering team where all the engineers are full-stack and multi-skilled, capable of working across a range of problems, but naturally, most have a specialisation or focus area. This role focuses on two key areas – the user experience (UX) and “Apps”.
From the UX perspective, you will help us expand and enhance the user experience of our platform – mostly focussing on the UI, how it looks, feels, and how usable it is, but also on optimising journeys for users at a deeper level.
This will include all manner of UX optimisations from micro-detail changes to affect a user’s perception of speed, through to complete facelifts of the platform UI. You’ll work on different features across the entire application, across the frameworks and tooling we provide and work with technical product managers to provide resources like documentation, samples and reference materials that describe these frameworks and the design language that underpins them.
It should be noted that, whilst you’ll need a good eye, you don’t necessarily need to be a designer – the role is more engineering focussed – rather than understanding colour theory, designing gradients, border styles, button styles, understanding layout, the role is more geared towards writing the code – js/css/html – to achieve those things rather than having to design things yourself – the product manager and our in-house creative team can do that part. If of course you’re an engineer with a creative side as well – even better!
On the Apps side, we have a multitude of apps, both existing and planned, that complement the main interface including:
- Mobile applications
- And an open-source mobile framework we maintain dedicated to sharedo “apps”.
- We don’t offer a one size fits all app for sharedo – it’s too big.
- Typically, these are client specific
- And usually, they are focussed on a specific workflow or activity (hence clients will generally have more than one)
- Word add-ins
- Apps that allow document template authors to create templates directly in word.
- Apps that allow document authors to leverage content and data from sharedo in their documents.
- Outlook add-ins
- Apps that allow users to work on sharedo directly from within outlook – filing documents, emails, referencing cases, etc.
- Teams add-in
- New app planned to bring sharedo into the teams environment
- + Many more
On both fronts you will be working closely with the Technical Product Manager (TPM) for UX and Apps. TPMs own the roadmap for their area of the product (under guidance from an overall product steering group), but the role will involve feeding into this product vision and direction, assisting the TPM with formulating, designing, and ultimately owning and developing new features and new apps for what is a very large and complex platform.
Aside from features and apps to deliver today, you’ll contribute to the strategic direction for UX/Apps too. For instance, our main UI is currently created with pure JS/HTML/CSS and doesn’t leverage any frameworks such as react, angular or vue (though the apps frameworks do use vue). We have strategic ambition to extend this out to allow use of svelte.js, so our customers can leverage a more modern toolchain, whilst still maintaining complete compatibility to drop to the base level of vanilla JS.
WHO ARE YOU?
Clearly, we’re looking for a full-stack senior software engineer to join the team and the critical skills are HTML, CSS, JavaScript, C#, and SQL.
For this role in particular, we’d be looking for a strong focus on the front-end technology (HTML/CSS/JavaScript), but all our engineering roles are full stack, so relatively detailed knowledge of C# and SQL are also a must. If you have experience developing modern O365 addins, that would gain significant brownie points.
You’ll be strong on HTML constructs and CSS stuff, but we don’t expect you to be a designer. HTML5 and CSS3 are our standard and we use LESS to build most of it. You’ll understand slightly newer things like flexbox, CSS grid, and if we ask you about “position: sticky”, you won’t think we’re talking about something nasty.
Your JavaScript will be extremely strong – both at a pure, vanilla JS level and with frameworks, especially vue.js and knockout.js. Exposure to svelte.js would also be beneficial, but to be fair, any framework exposure you bring would also be relevant, so long as you have that pure JS grounding as you’ll be working with and extending our own UI framework for the main core platform, whilst using frameworks on the apps side.
On the fundamental JS front, you’ll understand problems with the scope of “this”, have good working knowledge of common JS patterns and practices like the revealing object pattern, understand what prototypical inheritance is and how it differs from things like classes in C# or Java.
On the server side, you’ll have been using C# for a good while and have a good understanding of how it works. If you can tell us some detail about how it actually works as well, the fundamentals of the CLR, you’d get extra brownie points. If you grok memory management, understand how to properly manage un-managed resources, understand async/await, and things like that, you’ll be on solid footing here.
Ideally, you’ll also be strong in SQL – you’ll know how to write a decent SQL statement, what a left join is compared to an inner join and other basics, but you’ll also ideally understand more advanced concepts and have worked at scale. If you know what a covering index is, what a logical read represents, what an execution plan is, how to read it and importantly, how to optimise a query around what that plan tells you – again, more brownie points. SQL is an important part of our platform, so the more you know about it, the better.
Everything else like elastic, event store, pulumi or any of the other buzzwords in the tech section above earns you bonus points but isn’t mandatory to get the job. In fact, the more you can tell us about other random tech you’ve been exposed to, for what purpose, and its pros/cons the better.
If you contribute to open source, send us your GitHub profile, but don’t be afraid if you don’t have one – you’ll note we haven’t used the “passion” word anywhere in this job spec – amazing engineers can be amazing engineers for their job and lead completely separate lives too! You don’t have to live and breathe code 24×7, which is what is usually meant by “passionate” in our industry.
Lastly, the experience and education question.
Frankly, we’re ambivalent. A great engineer won’t necessarily have an MSc in computer science – great if you’ve got one, but a lack of formal qualification shouldn’t put you off applying. Similarly, the number of years’ experience is irrelevant compared to the variety of that experience. Doing the same thing for 10 years is less valuable than 2 years across a broad range of projects.
Rather, you’ve been around the block, you’ve worked on solutions at scale both in terms of user concurrency and data size/volume, you’ve perhaps worked with or even led other engineers in delivering solutions, you’ve worked with distributed systems, monoliths, majestic monoliths, or maybe even micro-services and understand the pros and cons of each – whatever you’ve done, you’ve owned the technical design and development of all or part of a solution at least a couple of times.
THE BENEFITS
- Flexible hours and remote work (though we like to get together from time to time!)
- 25 days holiday + bank holidays
- Private Healthcare (BUPA)
- Pension scheme (Aegon)
- Life Insurance & Critical Illness cover
- Your choice of IT equipment to work from home effectively
- Professional development and growth options
THE HIRING PROCESS
- You get sent this job ad, you read it and can’t wait to apply.
- We invite you to a Teams call with the Technical Product Manager who will run through the basics with you.
- We invite you back for a more detailed technical interview (usually with the CTO and Director of Engineering) and introduce you to the founders.
- We make you an offer.
- You accept.
- You tell everyone how great your new job is.
- Your friends come and join you and you earn a sweet referral bonus.
The main interview
Interviews are always quite intense and stressful experiences (we’re probably as nervous as you!), but we don’t want you to worry or stress about it. Come along and just expect to talk about what you’ve done and the things you already know about.
You’ll be asked questions that go deeper and deeper into your experience and knowledge about the tech we work with daily, so that we can determine the breadth and depth of what you know, and what unique skills you might bring to the team, but it’s important to understand that “I don’t know” is a perfectly acceptable answer.
During the course of that interview, remember that you’re also interviewing us – so feel free to come armed with deeply probing questions of your own to work out if we’re a good fit for you as well!
Advice
Don’t dress up, don’t bother studying algorithms or “top 10 engineering interview questions”, don’t dust off the elegant approach you came up with for FizzBuzz – just come along, relax, have a chat and be yourself. We’re quite friendly and certainly never, ever, bite.
Package and work style
You would be based at our offices in lovely Alderley Edge in Cheshire, but we offer a flexible working policy. Flex the times you start/finish as needed, work from the office or at home – whatever suits you. The only caveat is the “flexible working” isn’t fully remote though – we are a collaborative bunch and remote tech only gets us so far – we typically like to gather in groups at least once a week, at the office, so we can whiteboard ideas, pair face to face, and, frankly, we just like to see you occasionally to say Hi in person.
Given Sharedo is such a large platform, and there is a learning curve, you should plan for your first month to be able to visit the office at least 3 days per week so we can onboard you and get you up to speed successfully.
Package wise, we offer an employer pension, BUPA medical cover (with the option to extend to your family), life insurance, critical illness cover, and of course a salary. The salary range is negotiable depending on experience and skill set.
WORK STYLE
You would be based at our offices in lovely Alderley Edge in Cheshire, but we offer a flexible working policy. Flex the times you start/finish as needed, work from the office or at home – whatever suits you. The only caveat is that we would love to meet up face-to-face every now and then – if only just to say “hi” in-person and break bread together.
What are you waiting for? Apply already.
If you’ve gotten this far and are still thinking “this is me!” then please drop us a line – Sharedo is the kind of place that amazing people like you deserve to work!