Our goal is to create a working environment that allows us to learn, to teach, to reach our goals – both corporate and personal, and to have fun!
Friendly and positive attitude
Willingness to learn and to teach
Attention to details
Responsiveness on Slack
Daily checkins in the project-related Slack channel: what was done the day before, what is planned for today, and what obstacles/problems you faced. Checkins are super-important, it shows the progress to all of us.
Find a balance between overthinking a feature/missing a deadline and delivering a shitty code: think how to implement a certain thing in a best way, but realize that at this moment you might need to take some shortcuts, but then get back to them later to make it right.
Make your habit to refactor as you go: if you see something that is not right and can be improved, please don’t hesitate to include it in your commit! Your future self (and present myself!) will be very grateful.
Changes are made in a separate branch that has a Jira story id followed by a short description, ie: vid-18-description-sort
Commits have JIRA story id in the beginning, followed by a short description of the changes made, ie: [VID-18] Sort by Description field in Admin panel.
Pull requests are made from your feature branch to master.
One pull request (PR) a day – this way we ensure both granularity and consistent delivery; your performance is judged by it
Time is tracked in Jira using its time-tracking feature, at least once a day
Each public function in a class has a unit test.
Code styling is universal across a single project: function/var names, single/double quotes, spaces/indents, etc.
Code styling is enforced using IDE-based or build-based (even better – both) linting tools.
Don’t comment things out without a proper comment of why it was done, and how you are going to fix it. If you truly need to remove something – just delete it. We’re using a VCS after all! Can get this piece back if we need to, at any time.
CI is used – test/linting is run, and project is built on each push to master.
Project is Dockerized. This allows us to develop and deploy software in a closely contained environment, avoiding lots of potential problems with library conflicts, OS conflicts, etc.
If you’re stuck, don’t hesitate to ask! We all want to figure it out ourselves, I know. But please, don’t spend more than 30 minutes on something you can’t do! You’ll be surprised how much easier it will be with somebody’s help. Also, you’ll feel better!
OS X is preferred, Linux is a second best choice, Windows won’t be tolerated!
Must encrypt your startup OS X disk with FileVault. For PC-based hardware, make sure you have a password on BIOS, and that you disabled booting from external devices.
IntelliJ PyCharm / RubyMine / WebStorm / IDEA
zsh + oh-my-zsh as your shell
Homebrew for package management on OS X
Slack desktop client
Gmail / Google Drive / Google Calendar
TeamViewer for being able to help (or be helped) remotely
Docker and Docker Compose
virtualenv for Python
nvm for Node.js
rvm for Ruby/Rails
…and many others!