We want to make work and study more efficient and enjoyable, by providing the best digital paper solution possible. We plan to be the go-to tool for all forms of notes. Our digital paper and learning ecosystem inspires anyone to take notes, share what they know, collaborate with others, and learn as a community
Our Values:
Dream big
Be visionary, strategic, and open to innovation
Build great things
Work in service of our users, always improving and pushing higher
Take ownership
Take responsibility with bold decision-making and bias for action
Win like a sports team
Be trusting and collaborative while empowering others
Learn and grow fast
Never stop learning and iterate fast
Share our passion
Share ideas and practice enthusiasm and joy
Be user obsessed
Empathetic, inquisitive, practical
About the team:
Goodnotes is on a mission to revolutionise the in-classroom learning experience by creating an interactive environment, where students and teachers can connect through our product.
As Lead Engineer you will be part of building a new product from scratch through partnering with external educators and colleagues.
You will be part of a distributed team across Europe and Asia, with shared time for collaborative activities such as planning, retros, stand-ups, and brainstorming sessions.
You will use a broad and modern tech stack with:
Programming Language: The vast majority of our code is written in Swift
Concurrency: We have a large, old, but modular codebase. We use modern Swift Concurrency as much as possible as we gradually move away from RxSwift
UI code: As much new UI code as possible is in SwiftUI. We fall back to UIKit when needed and re-use the majority of it on macOS using Catalyst
Cross-platform: We re-use our core packages on cross-platform using SwiftWasm, UI for other platforms is written using React or their respective native APIs
Dependencies: We exclusively use Swift Package Manager and frequently make new local packages
Source control and builds: We have a mono-repo and use GitHub and Pull Requests. We kick off builds using a Slack bot
Continuous Integration: We use CircleCI which means our configuration is checked in with our code. We have unit tests for all of our modules which run on every branch. UI tests are run daily and before release
Release cadence: We QA and release on a weekly schedule
This is the role for you, if you're excited to work on the things listed below:
Build mission-critical services used by tens of millions of users.
Lead in the architecture and design of scalable, easily maintainable solutions to allow development of exciting features and support greater users
You enjoy coding and want to remain hands-on
Play a key role in shaping technical roadmaps
Prioritise features and improvements based on business objectives and technical feasibility.
Conduct regular design and code reviews to ensure adherence to best practices and maintain code quality.
Drive continuous improvement of engineering standards, tooling, and processes.
Identify areas for optimisation and implement solutions to enhance team productivity and code quality.
Share your knowledge and experience with the rest of the team
The skills you will need to be successful in the above:
Expertise in Swift programming with a strong knowledge of design patterns, architectural principles, and best practices.
Strong understanding of computer science fundamentals, you enjoy solving algo and data structure puzzles
Proven track record of solving complex technical problems and making sound technical decisions.
Experience in the prioritisation, delegation, planning, and execution of tasks.
Leverage data to understand our users and our product in-depth, identify areas of opportunity and execute projects to drive user growth and engagement
Experience in driving cross-functional teams and collaborating effectively with product managers, designers, and other stakeholders.
A growth mindset with a commitment to continuous learning and improvement.
Big plus if you have experience cross-compiling codebase on different mobile platforms
Even if you don't meet all the criteria listed above, we would still love to hear from you! Goodnotes places a lot of value on learning and development and will support your growth if needed. Candidates with less experience will be considered as Senior iOS Engineers.
The interview process:
Introduction: The Talent Team want to hear more about your background, what you are looking for, and why you'd like to join Goodnotes.
Technical screening: A timed online coding skills test.
Live coding & Technical interview: A live coding call with one of our engineers. This is where you get to see what it would be like working at Goodnotes as well as the chance to ask any engineering questions you may have
Hiring Manager interview: A call with your hiring manager. This is the person who will be managing you day to day, working on your growth and development with you as well as support you throughout your career at Goodnotes.
Passion presentation: A short presentation on something you are passionate about or are proud of
What's in it for you:
Remote friendly
Flexible working hours and location
Medical insurance for you and your dependents
Great annual leave allowance
Meaningful equity in a profitable tech-startup
Budget for things like noise cancelling headphones, setting up your home office, personal development, professional training, and health & wellness
Sponsored visits to our Hong Kong or London office every 2 years
Company wide annual offsite
Fantastic maternity/paternity packages and allowances