At Harled we are fortunate to work with some very special clients. Part of this relationship requires that we ensure candidates have a certain level of experience in key areas.
This post takes a look at the key areas of experience required and some great resources that can be used to increase an individual's acumen in each of the areas.
Full Stack Experience
As a small team, we require that each member is able to contribute across the frontend, backend and data layers of the application -- the full stack! This doesn't mean that an individual needs to be an expert in each layer (it is a lot to cover), but there must be some level of experience and familiarity with the purpose and technologies of each of the three layers.
Highlighting this experience is required and is most effectively represented when the candidate can explicitly identify the frontend, backend and database technologies used. Below is a quick list of the typical technologies seen at each layer:
- Rails, Sinatra, Django, Flask, Node.js etc.
- PostgreSQL, MySQL, MS SQL, MongoDB etc.
We like to move quickly with a small team. Full stack frameworks serve this approach perfectly. A full stack framework is one that handles all aspects of a web application including the frontend, backend and database layers.
As such, we heavily value Ruby on Rails experience, but also need to see some level of familiarity with the other frameworks mentioned above. Below are some great resources to gain experience with each of these frameworks:
- Ruby on Rails
- The Rails project offers a perfect guide called: Getting Started with Rails
- The Django project also offers a great tutorial that walks through key aspects of the framework: Official Django Tutorial
- We love DigitalOcean and their tutorial ecosystem. They have a great one on learning Laravel called: Build an App With Laravel in 1 Hour
- Symfony has a lot of great resources across the web. One that we think does a great job of showing Symfony in a practical scenario is: Harmonious Development with Symfony 6
We have fully embraced a highly skilled team that not only writes code but also is responsible for running it in production. We believe strongly in keeping our developer experience (DX) top notch so that we spend time writing code, not setting up or debugging our development environments!
There are many DevOps related tools and processes that we look for in candidates. Below we've highlighted some examples of what candidates need to have in order to effectively join the team and help us write great software.
- Version Control
- Git is the de facto choice, experience with hosted services include GitHub, BitBucket, GitLab.
- CI/CD Pipelines
- We use pipelines for continuous integration (CI) and continuous deployment (CD) daily (more like hourly). Experience with any of the following are great: GitHub Actions, Azure DevOps Services, BitBucket Pipelines, Codeship, CircleCI etc..
We use Docker for all local development and we use Docker for all production environments. So, knowing Docker is a must! The following lists provide some examples of different levels of Docker experience that we like to see:
- Docker / Docker Desktop
- Having experience of Docker on your laptop is a great start. Not only is it amazing for development and making dev environments reproducible but it makes getting and installing common components (databases, key/value stores etc..) a piece of cake.
- Cloud Docker/Kubernetes Runtimes
- There are a lot of them. Some examples include Azure Container Instances, Azure WebApps, Azure Kubernetes Service, Amazon's Elastic Container Service, Google Kubernetes Engine etc..
- Other Cloud Runtimes
- There are other great hosting environments that abstract away their docker (or docker-like) runtimes under the covers. Some examples include: Heroku (and Dokku), EngineYard, IBM Cloud, DigitalOcean App Platform and Hatchbox.
We recognize that the above list can be a little daunting. However, it is important that we all speak the same base language across full stack, common frameworks, DevOps and container-based code runtimes. We also know that the above lists are not exhaustive. There are tons of tools and technologies which are similar to the examples provided (particularly for frontend / backend / database, DevOps and container runtimes).
We'd love to hear from you if you feel that we have missed a key technology or should be tracking a new emerging technology that might be a better option than something we have listed. As always, if you want to join a small but mighty team then we'd love to invite you to review our open positions!