dopomecana

dopomecana

How to become a senior in elixir?

The title of this topic may sound silly at the first glance. But why I trying to ask you guys is how to go to the next level?
I am currently working for 3 years and a half at company and I don’t know how to evolve more.
When I started elixir I was working with 2 teammates but there was not much guidance from them and since last year I am alone on the elixir project and I feel like I cannot surpass a certain level.
I had a few interviews but I managed to fail almost all of them.
I like learning, in general but without guidance related to what a interviewer wants from you at the interview and then later on the job it’s hard to go to the next level.
I would love to go to a new company were I can level up my knowledge while keeping at least the same salary.

The elixir community it’s great, and I hope I will get some good answers from you guys that will help me go forward in assessing my level and formulate a plan for the next step.
Also this may be helpful for others like me.

Thank you,
Michael

Most Liked

dimitarvp

dimitarvp

I am completely with @jonas_h here – failing an interview means almost nothing. At 41 y/o and being a programming polyglot with a very successful career, I still failed at least 5 Elixir and 3 Rust interviews in the last two-three years and all except one I “failed” simply because people expected and wanted another kind of human character as a colleague and not mine (the so-called blanket statement of “a cultural fit”), or, very often, they were not thrilled that I am not super-duper enthusiastic about their company – this you will likely go against, a lot. There was only one interview I actually failed on technical merits and I still slept quite well that evening because it was an algorithmic problem that I haven’t stumbled upon in like 10 years and because yeah, should I sleep with the “How to beat the coding interview” book under my blanket for my entire life?

Still, your situation gives you two potential vectors for improvement:

  • Diligently write down all the technical assignments you were given and chase them to perfection on your own time, post factum. If the assignments were confidential (they almost always are) and you can’t just post them on your GitHub then break them apart on smaller tasks and ask the community (ElixirForum, Slack, Discord) whether your code can be improved. Pretty sure that alone will get you quite far.

  • Get better at interviewing. First step: understand that people usually don’t care about what you can offer. They say they do but they are looking for certain keywords while you are chatting (plus trying to evaluate your character and/or look if you are excited). Instead of playing a guessing game, try to extract the following piece of information and to project the following message: “you guys tell me what you need and I’ll give you an honest answer if it excites me”. Mind you, don’t say that directly. :003:


Here’s a cliche: do many interviews. A lot of companies will waste your time and never even give you a single word of feedback (“ghosting”) so, you know, don’t lose your sleep over the fact that you could waste a few companies’ time. Open that camera, put those headphones, put a nice shirt, be well-fed (being grumpy because of hunger is real), and do that interview! You’ll learn a lot.

As for Elixir coding in particular… well, I am one of the people around here who absolutely loves helping people improve their code. Post a small GitHub project and ask for feedback. You can mention or DM me directly as well.

But if you need an entirely new set of problems to work on, I might not be the right guy. Hopefully others can chime in on that.

31
Post #6
jamesarr

jamesarr

Yeah, I’m mid-50s and find it ridiculous how some companies perceive themselves.

“Are you on the verge of curing all cancers?”
“No.”
“Are you about to crack cold fusion?”
“No.”
“Well, what do you do?”
“We’re the 21st century equivalent of someone selling fill dirt, but it’s digital fill dirt. "
“Oh, okay. That’s fine with me; I can help you with that.”
“Well, you don’t seem very EXCITED about selling the dirt…”
'That’s because I’m a reasonable person.”

jonas_h

jonas_h

I’m not proficient enough in Elixir to give you specifics, but how about some general advice?

It sounds like you’ve hit a plateau, and the solution is the same be it weight lifting, programming or your career. The important thing is to switch things up. Don’t create the same kind of solutions to the same kinds of problems over and over, but challenge yourself by exploring new domains or new styles. For instance, if you’re not comfortable with OTP now’s a good time to time to work on that. Or if you’re only creating web backends, try out some AI problems.

And don’t take interview results as a sign of anything. Interviewing often has nothing to do with the work you’ll do, and in many cases it’s just rolling dice or having to spend a lot of time on developing skills that have no relevance to the work you’ll be doing later. Getting good at interviewing is a different thing than getting good at Elixir or getting good at software development.

Oh and some practical advice for you: start to read code that others write and go through some books that might give you a different perspective. Try to put it in practice, and always ask yourself if there’s a way you could’ve made it even better.

18
Post #4
LostKobrakai

LostKobrakai

The resources I’d suggest for learning how to design better with processes in mind are Elixir in Action, Building Resilient Systems with Stacking, The Hitchhiker's Guide to the Unexpected.

I don’t think coding challenges, like the ones found on exercism, do a particularly good job at teaching those things. This is mostly because the benefits are hardly in the ballpark of “code up a working solution”, but much more in the ballpark of “make it work (long term) under real world conditions where things will fail”. Many of the gained properties of a well designed system of processes are really tricky to “prove” by simple unit tests.

The only place I generally see where traditional coding challenges can benefit from using multiple processes is by making things parallel – for that Task.async_stream is usually plenty enough though.

davearonson

davearonson

Getting more Elixir experience with feedback will help immensely with your confidence, credibility, and ability to answer interview questions. A few ways to do that:

  • Find an open-source project, in Elixir, that gives decently thorough feedback on pull requests – that last bit will be difficult and tedious to check, but at least narrowing it down first to Elixir projects will help, and maybe some people (not me) can make recommendations.

  • Do the exercises on Exercism.io – and ideally also ask for mentoring there. Specifically ask your mentor on each exercise to be thorough – rather than a cursory “looks okay to me”, ask them to tell you what’s not quite “standard” idiomatic Elixir, what could be improved, what might be a more appropriate Elixir (or for that matter Erlang) function to use in various places, etc. If your mentor is very patient, perhaps even go “above and beyond”, extend the program into other related functionality, including writing tests for that, and ask your mentor for feedback on your additions.

  • On a related note, to get better at testing if you think you need that, when you download an Exercism exercise, don’t look at their test suite yet, just the README containing the “requirements”. Write your own test suite first, then “compare and contrast” with theirs, and try to make the code pass both yours and theirs.

  • Penultimately, the advice Bryan Liles gave me when I was trying to break into Ruby: blog! Yes you may be fairly new to it but there are others even newer, plus you may happen to stumble across, or even think up on your own, something particularly interesting.

  • Lastly, take that “educate the public” idea to the next level and speak at conferences. Again, you don’t have to be some big expert, you just have to know a little bit more than the audience, enough to make the talk worth their time, and then be able to convey that extra bit of knowledge to them. This has extra benefits of name recognition, cachet, and you might even get free (or at least tax-deductible, if you’re a freelancer) trips to interesting places. If you aren’t already confident of your public speaking skills, I recommend first Toastmasters International, and then specifically for conference-type talks (which are much longer and usually involve more visual aids than a typical Toastmasters talk), “TED Talks: The Official TED Guide to Public Speaking”.

Where Next?

Popular in Chat/Questions Top

nur
https://e.planaria.network/stack.png https://e.planaria.network Build a NoSQL DB, Build a Relational SQL Database, Build a Graph Datab...
New
zeroexcuses
Besides Basic types - The Elixir programming language are there any other well recommended “elixir by example” style resources / books ? ...
New
New
loganhelms
A while back, I read a great book by Luis Atencio titled, Functional Programming in JavaScript. In section 7.3, he discusses memoization ...
New
woohaaha
I’m coming from Ruby and Rails. I have read some Elixir and Phoenix books. They shed a lot of light about building applications in Elixir...
New
boddhisattva
Greetings everyone, At my current workplace we're evaluating different ways of building a microservices architecture for some parts rel...
New
Santheepkumar
Hi all, I am a Fullstack JS developer for last 2 years. I need a good guide to learn elixer. Any suggestions please
New
Fl4m3Ph03n1x
GenStage and Flow resources? I have been hearing about GenStage and Flow, a tool built upon it, for quite some time. I understand it allo...
New
Nopp
Hey guys and girls, i am completely “new” to programming, recently played a bit with Python, Ruby and PureBasic, but i want to try somet...
New
logesh
Could someone provide a learning path for functional programming for who came from oops background.? Thanks in advance
New

Other popular topics Top

shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
977 41022 311
New
sergio
In Ruby, I can go: User.find_by(email: "foobar@email.com").update(email: "hello@email.com") How can I do something similar in Elixir? ...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New

We're in Beta

About us Mission Statement