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