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
About the team:
- Build mission-critical services used by tens of millions of users.
- Architect and design scalable solutions that are easy to maintain to allow development of exciting features and support more users.
- Implement elegant solutions with clean code.
- Enable communication with the Mobile, Web frontend and QA teams
- Define and drive the completion of new initiatives and features by removing blockers for the team
- Continuously improve the development practices through research, automation, documentation and testing
- Share your knowledge and experience with the rest of the team
You'll need:
- Expertise in Swift programming. Knowledge of SwiftUI is advantageous
- Strong understanding of computer science fundamentals, you enjoy solving algo and data structure puzzles
- Excellent problem solving, communication, and storytelling skills
- A love of software craftsmanship
- Strong sense of the best tools for any task
- Shipped one or more non-trivial iOS apps on respective app stores
- 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.
- 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
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.
- Take-home Assignment: 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.
- Values interview – Meeting with members of the Goodnotes Team to answer questions relating to take ownership AND build great things
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 and allowances
Note: Employment is contingent upon successful completion of background checks, including verification of employment, education, and criminal records.
Preporuke se učitavaju...