Senior Software Engineer
- Hybrid
- Roma, Lazio, Italy
- €35,000 - €50,000 per year
- Engineering
Job description
About this Job
Type of job: Full-time
Role: Software Engineer
Experience level: Senior
Industry: Mobility, Automotive, Banking, Utilities
Company Size: 40 - 60 people
Salary range: € 35.000 - € 50.000
Job location: Rome (chances to work remotely)
Language: italian or english (fluent)
Job description
This job position is aimed at Senior Software Engineers. At our company, a Software Engineer is expected to have cross-functional skills between backend and frontend. However, we are glad to hire IT professionals that are more focused on one of these two sides and have only a basic knowledge of the other side. If you will join our team, we will expect you to develop new skills also on the topics you are less familiar with. This will be achieved through both training on the job and personal training courses tailored at improving your missing skills.
We also expect you to keep a high code quality with a "living documentation" approach and high level code comments, in order to make collaboration with other team members as easy as possible. A very important skill for us is the ability to autonomously evaluate your own work and schedule code refactors when necessary.
Finally, we expect you to autonomously evaluate and criticize the design choices you will work with day by day, actively contributing in evolving our projects and constantly aiming to improve both yourself and your team.
Backend
On the backend side, you will work on two possible aspects of our system. On one hand, we expect you to develop a backend system made up of microservices. On the other hand, you might be working on what we define as "the backend part of our frontend", hence developing client-side code which does not include any graphical and user-facing part.
Frontend
Frontend software engineers will work on client-side code. On one hand, we will expect you to develop the UI part of our clients (basically UI components using HTML and CSS), both Web, using mostly React, and mobile, using ReactNative. On the other hand, you will work on developing frontend logics, including complex flows for the end users of our applications. We often use state machines to model frontend logics, if you are curious of how we do this, we can discuss this in detail during our interview process.
Requirements
- At least 5 years of previous experience in the field
- Ability to coordinate technical teams
- Being able to analyse complex problems
- At least a basic knowledge of both backend and frontend development
- A deep knowledge of either backend or frontend development
- Enthusiasm to solve complex problems
- Knowledge of most common design patterns and best practices
- Some knowledge of "Our working stack" section (scroll down)
- Basic knowledge of DevOps practices (UNIX scripting, Docker)
Bonus points
- Computer Science or Engineering degree
- Open Source contributor
- StackOverflow contributor
- Academic papers published
- Cross-functional skills between backend and frontend
Interview Process
Step 1 - Solve some coding problems
You will be sent an assignment with some coding problems. You can choose which problems to solve in one hour and submit your solutions. The solutions you submit will be evaluated by our recruiters and, in case they they are satisfactory, you will be moved to the next recruitment step.
Step 2 - Let's get to know each other
In this second step, you will have a call with one of our recruiters and they will present you our company and the job position you applied for. They will also ask you to briefly discuss your background and your previous experience. At this stage, feel free to ask any question about our company and the job position!
Step 3 - Technical interview(s)
In this step, you will be requested to solve some algorithmic problem in a live coding session with one ore more of our recruiters. You can use any programming language you like. We never ask trick questions and we will not ask you theorems or definitions by heart, we just want to understand how you think and how you approach problems: if you have a good basic knowledge, we can build together on that.
A further technical interview might follow in case our recruiters believe it necessary to better assess your skills!
Step 4 - Final interview
Here you will get to talk with our head recruiter and our Engineering Director. We will get to know each other better and go through an assessment of your technical interviews and maybe follow up with some further discussion about the problems you faced.
Step 5 - Job offer
In case you successfully completed all the above steps, one of our people managers will get in touch with you to discuss the logistics, economics and benefits and follow up with a job offer.
Company overview
Here at moveax, we have the ambition to be regarded as the best possible partner for any business that seeks help in facing the daily challenges of the tech world. We are proud to be the right people to interact with in the field of digital and cybersecurity. Over the years we have also gained great experience in the world of blockchain (digital assets, DLT) and artificial intelligence.We believe our main competitive advantage is having a team made of young talents who have a strong passion for technology. We treat every project for our customers with the same care we have for our own projects and we constantly try to improve our processes to achieve the best possible results. We are based in Rome, between Trastevere and San Pietro neighbourhoods.The main market segments we work in are: mobility and transportation, banking and finance, public administration.
Your position at our company
- Delivery dept.: handles project management and customer relations to support customer business and prioritisation
- Experience dept.: takes care of Service Design, UX and UI activities
- Engineering dept.: takes care of the architectural design and development of our projects. This is the department you are applying for.
- Cloud & infrastructure dept.: handles site reliability, infrastructure and cloud services
Our Digital business unit as a whole basically works in two directions:
- providing our customers projects aimed at end-to-end digital innovation, working with the customer from project inception and definition up to project delivery, in an agile way.
- delivering company products in cooperation with of our Innovation business unit to launch highly innovative projects on the market, leveraging our internal practices, especially focusing on blockchain technology and AI
Engineering Team
The following is a description of an average member of our team:
quite young (around 30 years old): this does not mean we are not open to older collaborators, it is just an indication that we like to invest on young talents regardless of the years of experience they have.
driven by great passion for technology: the ones who love their job perform better with less effort
open source and StackOverflow contributor: it's nice to take but it's also nice to give something back to the community
knowledge cruncher, the world runs fast and you have to stay up to date, read a lot and learning from those who have already faced a problem before you is definitely the right path to take
passionate about the UNIX-like world, what's better than knowing what's happening in your PC?
beer lover, it helps to think better :)
Benefits
ask for a book, we'll get it
foosball and playstation
free beer on friday
free coffee
team building travels every year
Our working stack
Project management
- Issue tracking: Atlassian JIRA
- Team communication: Slack, rarely emails
- Metodology: Agile-Scrum, Domain Driven Design (DDD)
Development
The following list includes most technologies that we have been using on our projects. These is not meant to be an exhaustive list, as we plan to investigate new technologies and are open to different technologies based on project requirements.
- Version Control: GitHub, Bitbucket
- Frontend
- Frameworks: ReactJS with Redux, Angular, Vue.js
- Language: TypeScript
- Backend
- Frameworks: NestJS, NodeJS, Java Spring, Django, Laravel, very rarely .Net,
- Languages: Go, TypeScript, Java, Python3, PHP (only as a last resort), C# (if required by the project)
- Infrastructure:
- Cloud providers: AWS, Azure
- Containerization: OpenShift, Docker, Kubernetes
- Persistence, events, communication: MongoDB, Redis, PostgreSQL, Apache Kafka
- CI/CD: Bitbucket Pipeline, ArgoCD
- IaC: Terraform, Ansible
Joel test
Source control ✔️ One-step build ✔️ Daily builds ✔️ Quiet working conditions ✔️ Bug-tracking database ✔️ Best tools that money can buy ✔️ Bugs fixed before writing new code ✔️ Testers ✔️ Up-to-date schedule ✔️ Code screening ✔️ Specs ✔️ Hallway usability testing ✔️
Job requirements
- At least 5 years of previous experience in the field
- Ability to coordinate technical teams
- Being able to analyse complex problems
- At least a basic knowledge of both backend and frontend development
- A deep knowledge of either backend or frontend development
- Enthusiasm to solve complex problems
- Knowledge of most common design patterns and best practices
- Some knowledge of "Our working stack" section (scroll down)
- Basic knowledge of DevOps practices (UNIX scripting, Docker)
Traits we value
- computer science or engineering degree
- open source contributor
- stack overflow contributor
- academic papers published
or
All done!
Your application has been successfully submitted!