Certain coworkers, and friends, asked me what it means to be a “full-stack developer”. Developer, I get it, you can code, right ? But “full-stack”, qu'est-ce que c'est ?
I work for a startup in Quebec city, we design and build lithium-ion batteries for material handling equipments, and the devices are connected to Internet. My official role name is "full-stack developer", and I mostly develop web applications (or software solutions) related to the data collected from all the devices.
Simple, it's a "jack of all trades, master of none". A generalist rather than a specialist. You can find a definition here, and if you need more, check out this excellent post about the myths and lies about the full-stack developer.
A full-stack developer is a person who can develop client and server software solutions, with skills in all the layers involved in a development project. He/she is a software engineer.
Ok… So what exactly do you do ?
I design and build the architecture to support business requirements and scalability. It involves virtual machines provisioning, serverless architecture, security and access policies, network and storage management. Everything is cloud based.
We collect and process terabytes of data every day and I make sure data is available to users, using different engines (relational or NoSQL databases, warehouses), and the data is securely stored and accessed.
Back-end (web) development refers to everything going on under the hood, what you don’t see on a web page. I develop new features and APIs to access and exchange data between multiple applications and services (internal or external), including testing (unit and integration tests), server management, continuous deployment, security and maintenance. Back-end development is what I do best.
I design the user interface (UI) and make sure the end user has the best experience (UX) with the software solutions I build. I consider myself above average when it comes to designing simple and effective user interfaces, but I’m not a designer. For what it's worth, I'm obsessed with details and also love visual arts, photography in particular.
Front-end development refers to what the users see and interact with on a web application. I make sure everything is intuitive, accessible, fast and responsive.
Working in a data driven company involves using data to make better decisions. We help our customers reduce their CPU (cost per unit — each customer having their own definition of CPU) — by providing effective and custom dashboards. I write queries (materialized views, data cubes) and setup data marts that help our customer success team members build reports or key performance indicators (KPI).
We use multiple applications and services that use different (or transformed) data from one or multiple sources. Sometimes I have to build automated scripts or scheduled tasks to make sure the data is available at the right time and in the correct format.
I usually work on and lead 1–2 projects at the same time, involving 1 to 3 departments (R&D, customer success, finances, operations, etc.). I make sure we meet the goals and deadlines and quickly deliver value.
This one is not particularly related to the role but I enjoy sharing knowledge or teaching something because you always learn something yourself.
Most of the time I do project management, back-end and front-end development, since the architecture and the automated scripts are all set and running smoothly.
New customers coming with new challenges, and existing customers asking for new features, I usually need to work more or less on a specific aspect of the full stack. Sometimes I'm a cloud architect, a database administrator, a UI/UX designer, a back-end or front-end developer, a business analyst or ETL developer, a project manager or simply a presenter.
Above all, I enjoy solving problems and help others be more efficient. Are you a full-stack developer or a software engineer ? What do you do do in a day-to-day basis ?