Careers

Empower. Everyone.

We're looking for rebels. Those who aspire and inspire. Those who want to right the wrong. Those who truly care.

If you've always wanted to build something big from ground up, here's your chance.

What you'll be doing

  • Building a web app for an existing mobile app from ground up using React.js & NoSQL backend
  • Building a data management dashboard for the backend data from ground up
  • Enhancing the backend to accommodate the needs of the web app
  • The backend team is separate, but you’ll be in close cooperation
  • Finding best possible implementations for the UI decisions of the designer
  • Chop up big development chunks into smaller pieces for yourself and junior developers
  • Defining common-sense, project-specific ESLint rules and implement enforcement mechanisms
  • Daily codebase measurements like LOC count, static (Lint) / dynamic analysis and other tooling

Required qualifications

  • First and foremost, it is very important for us that you care about our mission
  • Be fluent in English to navigate StackOverflow and online conversations easily
  • Understand English videos like this at at least 1.75x playback speed
  • Have a firm grasp on which answers on StackOverflow are authoritative, old, new or best
  • Readiness to navigate up and down the tech stack at all levels of abstraction - from connecting together third-party components to defining logical and physical structure of ours to optimizing the individual bottleneck functions - all with the ultimate goal of making the resulting web app experience as smooth as silk.
  • 5+ years of relevant experience or an equivalent of 5000+ lines of non-trivial, non-similar mix of HTML/CSS/JavaScript code as part of a single project (i.e. multiple projects of smaller size do not count because some important skills and experiences only develop when dealing with complexities that only arise in larger projects) you’ve written and can demonstrate before or at the interview. Put simply, we need someone who has already built a full-stack, whole software solution, albeit a non-production version of it. Of course, it will only be better if you've built a large enough web app from ground up. Your projects should make use of Sass/Less and show that not only are you fully comfortable with acclaimed industry best practices like CSS guidelines, but that you also know when it's best to question authority, bend and break existing rules and/or create new ones in favor of obvious common sense in all the right circumstances.

Too many software companies start thinking about comprehensive testing so late in the game that it essentially becomes a Sisyphean effort against an ongoing development - no one wants to press the need to suspend it for months “just” to get the tests up and running. We need a solid foundation to build upon right from the start so our engineers develop confidently and go crazy with many of their bright ideas, knowing that there are strong and objective checks and balances in place to validate and approve any and all of their changes.

What you'll be doing

  • Building a unified test automation framework from ground up for an iOS & Android & Web apps
  • The end-goal is to have an environment that’s easily extensible with new test cases
  • Also, to have as many automated tests as possible; some will always need to be manual
  • Our research so far indicates that we'll most likely want to build this with Appium
  • Implement some representative test cases from our existing 400+ (and growing) scenarios
  • Some or all test cases should run on each significant (defined by common sense) commit
  • All test cases should run and finish nightly, showing beautiful red-green reports that rival Monet
  • Chop up big development chunks into smaller pieces for yourself and junior developers
  • Define common-sense, project-specific ESLint rules and implement enforcement mechanisms

Required qualifications

  • First and foremost, it is very important for us that you care about our mission
  • Be fluent in English to navigate StackOverflow and online conversations easily
  • Understand English videos like this at at least 1.75x playback speed
  • Have a firm grasp on which answers on StackOverflow are authoritative, old, new or best
  • Readiness to navigate up and down the tech stack at all levels of abstraction - from connecting together third-party components to defining logical and physical structure of ours to optimizing the individual bottleneck functions - all with the ultimate goal of making the resulting tests run at warp speed and in parallel.
  • 5+ years of relevant experience or an equivalent of 5000+ lines of non-trivial, non-similar code as part of a single project (i.e. multiple projects of smaller size do not count because some important skills and experiences only develop when dealing with complexities that only arise in larger projects) you’ve written and can demonstrate before or at the interview. Put simply, we need someone who has already built a full-stack, whole software solution, albeit a non-production version of it. Of course, it will only be better if you've built a similar testing framework from ground up. Your projects should show that not only are you fully comfortable with acclaimed industry best practices of your field, but that you also know when it's best to question authority, bend and break existing rules and/or create new ones in favor of obvious common sense in all the right circumstances.

We welcome junior engineers with strong ambitions and an equally strong humility and readiness to learn and grow to their highest and fullest potential. You are encouraged and will always have our full support to let us know whenever you feel you've outgrown your daily work and want something more challenging.

What you'll be doing

  • Assist the architect in building a web app up using React.js & NoSQL backend
  • Assist the architect in building a data management dashboard
  • Cooperate with the designer by finding best possible implementations to UI decisions
  • Daily codebase measurements like LOC count, static (lint) / dynamic analysis and other tooling
  • Occasionally helping out interns with their tasks and passing on what you've learned to them
  • Ensure clean ESLint before each commit

Required qualifications

  • It is important that you care about our mission
  • You have to be comfortable with English to navigate StackOverflow and online conversations
  • Understand English videos like this at at least 1.5x playback speed
  • Have a history of at least 100 commits on GitHub or similar services
  • We welcome recent graduates with readiness for full-time commitment to this role
  • 1+ years of relevant experience or an equivalent of 10,000+ lines of non-trivial, non-similar mix of HTML/CSS/JavaScript code as various projects you've written and can demonstrate before or at the interview. Your projects should make use of Sass/Less and show that you've become fully comfortable with acclaimed industry best practices like CSS guidelines.

We welcome junior engineers with strong ambitions and an equally strong humility and readiness to learn and grow to their highest and fullest potential. You are encouraged and will always have our full support to let us know whenever you feel you've outgrown your daily work and want something more challenging.

What you'll be doing

  • Assist the architect in building a unified test automation framework for iOS & Android & Web apps
  • When the framework is ready, implement test cases for our existing 300+ (and growing) scenarios
  • Occasionally helping out interns with their tasks and passing on what you've learned to them
  • Ensure clean ESLint before each commit

Required qualifications

  • It is important that you care about our mission
  • You have to be comfortable with English to navigate StackOverflow and online conversations
  • Understand English videos like this at at least 1.5x playback speed
  • Have a history of at least 100 commits on GitHub or similar services
  • We welcome recent graduates with readiness for full-time commitment to this role
  • 1+ years of relevant experience or an equivalent of 1000+ lines of non-trivial, non-similar, code as part of a project you’ve written and can demonstrate before or at the interview.

If you're a student or self-taught and are starting to have a feeling that you want and can make contributions to a larger project, working within and as part of a professional group, we're ready to help you get started. Our intern positions are not paid, but are an opportunity to gain experience in a real-life, production-quality team project alongside your main university studies if you so choose, although our advice to students is that it is always in your best interest to focus full-time on your studies, finish them well and only then venture into the industry.

What you'll be doing

  • Helping out with HTML / CSS / JavaScript issues
  • Ensure clean code using Lint before each commit

What you'll learn

  • Working with RAPID methodology
  • How to efficiently coordinate efforts within a team around a larger project

Required qualifications

  • It is important that you care about our mission
  • You have to be comfortable with English to navigate StackOverflow and online conversations
  • Understand English videos like this at at least 1.25x playback speed
  • Have a history of at least 50 commits on GitHub or similar services
  • Have about 2000+ lines of non-trivial, non-similar mix of HTML/CSS/JavaScript code as various projects you've written and can demonstrate before or at the interview. Your projects should make use of Sass/Less and show signs that you've started incorporating acclaimed industry best practices like CSS guidelines.

If you're a student or self-taught and are starting to have a feeling that you want and can make contributions to a larger project, working within and as part of a professional group, we're ready to help you get started. Our intern positions are not paid, but are an opportunity to gain experience in a real-life, production-quality team project alongside your main university studies if you so choose, although our advice to students is that it is always in your best interest to focus full-time on your studies, finish them well and only then venture into the industry.

How you'll contribute

  • Implementing test cases for iOS & Android & Web apps
  • Helping out with issues related to automation
  • Ensure clean code using Lint before each commit

What you'll learn

  • Working with RAPID methodology
  • How to efficiently coordinate efforts within a team around a larger project
  • The importance of high-quality testing and test automation in any project

Required qualifications

  • It is important that you care about our mission
  • Have a history of at least 50 commits on GitHub or similar services
  • You have to be comfortable with English to navigate StackOverflow and online conversations
  • Understand English videos like this at 1.25x playback speed
  • Have about 500+ lines of non-trivial, non-similar code as part of a project you’ve written and can demonstrate before or at the interview.

Requirements to your resume / CV

Because it’s often common practice, we want to explicitly emphasize that our hiring process does not include any test assignments or abstract programming questions that are unrelated to your real interests and the actual work you’ll be doing. We prefer that you have your own project(s), done on your own volition, in your own time, of which you are proud and can present clearly to us, even if they are unfinished, in progress, full of errors and teeming with bugs. We conduct our interviews strictly based on your resume / CV, so having it fully reflect your projects and journey so far is absolutely paramount. Therefore, please take time and make sure it’s updated as follows:

  • If possible, include links to your projects on GitHub or similar services
  • Explain as briefly as possible, but not at the expense of being clear in a way that any newly graduated IT student who studied well but isn’t familiar with a niche technical jargon can understand. So, acronyms like "IPC" and "API" are okay, but acronyms like "BIST" or even "SoC" need accompanying explanation. For example, instead of:

    "Developed a tool to analyze replacements of MOSFETs with FinFETs in BIST of a SoC"

    expand and clarify as follows:

    "Developed an IPC-based tool that provides an API for concurrent analysis of feasible replacements of conventional MOSFET transistor technologies with newer FinFET types for built-in self-test and repair chip systems"

  • Don’t write generic descriptions that tell nothing about what exactly was your contribution. Be specific (obviously, in a way that doesn’t give up corporate secrets or any other confidential information). For example, instead of "Developed features and fixed bugs", which we frown upon, list up to five of your major contributions at each role, like so:
  1. Sped up performance by about 20% by identifying several frequent and unnecessary database lookups and introducing cached computation results for them.
  2. Extended backend of the system to support saving of the last open page of user sessions. Required careful low-level memory handling related to storing large binary objects into the database.
  3. Designed and implemented communication protocols ensuring that unexpectedly interrupted sessions (for example, due to loss of internet connection) resume to a correct and coherent state once the connection comes back.
  4. Developed IPC API for one of the modules of a large distributed system to allow parts of the system to be extended within the .NET framework. Required managing interoperation between Win32 and the CLR.
  5. Implemented hardware simulation of the main product for automated testing of the firmware, which reduced the firmware testing cycle by orders of magnitude (hours instead of a day) for much of the functionality.

At the interview

Principles & how we evaluate

We're looking for people who are more interested in how things work and why, and less in memorizing a bunch of names and acronyms just to sound smart.

We never conduct our interviews around questions like "What is OOP?" because how someone describes a concept tells us absolutely nothing about their expertise on when to use it, how to use it, and perhaps most importantly, when not to use it. We derive all the information we need from your resume / CV, your projects (code) and how you present them. Here's some more widespread questions and practices that, for similar reasons, have no place at our interviews:

  • We never ask you to write code on a blackboard or paper
  • We never ask you to write algorithms like reversing a linked list or rotating a binary tree
  • We never ask you to list all the sorting algorithms, data structures or design patterns you know
  • We never ask small-grain language questions like “Is ++i faster than i++?” or “What is negative infinity?”
  • We never ask language-lawyer questions like “What does this statement declare: var a = [[[]]]”
  • We never ask questions that require you to mentally execute a program and say what the output is
  • We never ask about the inner-workings of specific language constructs like “What is this keyword?”
  • We never ask questions that check a knowledge on how an acronym is expanded, like “What is ECMA?”
  • We never ask how many tennis balls you can fit in an airplane unless the role requires you to do so
  • We don’t do puzzles; Google discovered a decade ago that puzzles are “a complete waste of time”
  • We and all of our interviewers value when you know things we don’t, the more the better
  • We especially value strong professional confidence presented with an equally strong humility
  • We are looking for people who are not slow to admit that they might be wrong
  • We are looking for people who like to pause to hear and engage with other opinions
  • We do not ask about your strengths, weaknesses or where you see yourself in five years
  • We never ask about any of your past or current salaries

Instead, based on your resume / CV, we’ll ask to complement and/or expand on:

Project(s)

  1. What kind of projects do you like working on, including hobby-projects?
  2. To present a project / problem you’ve worked on recently and are proud of
  3. What was the depth and breadth of the tech stack you used on it?
  4. Did you use any tools such as static analysis, performance profiling, etc.?
  5. What were the most interesting / difficult parts?
  6. Did you encounter any classic CS problems (sorting, graphs) and how did you solve them?
  7. What were the most interesting things you learned from the project?
  8. What do you consider as beautiful / readable / maintainable code? (have an example ready)

General

  1. How do you approach searching for answers and adapting solutions from the web?
  2. How do you decide which answer to adapt from StackOverflow?
  3. Do you have any engagement online (open source contributions, StackOverflow Q&A, etc.)?
  4. What, if any, industry trends do you like and follow (and how)?
  5. What classic CS books and/or authors do you like and have read?
  6. What did you like about this position that made you decide to apply?
  7. What questions do you have about the position or our company?

If you're not a native English speaker, we may also ask you to pick a general topic of any of your interests (like history, sports, science, engineering, economics – anything that both you and the interviewer can understand), on which we'll pick a video and play a 1-2 minute clip from it at the speed required for the role and ask you to translate the meaning. We won't ask you to speak in English.

We understand that there's no way one can describe all of that off the top of their head, so it's absolutely okay, moreover you are encouraged to prepare and have ready notes for each of these questions. In fact, the more and the better notes you have, the more we’ll interpret it as a desire to embark on a journey with us.

Our work culture & RAPID

We believe that by far two of the biggest enemies of delightful professional productivity are interruptions and friction. Classic examples of interruptions are compulsory ceremonial meetings like scheduled daily standups where everyone has to share what they did the previous day; or filling in forms where you have to show how many hours you worked on issues. An example of friction is creating issues for every single change made to the code; or estimating how long every single issue will take; or having countless issue states. We don't do that.

  • We have zero ceremonial meetings (no standups, no retros, no grooming or any other rituals)
  • We don't do meetings where ten people discuss for hours what color a button should be
  • We have meetings only if and when there are topics that require group attention or discussion
  • You will have full freedom not to join and/or leave any meeting where you don’t contribute or gain
  • We don’t do practices commonly associated with Agile (no Scrum or anything of that sort)
  • Instead, we use our own, in-house methodology which we call RAPID
  • RAPID stands for Research, Analysis, Prototyping, Innovation and Development
  • RAPID has the primary objective of maximizing focus and minimizing interruptions and friction
  • RAPID ensures that at any given time an employee can identify their work with R, A, P, I or D
  • If they can’t, they have full freedom and autonomy to switch their activity to something they can
  • RAPID disapproves of frequent meetings or any compulsory ceremonies of any kind
  • RAPID ensures your freedom not to join and/or leave any meeting where you don’t contribute or gain
  • RAPID requires only two states for an issue: open and closed
  • RAPID operates in milestones consisting of pools of issues; that’s it (no “user stories” or anything)
  • RAPID gives developers the autonomy to choose issues to work on from the pool
  • RAPID does not require estimates on every single issue; only if possible and if makes sense
  • RAPID allows and encourages “I have no idea” responses on estimate requests if that’s the truth
  • RAPID expects frequent code commits composed of little logical changes
  • RAPID operates with an existing pool of test cases that run and grow with each significant commit
  • RAPID disallows pre-defined and endless code reviews; only when truly necessary or asked for
  • RAPID disallows merge requests to remain unattended for longer than a day
  • RAPID welcomes refactoring that reduces LOC while maintaining or increasing readability
  • RAPID prohibits weeklong emailing back and forth for things that can be done in ten minutes
  • RAPID entails that individuals, not committees, are in charge of most decision points
  • RAPID allows bending any rule in favor of obvious common sense in all the right circumstances
  • We also know that innovation is impossible without Mistakes, Reflection and Improvement (MRI)
  • We have a list of “Always Welcome Optimizations” prioritized based on their measured impact
  • For example, if you can show a way to reduce app size by half, that’ll most likely be your next task
  • We periodically schedule development pauses to upgrade our tools to their latest stable versions
  • We also periodically schedule feature development pauses to do all approved refactoring

Our employee happiness policy & TRUEHAP

We adamantly follow a fundamental principle that there simply cannot be a long-term quality product with great user experience without long-term, dedicated and happy team behind it, and that, regardless of any compensation, no one can be truly happy without a good night's sleep, plenty of rest as well as a fulfilling social life with friends and family. In even more practical terms, no one from Cosmodeel team should ever miss their child's concert because of a situation at work, no matter how urgent or who is asking – it's always against our policy and against our Three Rules of Employee Happiness - TRUEHAP:

  1. We never expect you to sacrifice important events in your personal life for work
  2. We never expect you to work beyond normal/agreed hours; for us, there is always tomorrow
  3. If we notice that you work too much, we’ll ask you to take a break and enjoy this wonderful world

Join Us

If you’re interested, please send your resume / CV that describes your journey so far, in the format and details outlined above, to careers@cosmodeel.com with a cover letter that includes:

  1. Desired position in the subject
  2. Salary expectation
  3. Links to professional online profiles (LinkedIn, StackOverflow, GitHub etc.), if any
  4. Anything else you'd like to add