venomnert

venomnert

Background

I have been a backend elixir developer for about 3 years now. I have been mainly working on simple CRUD applications.

Context

As of last year I have been applying for elixir backend position; however, I have been unsuccessful in landing a job. After having been interviewed, I think I realize what I am missing: making architectural decisions in a complex system.

Its best if I provide a couple of interview questions to showcase what I mean in my above statement:

  1. When should one use sql vs nosql? What are the pitfalls of each technologies? Are there any performance difference between the two?
  2. You are tasked with creating a elevators as a service. Each elevator can go up, down or stop. Now how would you design this system using OTP? What are the pitfalls of the decision?

Those were some of the architectural questions I came across. Having a solid understanding of OTP I was able to provide a single high level implementation detail for the #2. But I was stumped when it came to determining the pitfalls of my decision. Furthermore, when pushed to answer similar questions I didn’t know how to answer it.

Question

What should a junior backend elixir developer do in order to gain experience to be able make architectural decisions in a complex system?

  • One thought that came to mind was, I should try to implement the system asked in #2 interview question. Even then I am not sure what I should put my focus on in order to gain the experience I need to land a job.

I apologize for the rant but I am stuck in my growth to become an experience backend elixir developer!

Most Liked

gregvaughn

gregvaughn

There’s no easy answer. To gain experience you need to spend time experiencing multiple situations. The experience you gain with side projects that aren’t really “in production” is helpful, but not the same as working for a company that has production systems.

I am encouraged by your elevator example. My first ElixirConf talk about OTP used elevators as the test case. https://www.youtube.com/watch?v=R_8ehmGTVbw

JEG2

JEG2

Author of Designing Elixir Systems with OTP

Some project ideas:

  • Build the Game of Life without using any processes. Try to minimize the cells processed in each new generation.
  • Build any moderate sized project while pairing 100% of the time. Trade driving so it’s 50/50.
  • Build a chat application using only what ships with Elixir (and Erlang). The app should be able to “Host” or “Join” an IP that’s currently hosting. Make sure I can receive messages while I’m typing one.
xlphs

xlphs

Making architectural decisions is just the how. I always start with why. Why do you have this particular problem that you are tasked to solve?

Why does the business want a new elevator service? Are the current solutions too slow? Is the problem actually optimizing elevator dispatch?

Similarly, understand the business can help choose between sql and nosql. Nosql or document databases are very flexible and works great for nested relations. Is that what the business data look like?

Also, design docs are necessary evil. You may or may not like them, it’s a tool for communication.

Sorry if all that seem too vague. I guess my point is you want to think like an engineer, so you have to understand requirements as well as the limitations.

Last Post!

evadne

evadne

Hi

Forget about Elixir (it’s just another programming language).

Forget about landing another job (it’s just another job, you won’t be happy).

Read everything and study 24/7, stay curious so you can create opportunities for yourself. Good luck!

As to the questions…

  1. The SQL vs NoSQL question makes absolutely no sense without context (traffic level, structure or structureless-ness of data, concurrency model, etc) and a proper architect would study the actual underlying problem closely before providing a solution.

  2. I’d probably use a bunch of processes and model each door and each carriage separately, as a starting point. Could model riders too.

Where Next? Top

Trending in Chat/Questions Top

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews