Coming out of a PhD as a good Elixir developer

Hi folks,

This post is just to have a chat and share some opinions.

I’m one of those people that liked the idea of staying in academia and working underpaid to do research. I’m still enjoying it, but I understood that I’d like to move on from here after it finishes, and get a job in the industry. The problem with people coming from PhD is that usually they don’t have real “work” experience to be considered senior, but also not so young and unqualified to start as junior.

This 2022 was my first year and I found out quickly that I can have a lot of free time some months, and other months papers deadlines and what not just keep piling up. So, when I manage, I’ve been working with Elixir, Go and Rust for my hobby projects, cause they are my favorite languages, but I’d really love to work as an Elixir engineer after my academy journey.

I’ve been thinking that I should dedicate my free time of the following years (two) in uni to just making fairly big projects in Elixir. I’m afraid, though, that it will never make up for the lack of real companies on my curriculum.
Perhaps having a good portfolio of Elixir projects could help for a freelancer/consultancy type of work, where I go help companies. In that case I would also have the problem of finding clients, so I need to start networking a lot and should focus on this as well during the PhD.

I’d like to know more from you, what you think about going from an academic position into the industry, but also from who actually transitioned from the academy into an Elixir job, and how did you do it.

1 Like

Why not contribute to Elixir while doing PhD?

Checkout, what Jose Valim has in mind for future of Elixir, for instance his vision on Set Theoretic Type and Machine Learning:

He has formed a team to research Set Theoretic Type as well as, to get them implemented for Elixir!!

He also asked for opinion on Live Programming Ideas:

Coding, Example, Documentation & Testing all in same place next to code!!

Most of the ideas he mentioned are research based. And if those researches materialises into something solid, Elixir will enter a new realm of Developer friendliness!!

So bye bye Static Type Checks, and linear Code - Build - Run - Debug cycle!!

Perhaps you can help where we can’t even think how to do it!!


P.S. I am really excited to see how the Real Time Coding will be implemented!!

6 Likes

Few other things you can explore:


  1. GraphBLAS for Fast Graph Database
    “GraphBLAS provides a powerful and expressive framework for creating graph algorithms based on the elegant mathematics of sparse matrix operations on a semiring.”

https://redis.io/docs/stack/graph/


  1. CRDT - (Conflict-free Replicated Data Type)

Using this to not only do collaborative editing, I was thinking if it’s possible to have seamless deploys to running Elixir application, i.e. better or stress free hot code reloading.


Horde. Horde is a distributed supervisor and a distributed registry, built using the magic of delta-CRDTs.

Introducing Horde – a distributed Supervisor in Elixir


  1. WebRTC

Peer to peer communication between browser is possible with WebRTC, however when clients are hidden behind NATs, a server is required for signalling.

Perhaps a STUN & TURN server implementation in Elixir, for peer to peer communication.

https://web.dev/webrtc-basics/


  1. Resumable File Upload & Downloads:

For instance Tus is great for resumable file upload similar to multipart file upload for s3 object store!

Torrent is great for resumable file download, so something like that for elixir.


  1. Peer to peer secure file transfer

Like Magic Wormhole or Croc, they use PAKE for end to end encryption of files.
We have to use a Relay server, similar to TURN server in WebRTC to send file across.

They are command line tools, perhaps a web based tool would be great!


  1. Cross Platform LiveView core

LiveView code that goes into the front end, has been reimplemented for Swift, Android.
And they are planning to separate the core into Rust, so that it can be used across platform.


  1. Web Authn & Fido 2

It would be awesome to have biometric authentication along with password auth on Phoenix apps.

Maybe even YubiKeys.

6 Likes

Woah, fantastic collection of projects! Thank you I will take a look. :grin:

1 Like

I am curious why you don’t want go into your phd specialty at applied companies, such as a distributed systems expert going in to distributed system companies?

I think it’s mainly for 2 reasons. The first one is more personal.

As a student I worked on a lot of hobby projects changing languages and frameworks everytime to try new things. I think it made me a better programmer but now I want to become effectively “senior” in at least 1 programming language (mainly Elixir, but also Rust).

The other reason is that looking at jobs I kinda lost confidence. From where I’m from the majority of the job market is polluted by body rental companies where they hire anyone and they throw them on projects for other companies, while under-paying them. I started to look at startups and remote companies but everyone wants senior software engineers.

I still have years to go before getting out of uni but at least I wanna be able to look for good positions as a programmer besides my field of expertise.

3 Likes

I was curious about people like this - https://informal.systems/ - but those companies seem to want a PhD in their exact topic.

1 Like

Better than company experience is to have an actual app running in the real world that people use every day.

If you approach a local business, e.g. a food takeaway, and offer to improve their website or build a simple ordering system, they are likely to agree, especially if its free.

I did this a few years ago - I made an ordering system for a burger-n-chips place on my street. I did it for free. The hosting cost me $20 per month but that is a small price to be able to point to https://burgers.ie and say “I made this, by myself, at home”.

In my case, I copied a lot from the “Crafting Graphql APIs” book.

Before I had this site running, I could not get an Elixir job.
With this site running, I was able to get job offers.

TL;DR for free, make a real app for some honest hardworking business. This is 100x better than normal industry experience.

6 Likes