Senior Software Engineer (Python, Remote)
Dashly is looking for an independent Senior Software Engineer who enjoys the informal, fast-paced startup environment with lots of freedom and responsibility, and with the following core skill set:
Python 3 (our main programming language)
Microservice architectures (and the challenges it brings to the table)
Cloud-native development (Google Cloud Platform)
Solid English language skills (C1, or B2 at the very least)
Got you interested? Read more below:
What is Dashly?
Our mission is to give homeowners across the UK a better deal on their mortgage, saving them thousands of pounds each and every year.
We’ve got an ambitious vision to create a suite of products that together will reshape the mortgage market for the good of all – borrowers, advisors, brokers and lenders. To do that, we’ve built a powerful mortgage search engine, data platform, together with web and mobile apps. Now it’s time for us to upgrade our platform to scale in line with our growth rate, and utilise our gained experience to design new data solutions that will help lenders to offer new, more efficient ways to design and distribute products. On top of that, we’re building tools that let advisors truly manage their customer relationships and empower them to improve the service they can offer their clients.
Who are we looking for?
We're looking for experienced software engineers with a passion for technology, software, elegant solutions, and clean code. We don't want you to just write code for us, we want you to be part of our feature development pipeline, and we want you to be involved (at least in some capacity) in all of its stages: analysis, design implementation, testing, deployment and documentation.
I’d be awesome if you had experience with all of the following, but we’re happy to work with you and teach you the things you need to know:
Programming
Python
Yup, that’s our main programming language, so this kinda goes without saying
At least few years of experience with the language is needed
Databases
Relational databases and SQL (PostgreSQL dialect)
NoSQL databases
When to use which, pros and cons, and all that
APIs
Best practices for HTTP APIs
Best practices for gRPC APIs
Basic understanding of Protobuf
If you never worked with gRPC and Protobuf, don’t sweat too much about it, it’s easier than it sounds
Understanding of software design patterns
Not just when to use them, but also where and when NOT to use them!
Development of extensible and maintainable solutions
But, must be said, we’re definitely not asking for overengineered, complex solutions!
Functional programming paradigm
We’re NOT talking Haskell or Clojure type of programming
But, we prefer to use functions and modules rather than classes and objects
And we prefer composition and dependency injection to inheritance and class constructors
Attention to detail
Adherence to code conventions
Careful and thought-out naming of variables, functions and other structures
Good naming is super, super important for us, “data” variable name simply won’t fly, sorry
Emphasis on code readability
Your code will be written once, but read 10 - 100x over and over again afterwards, so we prefer to spend our energy on what we write to make the reading easy
Microservice architecture and design
You should have at least some idea of what the following terms represent, or at least be willing to learn what they mean:
Domain boundary
Event-driven architecture
Asynchronous programming
Publisher/subscriber messaging system
Data replication
Eventual consistency
Personality traits
Openness and solid communication skills
You'll be talking to people from the creative, product and business teams
We want your voice to be heard
Willingness to learn new technologies
Proactive approach, initiative, and ownership of responsibility for your work
Proficiency in speaking and writing in English, as you'll be using it on a daily basis
Check out our entire tech stack description below 👇
What do we offer in return?
You'll be joining a dynamic startup environment. What does that mean? Well, if you're looking for corporate development plans organised into several weeks worth of work, outlined in project plans set in stone, with strictly defined assignments, lots of rules and processes and a do-as-you-re-told, don't-ask-questions attitude on top it all, you won't find any of that with us, sorry.
Instead, we're looking for independent mavericks, exceptional individuals, explorers and contributors who enjoy freedom and creativity in their work, and are willing to take initiative and responsibility for their assignments, or even whole portions of our technology stack.
We don’t apply any “agile” frameworks, don’t follow scrum guidelines, don’t waste time on pointless meetings and ceremonies. Great engineering is all we need.
Our core engineering values are:
Leadership and guidance works better than management and rules
People are more important than processes
Failure is a learning experience
Always act in the company's best interest
These values guide our leadership, our managers and our engineers all alike. We're building a team of individuals that strives for a common goal. A team where initiative, innovation and great ideas are welcomed and rewarded, where failing while trying to innovate is considered a success as long as we learn from it, and the only thing that's not allowed is passively sitting around, waiting for someone to tell you what you should be doing.
Okay, that was about enough with the buzzwords, let’s get down to specifics:
Employment type?
Contract, Full-Time
We’ll agree on a fixed sum which you’ll be invoicing us each month, guaranteeing you a consistent and predictable income. We expect you to work roughly 40 hours a week for us in exchange.
The contract will have a 2-month termination period, guaranteeing stability and predictability for both parties.
Contractor? Does that mean no holidays?
Absolutely NOT!
You’ll get 25 days of paid annual leave, on us! We want you to take time off every now and then and recharge
Oh, cool, and what about hardware?
We’ll provide you with a laptop, either a Mac or a Dell, whichever you prefer.
What’s the work environment like at Dashly?
We’re building a relaxed, free working environment built on transparency, communication and mutual trust. As long as everyone’s happy with your performance and results, nobody is going to tell you what to do and how to organise your time.
Flexible working hours:
Mandatory late morning daily stand-up
Expected general availability during working hours, especially morning and noon
But you can take a break anytime as long as you let your team members know in advance
You can choose when do you begin and when do you end your work day
We work fully remotely, not required office visits and mandatory corporate fun parties
But you’re always welcome to stop by at any of our offices if you wish to
Office space available in Prague (Czechia) and London (United Kingdom) for team meetings and get-togethers.
What about the tech stack?
(1/2: This part is about the back end platform …)
Dashly is running a microservice architecture on Google Cloud Platform written in Python (3.11 as of time of writing this text.).
We’re utilising the following communication protocols:
HTTP REST API (front end to back end network calls)
gRPC & Protobuf (internal back end service-to-service network calls)
And the following cloud services for core functionality:
Kubernetes (GKE)
running in Autopilot mode with GCE Ingress controller
with Helm for container deployments
CloudSQL (PostgreSQL 15, relational database)
Cloud PubSub (for asynchronous messaging)
Cloud Storage (as the object/file store)
Cloud Endpoints (automated HTTP-to-GRPC network calls transformation)
Cloud Operations (Stackdriver, for logging & monitoring)
Cloud Build (for CI/CD pipelines)
(Google Cloud should probably reconsider their product naming scheme?)
And additional cloud services for day-to-day operations outside the back end platform:
BigQuery (data analysis, business intelligence)
Firebase (JWT authentication, static asset hosting)
Vertex AI (for all the OCR, data analysis, and LLM magic)
Plus from the “DevOps” point of view, we have:
Terraform for GCP infrastructure management,
and last, but not least, Docker for containerization.
(2/2: And this part is about our UI applications …)
And all of the above is accessed via a couple of front end applications:
Client portal (https://my.dashly.com) in Angular 17
Adviser portal (https://port.dashly.com) in Angular 17
ULC app (https://welcome.dashly.com) in React 18 (and Next 4)
Apps utilise the following tools:
ngrx for state management,
storybook for component development,
primeng as the main component library,
webpack for local development and build compilation,
and a whole bunch of other useful tools and libraries.
We don't expect you to know all of the languages and technologies we use on day 1. Being an experienced senior in Python is enough, we'll give you the time and support to learn to work with all of our technologies. Experience with gRPC and Google Cloud is a serious advantage, but we're happy to work with you and support you to bring you up to speed. Same applies for front end development, say you have experience with Redux, but never worked with ngrx, no sweat, you’ll get the opportunity to learn the ins and outs of it.
We're investing heavily in a redesign of our application architecture and code refactoring. On top of that, we're also improving the way we handle our data, our entire infrastructure, and overall architecture of our solutions and our developer experience. This is a very exciting time to be a part of Dashly, and we're expecting a lot of input and initiative from you in our endeavour.
What tools do you use?
When it comes to day-to-day operations and work organisation, our teams use Google Workspace (Gmail, Calendar, Drive, Meet, Keep, Tasks, etc), Slack for messaging, Github as our repository and Jira and Confluence for issue tracking and documentation. Oh, and we’re big on visual analysis, so we use Miro for boards and diagrams.
Plus developer tools like Intellij IDEA (PyCharm), Gitkraken, and Postman.
What else should I know?
Our business and product teams are located in the UK (GMT time zone), our creative, marketing and engineering teams are located in Central Europe (CET timezone, GMT+1).