This year I’m graduated from Bachelor Degree (in computer science) from France (not really a bachelor, the exact term is “Licence Professionnelle”, but it’s pretty similar)
During my schooling at University, I learnt Ruby (and RoR) at home (we don’t learn Ruby at University, it was Java, PHP, Js etc.), and ofc over time I read a lot of positive reviews toward Elixir in the Ruby community.
That’s why I want to learn Elixir and especially FP programming in general, I like the concepts around this paradigm.
This year, I’m not looking for a job, I want to learn FP/Concurrent programming with elixir, but also Python and Maths.
But for the next year (September 2020), I will seek for a job to have professional experience.
The problem is that there isn’t a lot of Elixir jobs in France… It’s always PHP job offers or Java.
I want to have experience in FP because I think that if I start to be used to OOP paradigm, it’s not good to constantly pushing the opportunity to learn FP, it’s like procrastination, when you start to procrastinate it’s hard to go back and stop the habit.
The only opportunities are in Paris and it’s really far from my house… But I really want to learn elixir
So, do you think if I choose to stay in my area and find a job in PHP (or other language) it’s still useful ? or should I move ?
Is PHP experience could be benefit for learning Elixir in the future ? This raises a lot of questions in my mind
PS : I’m not sure if it’s the right section to post this topic
Good for you that you jumped the shark to learn FP! As I guy who was 14 years neck-deep into imperative / procedural / OOP languages (C, C++, Java, PHP, Ruby, Go) I can tell you that learning FP is very, very worth it. It will make you a better programmer.
As for job, do not despair! Here are some links for you:
Working as a professional programmer is quite a bit different than university and side projects. I would say find a job using a language you are most comfortable with. Ideally you can find a job where they are using some best practices, Continuous Integration, Agile, etc. Get comfortable with the processes.
Some good questions to ask while interviewing.
How is the software deployed?
How long does it usually take for a PR to make it to production? anything over a few days is a warning sign.
What is the planning like for new features, how are new features decided on?
How many people will be on your team? Is there a project manager? a product manager?
Who will you report to? An engineering manager? CTO? one of the managers above?
What’s the longest tenure on your team?
What is the on-call schedule like?
How do you document your code?
Once you are comfortable, start pushing Elixir Maybe a new application will come along that is a good fit for Elixir.
It’s also much easier to find jobs once you have some professional experience.
If it is experience that you are after, you could contribute to one of the open source elixir packages. There’s not a lot of handholding, (but then again, what job has a lot of handholding?) so you’ll be learning on the go. Plus, reading quality code is arguably just as important as writing code, so having a good codebase to grok is great too.
Not everyone is in the position to move. Sure, if everything that’s important to you in life is your job, then that’s fine. But there are people who have family, friends and a special connection to their home. Demanding those people to move just because the European tech industry is so much behind is kinda wrong.
Since he didn’t talk about his personal life preferences, we can just assume. I for my part assume he doesn’t want to relocate his whole life for a job that pays him for a bit of time and then let him go for some other people (let’s face it, that’s how it works these days).
I am not saying you demand it. It’s my observation that the tech industry demands it. For a job that can be done from anywhere with an internet connection.
PHP experience won’t be of much help, but IMHO you should pursue first a job in accordance with your diploma. Any experience is good experience in the beginning, and you will be able to change path later if you don’t like what you get to work with.
Also, it’s always easier to look for a new job while employed, so again, you shouldn’t feel like you have to find the best job right away as this could put you into a bad spot. Whether you have to move or not from your area is your choice to make, but if you like it where you are you could try finding a programming job there, and if you don’t like it or get bored with it after a while you can still decide to either move or go online. Personally, I moved to Paris at first to get a job in a field and language I dreamed about, only to find out the pay was bad, programmers were abused and life was expensive. Paris has that advantage that you can find a programming job really quickly if you need to, but don’t expect to be treated nicely because of it. Especially SSII, avoid those if you can, or use them (as they use you) to learn whatever they offer and you fancy, then move out. I ultimately decided to return to my region, and because there is no work there I started coding in PHP as I had an opportunity online. It’s not about liking the language, it’s about putting food on the table, and affording the table to begin with
Thank you for your advices and links I will bookmark them.
Yes, I imagine that professional work is different from University, I take up your questions list to ask while interviewing
Between Bordeaux and Nantes (Charente-Maritime)
I like the idea of reading quality code of open source packages, but I’m not ready yet to contribute to one of them, I still beginner at the moment, but maybe one day
Yes, to be honest, I face to a real dilemma, balanced between the desire to learn new things and to stay in my friends/family’s area (or not too far). I need to take some time to make the right decision…
I hope elixir will become more famous
I will check
Yeah, I heard and read a lot about SSII, it seem that a lot of people tends to not recommend to go in.
Paris is really special, I think it’s the same in every capitals of the world, there are different from other places. Paris is good for visiting or eating in good restaurant, but Parisians seem to be less kind/likeable (no offense to Parisians x) that just my impression)
During my last year at University it was in “alternance” (I don’t know if it’s the good term in English) 2 weeks in University / 2 Weeks in internship, I worked on Wordpress (I dev some plugins during this period) and because of we had a lot of Homeworks to give back to University (team projects) I didn’t have a lot of time to learn new programming languages, that’s why I asked myself if it’s good idea to go for PHP (or others) to avoid loss of time…
So thank you thank you everyone for all your answers, I see more clearly in my choices (is it a correct sentence ?) I mean I understand better the path to follow
enton has some good advice but I would add a bit more.
This is language agnostic advice but my suggestion isn’t too look for a job doing Elixir per se. Dig into finding a good company where you can learn a lot. Picking a company purely for the technologies doesn’t always turn out well. It’s a factor but more important is finding somewhere that has a good work culture.
Look for a team who is smart, solving problems you are interested in (regardless of language) and has a good culture. This means encouraging learning and growth has a mentorship porgram and/or friendly people that will help you learn software well.
The team is more important than language. If you join a good team you will be setting yourself up for future success. A lot of solid programming techniques, practices and challenges are language agnostic. Learn a ton and when you feel comfortable and see a niche that Elixir could fit try to propose it on a project. Tehy might pick up Elixir, they might not. You can continue to learn and use Elixir on the side and be a strong advocate. There are real risks and situations where introducing a new language won’t make sense. If after a few years you really want to go into prod with Elixir and you haven’t found a place for it at your current company that would be a good time to start re-evaluating roles at other companies.
For now your highest priority should be optimizing for growth and learning in the software field. Language skills can come second.
As for me, to really grok the benefits of FP, is to have an earlier experience in OOP and understand the challenges of building a large system with components that are mutable.
Understand and apply SOLID principles. The Single Responsibility Principle is for me the most important principle to understand in programming and you will become a better programmer when you apply it. When applied extensively, OOP codebases tend to have these classes containing just one function; FP then starts to make more sense.
Forget about all these design patterns that we learned at school; this is bullshit and you won’t become better. Rather understand the motives behind the patterns, then you will code these patterns naturally without even knowing it has a name. Like, why is a Singleton in 99% of cases a bad idea (high coupling)? What is the Strategy pattern trying to solve (open closed principle through dependency injection)?
Understand the benefits of declarative vs imperative coding (understand that code is for humans). You can code declaratively in OOP, but in FP it is just natural. Read about clean code. TEST.
This is what I would tell myself if I could meet my past-self 10 years ago; I was an amateur out of school (not supposed to be; school sucks) and have been for so many years until I took a break and read about all these important concepts and practice those on pet projects.
So yeah, an experience in OOP is not wasted at all. As long as it is not Java
The reply from @agundy is spot on. A language is just a tool to solve a problem. Engineering discipline, approach & culture are way more important for a rewarding career in software development. A good team that understands engineering trade-offs and embraces critical thinking will naturally select the best language and platform for the problem at hand given the context of the decision (e.g. business constraints, team capabilities, as well as technical problems to be solved).
Once you have a reputation for solving problems, anything is possible.
This week it’s a Chris & Desmond episode! We kick things off by hearing all about Desmond’s latest project – Hire an Elixir Developer – a job board to help companies attract Elixir talent that’s launching soon…
Whether you’re a recent bootcamp graduate or a veteran programmer, it’s often difficult to find a job you love. If you’re unhappy with your current work opportunities or are having trouble finding your first or next programming job, this book will walk you through the process of not only find a job, but a job you’ll love going to every day.