How to become a Senior Elixir Developer? Interview with Szymon Soppa, CEO at Curiosum
As a software house, Curiosum specializes in Elixir technology. Are you considering the Elixir Developer career? Read an interview with Szymon and learn how to become a successful Senior Elixir Developer. See also why Elixir's language is so likeable
(Natalia) Okay, everyone heard of this, but no one has seen it! It sounds a bit like we're looking for a unicorn! Who is and where can we find the Senior Elixir Developer? After all, Elixir is only 10 years old, and it is hard in recruitment to get a Senior in Elixir, right?
(Szymon Soppa, CEO at Curiosum) When it comes to Seniors, the entire IT industry lacks them, not only in the Elixir language area. This is because the market is growing faster than the pool of candidates who go to the IT industry, or more precisely - computer science & software development. We have noticed that many people are changing their industries. So, this pool of candidates is refilled, but they do not yet have such a solid technical background. Despite that, they want to enter this world, which is okay, but only if you know that it takes time for this background to be completed.
The popularity of Elixir
Elixir is still a slightly niche technology, which is why this problem of the lack of seniors, in general, is even more aggravated here. This is natural for basically any language that is not recognizable yet because it has not had a chance to go broader yet. In that situation, it is common for companies to hire developers with experience in other technologies and then give them professional practice opportunities in the technology they want to learn.
This is interesting because we've seen Stackoverflow survey results last time, and we see that the Elixir language is liked and often chosen by developers. So, it's not like Elixir isn't that famous. Let me ask - why is it worth picking Elixir in business modern development, and why is it still so challenging to find Senior Elixir Developers since it is a language so liked by developers? (Elixir & Phoenix ranked as one of the first when it comes to programming language and framework)
The results of the Stackoverflow survey reveal what current users of some languages think about these languages. Therefore, if we have people who currently work at Elixir and say that they like this language, then Elixir increases its chances of being on the podium in this poll.
Unfortunately, the sympathy for Elixir from people who currently use it does not have a 1:1 ratio of how many programmers have heard of this language, use it in their work, or how it is used in business in general.
Marketing teams supporting programming languages to grow
So here we touch on a pretty interesting topic in IT: the marketing of programming languages. Here you can specify a few things that may affect why Elixir is still not so popular language.
Namely, this language appeared quite late compared to the more popular languages; we are talking about around 2014 when Elixir appeared on a slightly larger scale.
The second point, Elixir, is a functional language, which in many people's eyes seems more difficult or less understandable, which is not true. I would say that Elixir as a functional language is simple; you just have to try functional programming.
The language can also quickly gain popularity when used in a fairly rapidly growing branch of business, e.g. in the case of Python, it was machine learning. Or when a large company starts to use such a language very much, and it influences the development of this language, e.g. Facebook developers strongly influenced the development of the PHP language.
Elixir developer - where to find them?
Generally, as it turns out, if someone tries Elixir, this language usually gains approval from specialised developers. My observations show that these developers usually stay with Elixir and do not want to change it to another language. I've seen quite a few cases where people switched from Ruby to Elixir or Java Script to something else, but when it comes to Elixir, I rarely see it working the other way around.
The second thing: Elixir, as one of the emerging web technologies, is also starting to enter new areas, e.g. in machine learning or crypto, so in business terms, we have evidence that large companies successfully apply this language at home. Some large companies also successfully adopted Elixir at a very early stage.
So, it proves that this language can deal with various fields and massive traffic because Elixir is known for its scalability. That all gives us the business value of Elixir. So the idea is for Elixir to get more media coverage and to be more popular overall.
Well, there are still not many events regarding Elixir, which is why, among others, Curiosum has decided to organize free & online meetups about Elixir. But we also have ElixirConf EU, Elixir conference in London, and others.
Yes, part of popularizing a programming language is meetings like this, and we do it at Curiosum. But we also share knowledge on the blog, on our Lightning Talks inside the company or others.
Ruby vs. Elixir. Scalability is a key
For comparison, Ruby used to be a language that was very eagerly adopted in startups (and still is), and it worked great because you could create some applications simply and quickly. But then, when these services became more popular, they encountered scalability problems; therefore, some applications had to be rewritten into other languages.
I must admit, in my opinion, if there were also such a greater openness to functional programming and Elixir would appear when Ruby appeared, Elixir would also gain popularity at that time. Even more - Elixir could become the language of the first choice for startups because there would be no need to rewrite these applications and services into other languages. However, the problem with Elixir is that it appeared a bit later, in 2014, and unfortunately, Ruby appeared earlier. I suspect Elixir would be much more popular if it had already been created. However, I firmly believe that Elixir still has successes ahead of it because it is clearly becoming more and more recognizable and more willingly selected for projects.
Okay, if we say that Elixir is gaining popularity, why is it still so difficult to find these Senior Elixir Developers? What stands in the way? Is this the development of projects in which Elixir operates?
Maybe the question should be whether the main reason that there are not many Senior Elixir Developers is that it is a fairly young programming language. But then, let's move on to the next topic - what really defines a Senior?
Senior developers - who are they?
Considering that we have Juniors, Regular Developers and Seniors, the Senior, in my opinion, is such a lifeline for the others; that means he can help with his knowledge and both the Junior and Mid Developer. For example, a Regular Software Developer who still has a lot of questions about more complicated things will go to the Senior. Senior has already touched on various areas and solutions (maybe not necessarily having to take part in multiple projects but touched on different areas and modules in the project), in which he had the opportunity to test different tools, sometimes different languages, where they had contact with more complex solutions and architectures. That gives him a solid understanding of the technology, and he knows how to build a maintainable, scalable, and secure system.
That person will give direction to the entire project so that you do not have to rewrite it from scratch or spend a lot of time refactoring.
So, can we say that a Senior is a person who writes for a particularly long time in a given language? In my opinion, NO. Instead, this person can approach the software architecture well and, thanks to their experience, know what solutions should be avoided or even gotten rid of.
Okay, based on what you said, how to become a Senior Elixir Developer? Is it just experience with Elixir?
If we add the Elixir aspect to this, there are some topics in which such a person simply needs to be knowledgeable. So, we generally have two paths here - either we are already Seniors in different technology and only getting to know Elixir, or we are following the path from Junior to Senior in Elixir.
How to become a Senior?
If someone is just switching to Elixir, he or she obviously needs to get to know this technology first. However, from my observations, Senior, such a person is able to master this technology quite quickly. Why? Because learning programming is a bit different than learning natural languages, such as English or Polish, because here, being at a high level in some other technologies, you can learn new ones quickly, thanks to certain repeating patterns.
As a Senior Elixir Developer, it's nice if such a person knows the subject of OTP very well, i.e. he/she can create a scalable and parallel system. It is good if they also know the techniques of metaprogramming in Elixir - it must be used with caution, but if someone can do it, they will undoubtedly understand the Elixir code in some places and make improvements to it. Thirdly, it seems to me that it is worth knowing how to structure applications in Elixir (here, I mean Phoenix context) and how you can also separate sub-apps using umbrella apps.
Knowledge of Elixir programming libraries is certainly essential too. This tremendously impacts the language's popularity - the more libraries, the easier it is to write in a specific language. Some part of the code is just attached from libraries, and we do not have to write it ourselves from scratch, e.g. integration with some payment methods in Elixir - we simply attach it from libraries. We don't have to write everything from scratch within the project. So, it's nice to be familiar with what libraries already work in Elixir so that you can easily navigate through what can be used in the project, and this, of course, comes with practice.
Obviously, time is essential... But, for everyone, it is something individual - some people need less and some more time to write a bit of Elixir code and have the habit of writing "elixir way". For example, a pipe operator describes in a significant way the process of what happens in a program. This is not listed in object-oriented languages but is somewhat similar to its mechanisms, that is, walking multiple times through how a program would be written in Elixir.
It is visible when, for example, a Junior writes something and how a Senior or even a Mid-developer would write it - such a person structures the code completely differently. It is much easier to read it after about 2 years than at the beginning of this path.
What was it like for you? Are you a Senior Elixir Developer?
Modesty aside – obviously, I am. At this stage, we already provide consulting in Elixir projects to help other companies begin with this technology without mistakes, help them to choose appropriate solutions and properly structure such projects in Elixir. It usually looks like we do a consultation so that a company can act adequately from the beginning.
As I said - it is not only a language case but also dealing with various projects and solutions. At this stage, I have already participated in dozens of projects...
Wait, dozen? And you are very young because you are just getting close to 30!
Yes, well, I just had the opportunity to "jump" around various projects, and in general, I can also say that it is not necessary to take part in so many projects; I do not want someone to misunderstand me. Sometimes, for example, our cooperation with Digiforma shows that the application is just getting bigger, new modules are added, and you can jump from one thing to another in one project and learn new skills so much. So sometimes it is like that, or you have a chance to work on different projects. But in both cases, you still grow.
Professional experience in Full Technology Stack
Therefore, I can say that I have seen many good and bad solutions in various technologies, and thanks to this, maybe I know how to approach many topics, and I can safely call myself a Senior.
However, I think that it is also a misconception that the Senior is a person who knows everything because I still learn a lot, but let's say that I can find solutions mostly myself. So I don't need someone who stands over me and has to explain some things to me. And this is natural when it comes to programming - the more you know, the easier it is to learn new things later.
And the more you learn, the more you earn! Hahaha!
Yes, obviously! ;)
But we also need to say another important thing, that no matter what level you are at, it's okay if you ask others for some help sometimes. Even if you are a Senior - it is an excellent opportunity for development when we participate in various meetings and conferences and share our knowledge with others. That's what creates strong functional programming developers.
Yes, of course. In IT, you have to get used to the constant feedback loop - in the code review process, we go through such feedback every day, and the Senior also goes through it.
Can we say that you are not only a Senior Elixir Developer? Because you are actually a Full Stack Software Developer, right? So apart from Elixir - what technologies do you use?
Mostly React. I've also had the opportunity to do some coding in React Native, but it's pretty much like React. And here's another good question: Can you say that someone who is a Senior on the Frontend can easily switch to being a Senior on the Backend?
And here, I would say NO because both sides structurally touch different things. A subset of what belongs to the Backend, I think, is a bit larger than the Frontend side. Of course, you can go from one side to the other or get to know both sides, but you must take into account that the transition from Backend to Frontend and from Frontend to Backend will not be as simple as from one language to another, just on the Backend development side, for example.
Fullstack Software Developer - is it worth it?
I am a Fullstack Software Developer who is more oriented to the Backend. I have always worked more on the Backend than on the Frontend. But it seems to me that if someone wants to give as much value as possible to the project, it is good to go towards Fullstack, even if it would be at the expense of one of these sides. So, if you feel better on the Backend side, but despite that, you do a bit on the Frontend side, it seems that you give the most value to the team and the project.
What would it be if you were to advise or convey one thought to Senior Elixir Developers? Do they have any particular problems they face? Perhaps thanks to our recruitment processes you already know this group better. So what tip would you give them?
This is not a simple question. But maybe, I could first say about what Seniors most often expect (apart from adequate salary, of course).
They want to have enough influence, to be heard, so that their point of view is taken into account and that they work with the technologies they like. It happens that someone talks to us during recruitment because they think Elixir will be the technology of the future and thinks it is worth investing their time in this technology. Sometimes they consider changing their job because they work on projects that cannot use Elixir language, and project management is unsatisfactory. It seems to me that due to their knowledge, Senior Developers just want to be able to work in great technology and have an impact on how the project will proceed, as well as make key technical decisions.
From Junior to Senior
What's it like at Curiosum? How many Elixir Developers do we have? Is there the opportunity that we will soon have more of them as well?
Now we have 14 developers programming in Elixir. At the moment, it seems to us that we have a fairly efficient process that guides even Juniors through our internal services & projects, in which we try to maintain very good code quality and somehow challenge them with tasks that are not monotonous and give them technical concepts. So that they can try different things; as a result, people who are just starting at Curiosum can firmly enter this technology in a fairly short time and gain experience in various projects, and thus - bring value to our commercial projects faster.
Quite a repetitive process is that people who come to us as Juniors can work on the project after just 3 months without losing quality.
But, of course, when it comes to the projects we run, in principle, there is an active Senior Elixir Developer in each of them. We are currently running four major projects:
- Digiforma, which we have been running for the longest time,
- Stakester, which is also a long-term project,
- One project which is in the MVP phase,
- One project in which we are doing consulting, i.e. we help in appropriately structuring the project, or we cooperate with some more significant challenges in this project.
As CEO of Curiosum - what are your goals for our company?
We started this company as a software development team that focused fully on Elixir (so it was just backend development), and here we were probably pioneers in our Polish market regarding this technology. Of course, some companies had departments operating with Elixir, but we started this company with the idea that we wanted to focus on Elixir technology.
The business value of Elixir
And this is still our business core - we invest heavily in this technology. This is why we are delighted with the latest results of the annual Stackoverflow survey, where Elixir and Phoenix appear as the technologies most liked by developers because it tells us that we are going in the right direction. However, our goal is to be one of the most recognizable companies IN THE WORLD, which provides products created in Elixir & React.
This is what we will definitely focus on in the coming years. We want to deliver business products with a solid understanding of their needs, supported by strong functional programming developers with solid code design and engineering practice.
Thank you so much, Szymon. I hope we inspired some people to try Elixir programming, and we convinced Seniors that we also have a place for them at Curiosum. Find Elixir Developer jobs here.