Roles and responsibilities
- Design and implement well-tested and documented software in Web technologies or Flutter.
- Debug and fix issues encountered by your users
- Participate in our engineering process through code and architectural reviews
- Collaborate with community and colleagues on technical specifications
- Contribute to technical documentation to make it the best of its kind
- Seek improvements to engineering and operations practices
- Deploy and operate services developed by the team
- Contribute to the success of your product through technical advocacy
What we are looking for in you
- An exceptional academic track record from both high school and university
- Undergraduate degree in Computer Science or STEM, or a compelling narrative about your alternative path
- Drive and a track record of going above and beyond expectations
- Well-organised, self-starting and able to deliver to schedule
- Professional manner in interacting with colleagues, partners, and community
- Experience designing and writing high-quality Web technologies
- Experience with and passion for Typescript, React or Flutter
- An eye for accessibility and performance
- Professional written and spoken English
- Experience with Linux (Debian or Ubuntu preferred)
- Excellent interpersonal skills, curiosity, flexibility, and accountability
- Passion, thoughtfulness, and self-motivation
- Excellent communication and presentation skills
- Result-oriented, with a personal drive to meet commitments
- Ability to travel twice a year, for company events for up to two weeks each
Nice-to-have skills
- Experience with container tech such as LXD, Docker and Kubernetes
- Attention to detail concerning user-centric UI development
- REST API design, development and governance
- Performance engineering and security experience
Desired candidate profile
1. Core Skills
a) HTML (Hypertext Markup Language)
- The basic structure of web pages.
- Knowledge of semantic HTML for accessibility and SEO.
- Understanding HTML5 features (e.g., video/audio tags, form validation, canvas, and geolocation).
b) CSS (Cascading Style Sheets)
- Styling the visual presentation of web pages.
- Layout techniques: Flexbox, CSS Grid, and positioning.
- Responsive design: Using media queries for mobile-first designs.
- Preprocessors: SASS, LESS for better maintainability and features like nesting and variables.
- CSS frameworks: Bootstrap, Tailwind CSS, Material UI for faster development.
c) JavaScript
- Vanilla JavaScript: Strong understanding of core JavaScript concepts such as variables, loops, functions, scope, and closures.
- DOM Manipulation: Ability to interact with and modify HTML and CSS through JavaScript (Document Object Model).
- Event Handling: Understanding how to handle user interactions, such as clicks, form submissions, and mouse movements.
- Asynchronous Programming: Working with callbacks, promises, and async/await for handling asynchronous tasks.
- JavaScript ES6+ Features: Destructuring, arrow functions, classes, modules, template literals, and spread operators.
2. Frontend Frameworks and Libraries
- React.js: A popular JavaScript library for building user interfaces with components, state management, and hooks.
- Vue.js: A progressive JavaScript framework for building UIs and single-page applications.
- Angular: A full-featured frontend framework by Google that uses TypeScript and supports advanced features like two-way data binding and dependency injection.
- Svelte: A newer JavaScript framework that compiles components into highly optimized vanilla JavaScript at build time.
3. Version Control and Collaboration
- Git: Version control system to manage code and collaborate with teams. Familiarity with Git workflows (branching, merging, pull requests).
- GitHub, GitLab, Bitbucket: Platforms to host code repositories, track issues, and facilitate code reviews.
4. Build Tools and Package Managers
- NPM/Yarn: Package managers for managing dependencies in JavaScript projects.
- Webpack: A module bundler for JavaScript applications, enabling features like code splitting, bundling, and minification.
- Babel: A JavaScript compiler that allows using modern JavaScript syntax while maintaining compatibility with older browsers.
- Vite: A newer, fast build tool that focuses on improving the developer experience for frontend projects.
5. State Management
- Redux (with React): A predictable state container for JavaScript apps.
- Vuex (with Vue.js): A state management library for Vue applications.
- Context API (with React): A simpler, built-in way to manage global state in React applications.
- MobX: A library for simple and scalable state management in JavaScript applications.
6. Responsive Design and Mobile Development
- Mobile-first design: Designing for mobile devices first, then scaling up for larger screens.
- Progressive Web Apps (PWA): Building web apps that behave like native apps (offline support, push notifications, etc.).
- Cross-browser compatibility: Ensuring applications work seamlessly across all browsers (Chrome, Firefox, Safari, Edge, etc.).
- CSS Media Queries: Using media queries to apply different styles based on screen size, orientation, and resolution.