Getting to know - Sophie DeBenedetto
Welcome to another edition in our getting to know us series. Getting to know us consists of articles and interviews about a wide variety of people in our ecosystem, with the main goal of making their work with BEAM technologies visible. Some have been around a long time, while others may seem new to you, but they all share a love for this ecosystem. If you know of interesting work that deserves more visibility, let us know at email@example.com!
Sophie DeBenedetto is an engineer at GitHub, co-author of Programming Phoenix LiveView and member of the Erlang Ecosystem Foundation. She graduated from The Flatiron School where she was also a teacher. Her involvement in Elixir School has been very important for its growth and her passion for programming education has rubbed off on many people. Today we get to know her.
How did you decide to learn programming and which were your first steps on it?
I have a non-traditional background in Tech. I attended a programming bootcamps seven or eight years ago, called The Flatiron School. It was a three month in-person immersive program. Originally, I decided to do it because I graduated with a history degree from undergrad and there aren’t very many history jobs. And so I started to dip my toes into a little bit of programming by taking some free courses online and I learned a tiny bit of Ruby, HTML, and CSS. As soon as I started the in-person program, I just completely fell in love with coding. I became obsessed with the learning process, with the process of solving these puzzles, and I just couldn’t stop! When I graduated from the program I started working at that school. I was writing curriculum for them and I was a teaching assistant. Then I became a full-time instructor.
After a couple of years I moved on and took a full-time engineering role. I still felt so connected to the school that I ended up going back to work on their engineering team a few years later. Later, I left the individual contributor track and became an Engineering Management there. Then, when I decided that I wanted to get to that next level, I started looking for a bigger organization to see what that experience would be like and what kind of things I would learn. That’s what brought me to my current role at GitHub.
What advice can you give for those that are taking their first steps in programming?
I would definitely tell them to focus on something that really interests them and focus on that thing. One thing that I see a lot in my students is that they feel very pressured to skill up in many different areas. They feel they have to learn this web framework and that web framework because a friend of a friend mentioned to them that they had an interview that focused on, for example, Django. There is so much out there but what has worked for me is just sticking with something that I like and care about. So it might be a side project, it might be a blog post, it might be reading a particular book. It’s different for everyone. But if there is something that you enjoy and that you are finding to be rewarding and valuable, it will benefit you to just stick with it.
When did you meet Elixir and BEAM ecosystem and how did you decide to learn it?
I first heard of Elixir through a colleague of mine, Steven Nunez, while I was teaching at the Flatiron School. He was a senior instructor there at the time. We were not teaching Elixir, but he got interested in it and was really excited about what you could do with concurrency. He was so excited that he just started talking about it constantly and telling students and other teachers about it. And that is what piqued my interest. I started learning on my own by reading some of the lessons on Elixir School. I did a couple of side projects, and I wrote a few blog posts. It started as a hobby, something that I would do occasionally because it was interesting.
When I eventually went back to the engineering team at the Flatiron School, my same friend and former co-worker was there as well and he had been working very hard and successfully to introduce some Elixir into that organization. That was my first chance working with Elixir and that is when I really fell in love with it. I think in part it is because there are so many things about Elixir that make it a pleasure to write, work with and learn about. But it was also because of the community within The Flatiron School at the time. It was a tight-knit group of people where many of the engineering team had gone through the school as students like me. We were all really supportive of one another as we started to learn this new technology and implemented it internally.
Which advantages have Elixir and functional programming over other languages?
I think that when people first start to learn about Elixir, they are usually excited about the concurrency, the fault tolerance, and the way that it can handle massive scale, and those tend to be the things that are talked about most often when we talk about adoption. But in my experience, I think the reasons why I have seen adoption be successful, especially in smaller teams and smaller companies, is not so much because of those features. It is because of some of the other features that people do not talk about as much. It’s the ergonomics (like pattern matching and pipes for example) of Elixir that make it really fun and enjoyable to write, and it’s the fact that the community is really supportive and welcoming. I think Elixir has a pretty gentle learning curve for people coming from other backgrounds. Its really easy to get excited about Elixir as a developer, to start solving problems really quickly and efficiently, and once you start stacking up those wins you get hooked on learning more and building more. A lot of times you don’t really need to reach for Elixir for some of those most powerful popular features like concurrency fault tolerance. But your average web app will still really benefit from Elixir because people like working with it, they are very productive when they work with it and it lets you write really clean testable and maintainable code. Then you get concurrency and fault tolerance for free, so we’re not going to complain about that!
Let’s talk about Elixir School. What is this project about? How did you decide to join it?
I am really happy to talk about Elixir School. I am not as involved with it as I used to be, so I want to give a ton of credit to Sean Callan who founded it and to all the other people around the world that contribute to it now. Elixir School is so great and it deserves attention, contributions and resources.
Elixir School is a free open source online Elixir curriculum, and I just cannot emphasize how amazing it is that this even exists. I used to be paid full-time to write programming curricula, and it was a very hard job to do. This is a robust, very comprehensive body of lessons that I think you could pretty much learn most of what you need to know to really get started with Elixir professionally. It was just created by a group of different contributors around the world for free, who collaborated using open source tooling on GitHub. So the fact that these lessons even exist -and that they are so robust and clear and helpful and comprehensive- is truly amazing.
I definitely recommend anybody who is earlier on learning Elixir to go through some of those first sets of lessons. It gives you all the basics that you need. There are introductory and advanced topics that I often go back to again and again to reference. If anyone has an idea for a lesson you can open a GitHub issue and see what people think and if they want to incorporate to improve or edit a lesson. It also has a Blog where you could submit posts. One really rewarding experience I’ve had working with beginners was supporting them to contribute to the Elixir School blog and then seeing them get the victory of posting something that contributes to open source by sharing what they have learned.
I have been co-writing it with Bruce Tate and I am very grateful for that because Bruce is an expert technical writer. I have learned a lot about Phoenix from him too because he is also an expert on Phoenix. We have actually been working on it for over two years. For those who purchase the eBook, we will continue to release new versions as technology evolves. And in each case, they’ll get the new version for free.
This book has helped me understand things about Phoenix that I never truly understood before. Especially around the topic of the core versus the boundary layer of your Phoenix application. It can actually be very difficult to understand and even for people who have a lot of experience in Phoenix development. It has been really rewarding seeing everything that you can do and exploring all the nooks and crannies, especially the new LiveView features as they come out. I have also become the editor of the Elixir series for Pragmatic Bookshelf, which basically means if you have an idea for an Elixir book, please contact me!
Do you think functional programming could become an alternative to mainstream languages in web development?
I would say that functional programming is already a compelling alternative to object orientation, maybe less so in the web development space, but all you have to do is attend Code BEAM in November in San Francisco to see the scale of the impact that functional programming in general and the BEAM specifically has within our industry. I do really think that Phoenix and LiveView are going to become alternatives to some of the more traditional web frameworks like Rails. This is partly because Liveview solves many complex single page application problems. I would say 98% of your daily web application needs.
Are there any projects being developed at the moment that you think deserve special mention?
I am on the program committee for the Code BEAM America conference that is coming up in San Francisco in early November. We have a really great and diverse lineup from people all over the BEAM community. I definitely recommend that people attend! If you can not make it in person, we are going to have some virtual offerings. I am also teaming up with my friend and colleague Steven Nuñez to teach a virtual training, Mastering LiveView, for the Code Beam conference.
Why did you decide to join the Erlang Ecosystem Foundation, and what do you like about working with the community?
I think the fact that the foundation exists is really incredible. I have never experienced something like this where there is so much attention given and institutional support created around the growth of Elixir in Erlang and the BEAM community. Seeing that we are able to support our various Working Groups and their different areas and push things forward, I think it really speaks to the nature of the community, which is very dedicated to growth and to supporting its members. It also speaks to the future direction of BEAM languages, which I think looks bright, in part because of the support the Foundation can provide. So the fact that this organization exists is amazing to me. When I was given the opportunity, I definitely jumped because I wanted to continue to support these languages and frameworks.
We’re eager to hear your stories, please share them at firstname.lastname@example.org!