In this episode, we talk about how frontend development has changed over the past 20 years, and how to keep on learning new skills, with Crysfel Villa, Senior Software Engineer at InVision, and backend lead at Coding Coach. Crysfel talks about how he navigated his english language barrier learning to code 20 years ago, how putting himself out there through blogs and remote and on-site teaching led to the most opportunities, and how he ended up diving into being a backend lead, even with his primary experience being a frontend developer.
[00:00:05] SY: Welcome to the CodeNewbie Podcast where we talk to people on their coding journey in hopes of helping you on yours. I’m your host Saron, and today we’re talking about how frontend development has changed over the past 20 years and how to keep on learning new skills with Crysfel Villa, Senior Software Engineer at InVision and backend lead at Coding Coach.
[00:00:25] CV: This whole process of building software, it’s now more complex than before. As I said, before it was just a file and that’s it. Now we need to do all these things.
[00:00:35] SY: Crysfel talks about how he navigated his English language barrier, learning to code 20 years ago, how putting himself out there through blogs and remote and onsite teaching led to the most opportunities and how he ended up diving into being a backend lead, even with his primary experience being frontend developer after this.
[00:01:02] Heroku is a platform that enables developers to build, run, and operate applications entirely in the cloud. It streamlines development, allowing you to focus on your code, not your infrastructure. It also lets you use the most popular open source languages to build web apps. Also, you’re not locked into the service. So why not start building your apps today with Heroku?
[00:01:25] TwilioQuest is a desktop roleplaying game for Mac, Windows, and Linux to teach you real world developer skills. The TwilioQuest Program was created in secret to train an elite group of leaders to combat a shadowy organization known only as the Legacy Systems. Take up the tools of software development, become an operator, save the cloud. Download and play TwilioQuest for free at twilio.com/quest.
[00:01:53] DigitalOcean offers the simplest, most developer friendly cloud platform. It’s optimized to make managing and scaling apps easy with an intuitive API, multiple storage options, integrated firewalls, load balancers, and more. Get started on DigitalOcean for free with the free $100 credit at DO.co/codenewbie. That’s DO.co/codenewbie.
[00:02:17] When you need to focus on building, do you want to get bogged down by your database? MongoDB is an intuitive, flexible document database that lets you get to building. MongoDB’s document model is a natural way to represent data so you can focus on what matters. MongoDB Atlas is the best way to use MongoDB. It’s a global cloud database service that gives you all of the developer productivity of MongoDB, plus the added simplicity of a fully managed database service. You can get started free with MongoDB Atlas at mongodb.com/atlas.
[00:02:55] SY: Thank you so much for being here.
[00:02:56] CV: Thank you for having me. I’m so excited.
[00:02:58] SY: Wonderful. So you’ve been coding for a pretty long time now. How long has it been?
[00:03:03] CV: It’s been about 20, 22 years probably.
[00:03:06] SY: Wow! Good for you. And you’ve been remote teaching for a long time. How long has it been since you’ve been remote teaching?
[00:03:13] CV: I started teaching since about 2010. So that’s about 10 years ago.
[00:03:18] SY: That’s also a good chunk of time. How did you end up getting into code in the first place?
[00:03:21] CV: It was when I was in high school. One of my friends approached me and he basically said, “You know what? There’s this thing where you can build your own website and your own pages.” And at the time, I was like, “Wow! That’s amazing.” And then I started searching like, “How can I build a website?” It was a bit challenging because at the time I didn’t speak any English at all. So finding information in Spanish, it was a bit difficult and challenging. But at the end of the day, I figured out how to code in HTML. And at the time, we didn’t have CSS. We had to put all these styles in line and it was kind of like a mess, but it was fun.
[00:04:03] SY: Tell me more about the language barrier because I can imagine that being very difficult. Definitely all the resources I know are in English and I’m assuming back then there probably weren’t that many great translation tools to translate things from English to Spanish. So how did you navigate that?
[00:05:02] SY: Yeah. So what were some of those early websites that you built? What did it look like?
[00:05:07] CV: This was back in the ’90s. So everything it was just like GIF, like images moving around and you can add text to your pointer and like text like moving all over the place. It was not great, but that’s the way it was back then.
[00:05:27] SY: Yeah.
[00:05:28] CV: Something very simple. As I said, we didn’t have CSS. We didn’t have any of that.
[00:05:32] SY: What were the websites about? What topics did they cover?
[00:05:35] CV: At the time, I was in the skateboarding community, so I was posting pictures of myself and my friends, but I also, given that I didn’t find a lot of information about HTML and how to build a website, I start like writing down some content and putting out there for other people to learn in Spanish. So I was writing this content as well and sharing the things I was learning with other people through my website.
[00:06:05] SY: And you mentioned that there really wasn’t any CSS back then. So what tools were you using to build these websites?
[00:06:10] CV: I mean, for the layout, I was using tables, like creating sales and growth and all that sort of thing and then we just have inline styles where you would set the font color and that sort of thing, but really it was very basic, like the websites at the time, they were very simple and very just content and that’s it. Nothing fancy like we have today. It was just text and some images.
[00:06:51] CV: That’s exactly right and in there I started learning C++ and everything, but nothing related to the web, to be honest. I was like, “I like to build websites. I like the internet.” At the time, I was like, “Okay, I’m going to computer science,” but I didn’t realize like computer science, it was more about like systems and then building apps and applications and enterprise application, that sort of thing. All I wanted was just to build websites, and fine enough I didn’t learn any of that in college.
[00:07:26] SY: Oh, no. What did you learn?
[00:07:28] CV: Yeah. Basically, we started with C++ and C and learning how to manage memory and like all of this crazy stuff. In my first semester, I was like, “What is this thing?” I have no idea. All these like diagrams with logic and it was very difficult, at least at first.
[00:07:52] SY: Was it interesting?
[00:07:54] CV: Yeah. I mean, not at the very beginning because I thought it was very difficult at first. I even had this class that I barely passed and basically use logic, but it was all in paper.
[00:08:06] SY: Oh, okay.
[00:08:06] CV: I was not coding or doing anything like that. It was more like drawing diagrams and like basically logic. I realized like several years later that this was like the basics of programming. But at the time, I feel very frustrated at first because I was not understanding the logic in itself.
[00:08:27] SY: So did you ever get a chance to go back to building code? You must have since you’re building code right now, but when did you get back to that?
[00:08:34] CV: Yeah. Well, I was like, “Okay, now that I know C, then is there any other language that I can use for the web?” And then I learned that there was this language called PHP and then I was like, “Wow! This is amazing.” You can actually build something dynamic because I mean so far I was just doing HTML and nothing dynamic, nothing with databases, nothing with any of that, just aesthetic websites. Right? So when I learned there was this other language, PHP, I immediately jumped in and I was like, “Wow!” And I had all the knowledge for C and the logic and all that. So it was kind of easy for me to navigate into this new language and all the tools and everything that is related to the backend stuff.
[00:09:21] SY: So you are studying computer science, you’re taking C, C++, but you’re also learning web development and learning PHP. Did you know what you wanted to do professionally with code?
[00:09:33] CV: Not really. To be honest, my idea was just to build websites because that was all I knew at the time. But yeah, I had no idea what I’m doing professionally. I really have no idea. So when I graduated from college, I reached out to a friend and asked him like, “Hey! What do you do at your work? What do you do there?” And then he’s sort of like explained like, “Oh, I work at this bank doing this system for mortgages.” And I was like, “That’s a bit boring. But anyway, that’s what I’m going to do.”
[00:10:12] SY: So you graduated college. What happened next?
[00:11:28] SY: So you’ve been coding for 20 years, and I’d love to hear a little bit about how your career trajectory went for those 20 years. How did you figure out what next job to do? What language to learn? Tell me a little bit about the journey you took.
[00:12:38] SY: That’s great.
[00:12:38] CV: And then I was like, “Yeah. Sure. Why not?” So then I wrote this book in 2013, and then with this book, like money wise it’s not really a good investment, but this gave me a lot of other opportunities. I got reached out by companies from the US as well because of the book, because I was going to some conferences and like giving away books and things like that. So a company from the US reached out to me and they sort of like offer me an opportunity at their company and then I got a work visa to go to the US. So I went to New York for the project. I lived in New York for about five years. Then I moved to Dallas. I lived there for two years. I was also working remotely. And then whenever I was looking for new opportunities, I’m definitely going remote. I don’t see myself going to an office anymore. It’s very challenging, at least to me.
[00:13:43] SY: So now you work at InVision. How did you end up there?
[00:13:46] CV: Well, I’ve been at InVision for the last year and a half, almost two years. It was last year, I was looking for a job, and I was applying to different companies. I spent quite some time researching all these companies because I was only looking for remote opportunities given that I’ve been working remotely for a while. I was in the US. I had a work visa. And I find out that in InVision they had remote opportunities and I was using InVision at the time with different other projects that I had. I did my research on the company and I really liked the product and I really enjoy working remotely. So I was like, “This is the best opportunity for me.” The rest is just history.
[00:14:33] SY: What do you like about working remotely?
[00:14:36] CV: I like the freedom and being able to handle my time, being able to be with my family as well.
[00:14:43] SY: Is there anything that you miss about working in a physical office? Are there any downsides to working remotely for you?
[00:14:49] CV: Yeah. The downside is you need contact with people, right? So in order to get around other people, I usually go to attend meetups and I also signed up as a volunteer. When I was in Dallas, I signed up as a volunteer to teach other people English or programming and that sort of thing. So that gives you this opportunity to be with other people and being involved in the community, and that really fills that need that we all have as humans, right? Being able to hang out with people and talk with other people.
[00:16:05] No one wants to manage databases if they can avoid it. That’s why MongoDB made a MongoDB Atlas, a global cloud database service that runs on AWS, GCP, and Azure. You can deploy a fully managed MongoDB database in minutes with just a few clicks or API calls. MongoDB Atlas automates deployment, updates, scaling, and more so that you can focus on your application instead of taking care of your database. You can get started free at mongodb.com/atlas. If you’re already managing a MongoDB deployment, Atlas has a live migration service, so you can migrate it easily and with minimal downtime then get back to what matters. Stop managing your database and start using MongoDB Atlas.
[00:16:55] SY: So now let’s talk about your teaching and learning remotely. We talked about working remotely. Let’s talk about teaching and learning remotely. What kinds of things do you teach?
[00:17:45] SY: And have you always taught remotely or have you ever done in-person workshops?
[00:17:49] CV: I was doing also onsite training for companies two, three days, depending on the company. So yeah, I have plenty of experience doing onsite and remote. There are some challenges when you’re doing remote training and one of those it’s difficult to see the feedback on the people. When you’re onsite, you can see their faces and their body language and all that. But when you’re remote, it’s a bit challenging because body language is very important. When you’re explaining a concept, when you are keeping all this information, and then you ask a question like, “Do you guys have any question?” And everybody is like, “No, we don’t.” But their body language is telling you that they do.
[00:18:30] SY: Yeah.
[00:18:31] CV: So that’s really challenging when you do remote training.
[00:18:36] SY: So when you think about people who are learning remotely, what makes it hard for them to do that? What are some possible downsides of learning remotely?
[00:18:45] CV: Some of the challenges I would say is when you’re pairing with someone, now we do have tools to share your IDE. One of us can get into the same code base and stark sort of like typing and like programming at the same time on the same file. Right? But this, I think it’s one of the main problems that I’ve been seeing and also when there’s an issue, right? Like something is not compiling correctly and you get a ton of errors and you don’t even know where to look first. And when you’re doing this remotely as an instructor, it’s very difficult sometimes to just look and tell them like, “Hey, can you show me your locks? Can you send me the error?” And as a newbie, it’s very difficult to sometimes find those issues or find where the locks are sometimes even, right? So that’s some of a challenge when you are training people remotely because when you’re onsite, you can right away tell them like, “Oh, you can open this file right here.” Right? When you’re doing this remotely, it’s a bit challenging to sort of like go through the project or the content that you’re providing. Those are some of the challenges.
[00:19:59] SY: What do you like most about remote teaching?
[00:20:01] CV: I like the fact that I can reach the people. Like in other countries, I wouldn’t be able to do that. So I have a couple mentees right now, and these people, they live in Europe and in South America and it’s pretty cool to just connect with these people all over the world and being able to help them in a way that they can improve their lives and they can also learn technology and that sort of thing.
[00:20:33] SY: So if you are a code newbie, if you are a new developer, just getting started taking maybe your first class as a teacher, what do you recommend? Do you recommend they learn from video tutorials? Should they learn from live remote sessions? Should they really try and get an in person workshop? What do you think is the best first step in learning how to code?
[00:20:54] CV: I think the very first step would be videos. You can follow the tutorials and follow the structure and everything and it would be nice to have like a basic knowledge already before going to a mentor then you’ll have like specific questions, right? When you get hands-on project and when you start actually building something, you’re going to get a lot of issues and you’re going to get errors and you’re going to get in trouble. And sometimes it’s very difficult to find the solution for your specific error. So at that point, if you can reach out to a mentor or if you can find someone that can help you out, I think that’s the best because you have a specific question and people are going to be more willing to help you when you have something already, when you’ve been trying and when you’re building something.
[00:21:51] SY: So you are not only a senior engineer at InVision, but you’re also the backend lead at a site called Coding Coach, which is all about connecting people with remote teachers, which sounds like a very good fit for what you do, what you enjoy doing. How did you get involved with working there?
[00:22:08] CV: Yeah. Coding Coach is basically a community that we’re building. We want to connect mentors with mentees, right? So this project was started by Emma Bostian, and I first find out on Twitter. I saw one of her tweets and she was saying like, “Hey, I’m going to build this community to connect mentors with mentees.” She created like a basic landing page to collect emails. And then there was an issue with the part when emails loading like super slow. So I created a PR on GitHub just to the project, just to sort of like optimize that. And after that, I got my code merged and then I sort of like started like, “Hey, what if we do this and that?” And then we started throwing a lot of ideas and then also the community started throwing some ideas out there and we just started building stuff. The platform is open source. It’s on GitHub and one of the goals is just to allow people to participate and to join and collaborate basically on the code base because this is a production project, right? So if you’re a newbie, if you’re starting into the tech industry, this is the perfect opportunity for you to collaborate and to commit to a project that is live on the internet and is serving several users.
[00:23:34] SY: So I find that interesting that you are doing backend for Coding Coach, but your background is really in frontend work. So how did that happen?
[00:23:43] CV: Yeah. As I said that I’m a frontend developer, right? So when I joined the community, they had a lot of ideas and the tools we wanted to use for the backend because at first we didn’t have any backend. It was all frontend. We do have all the mentors name and emails and everything on a JSON file, right? So people would create a PR to basically use other names and data to the JSON file and then we just present the data in the page, but we want it to have a database and allow people to sign in and that sort of thing, like more features, right? So nobody was taking the lead on the backend side of things and people were just committing like with different tools and like there were discussions, like we’re going to use serverless, we’re going to use this other tool, we’re going to use this, but we really didn’t move anywhere, I would say. So I was like, “Okay, guys, we really need to do something about it because time keeps passing. We haven’t done anything so far.” So we’re like, “Okay, we’re going to use node and we’re going to use MongoDB and we’re going to use this.” And I basically started writing some code and just put it out there and eventually I was leading the backend side of things even though I don’t have a lot of experience on the backend. I used to do full stack, as I said, several years ago, but then I started just like getting into node and like doing all these things. I mean, I know node and all that, but just not like backend stuff like building products, backend APIs and all of that. I didn’t have a lot of experience on that. But given that nobody was taking the lead, I was just, “Okay, I’m going to do it.” And after that, people started also helping, and given that we already have this community, I was asking question to other mentors within the community, like, “Hey, guys, what do you think about this tool?” And then, yeah, it was sort of like, “Okay, I got some ideas and I got some help as well.” And yeah, since then I’ve been adding more features in creating this thing.
[00:25:59] SY: So I assume there is probably a bit of a learning curve involved for you being a frontend developer doing more backend stuff. How did you level up? How did you learn all the things you needed to do in order to be the lead backend developer?
[00:26:12] CV: Yes, exactly. Absolutely. And let me tell you, at first I was so hesitant to commit my code and put everything out there because you said like I’m a frontend developer. I have no idea what I’m doing. But one of the things I started doing is I reached out to the community and got some mentors and got some ideas like, “Hey, is this performing enough? What about this and that?” And I start building. Whenever I want to learn a new technology or a new tool, I usually work in a side project and this was the perfect opportunity. So I started writing right away the backend, writing the APIs. Some people were telling me, “Oh, let’s use GraphQL and let’s use that and that.” But I go like, “I have no idea.” So one of the things I learned is at this point, we don’t have millions of users right now. So we don’t really need something too complex. We have some users are in the thousands. So therefore, I was like, “Okay, this is good enough to serve the existing traffic that we have.” So quarterly, I put on my code, I commit everything. I got code reviews as well because I asked the community, “Hey, guys, this is my PR. Please, I need your reviews.” And yeah, that was very helpful because all the people start telling me like, “Oh, what about if you do it this way? This is maybe better.” So that’s super, super helpful, being able to collaborate with other people with more experience.
[00:27:50] SY: So when you think about people who are interested in maybe going from frontend to backend and diving more into the backend side of things, were there any particular tools or resources that you found useful?
[00:28:01] CV: Yeah. I don’t have any right off the top of my mind.
[00:28:06] SY: Okay.
[00:28:07] CV: I remember just googling and stack overflowing was my go-to.
[00:28:15] SY: Coming up next, Crysfel talks about 20 years of frontend development, the ways in which tech history seems to repeat itself and what you should focus on in your development after this. Over nine million apps have been created and ran on Heroku’s cloud service. It scales and grows with you from free apps to enterprise apps, supporting things at enterprise scale. It also manages over two million data stores and makes over 175 add-on services available. Also, make sure to check out their podcast, Code[ish], which explores code, technology, tools, tips, and the life of the developer. Find it at heroku.com/podcast.
[00:29:07] With DigitalOcean’s cloud infrastructure, you’ll be able to build faster and scale easier from predicting pricing, to flexible configurations, to world-class customer support. You’ll get access to all the infrastructure services you need to grow. Plus, DigitalOcean’s community provides over 2,000 tutorials to help you stay up to date with the latest open source software, languages and frameworks. Get started on DigitalOcean for free with the free $100 credit at DO.co/codenewbie. That’s DO.co/codenewbie. I want to hear a little bit more about your perspective. Having been a coder for over 20 years now, when you think about the way languages have changed, frameworks have changed, what’s the most surprising thing that you would not have guessed would have happened 20 years ago?
[00:31:02] SY: Interesting.
[00:31:03] CV: Given that I’ve been this long in the industry, I think this part over and over again, somebody comes in and then all the communities are like, “Oh, these best practices are not really best. We’re going to move to this other plan.” And then a couple of years later or some years later, the communities are like, “Oh, you know what? They saw their best practices are not really the best one. So let’s move and do something else.” Right? So we keep moving. So whenever somebody tells me about like, “Oh, this is the best practice,” Yeah, it might be at this point, but it’s not going to be like in a year or two. So at this point, I don’t really worry about like, “Oh, these are the best practices now.” As long as your product works well, performing and you’re serving all your users, their needs, that’s what I really worry about instead of like, “Oh, this is the best architecture and this is going to scale.” Yeah. But like if you don’t have all those users yet, like why are you worrying about that right now? What about your product and your ideas? What are you building and building your audience and community or whatever you’re building?
[00:32:17] SY: So why do you think that is? Why do you think we keep repeating ourselves?
[00:32:21] CV: I think that’s because new people come. More people are joining every other year. Every day there are new people coming and they find out like, “Oh, this is very convoluted. This is very difficult. Let’s make it easier.” Right? Or, “Let’s make it better.” And I think that’s good because things keep changing and we keep moving forward, but sometimes we go back to previous patterns that work in the past. So that’s probably one of the reasons things keep changing all the time and keeps repeating. I would say I think I might be wrong.
[00:33:01] SY: So we talked about how best practices have changed. How have our tools changed over the years?
[00:34:50] SY: Interesting. That is not what I was expecting you to say. I thought you were going to say that the tools have gotten easier to use over time, especially for newbies. Do you feel like resources and maybe some learning tools have changed for the better or do you still feel like there’s just too much to learn out there?
[00:35:06] CV: Resources are better now. We do have a lot of content out there and a lot of tutorials, a lot of content free, available for everyone. So on that front, I think we’re improving a lot. And I think we’re doing really good at that. But when I say things got more complex, it’s like the whole bill systems that we have now. Yeah, we’ve been trying to make those easier. Yes, but this whole process of building software, it’s now more complex than before. As I said, before it was just a file and that’s it. Now we need to do all these things. But yeah, I agree. Tooling wise, it’s getting easier, but the process in itself has been getting more complex.
[00:35:53] SY: Do you feel like with those complexities, the output has been better? Is it worth the complexity? Are we producing better results, better apps, better websites?
[00:36:33] SY: So when you look back on the 20 years and just how things have changed, how the landscape has changed, industries changed, I’m wondering how has the role of a developer evolved over the past 20 years? Do you feel like the definition of a developer has changed? Has the industry, the people, has that changed at all in 20 years?
[00:38:00] SY: What predictions do you have for the next 20 years?
[00:38:42] SY: Now at the end of every episode, we ask our guests to fill in the blanks of some very important questions. Are you ready to fill in the blanks?
[00:38:48] CV: Yes.
[00:38:50] SY: Number one, worst advice I’ve ever received is?
[00:38:53] CV: When I was starting my career, somebody said to me that I shouldn’t share the knowledge with my colleagues or I shouldn’t share openly things I knew at the time because my colleagues could take my job or that sort of thing. So I really didn’t do any of that. Instead, I did the opposite, right? When I put my work up there and turns out to be great because that led to so many opportunities, but this is like the worst advice I’ve received and I’m glad I didn’t follow it.
[00:39:32] SY: Number two, best advice I’ve ever received is?
[00:39:36] CV: It is not related to coding, but when I was 32 years old, some of my friends told me that I should invest in my future, like think about retirement. So definitely something that I always recommend to people. I started late, I think, but the sooner you start, the better. I think that’s the best advice I have received and it’s very, very important.
[00:39:56] SY: Yeah. Absolutely. Number three, my first coding project was about?
[00:40:02] CV: That would be when I was in high school. I was building just an ugly website. I was posting pictures of myself in some HTML tutorials in Spanish. I think that was my first production project and I always recommend to people, like if you’re building on a side project, make sure to deploy that project. Make sure that people use your project.
[00:40:28] SY: Number four, one thing I wish I knew when I first started to code is?
[00:40:33] CV: When I was in college, I did a lot of projects for my classes and for like side projects, I wanted to learn other things and I really regret not deploying these projects, not putting out there all my work because looking back, those projects were awesome really at the time. And I don’t know, maybe I could have people using it and more opportunities will come from that. So as I said just before, you’re working on a side project, I would definitely recommend you to deploy that project and put it out there. Let people know and good things come out of this side project. I can guarantee you that.
[00:41:16] SY: Absolutely. Thank you so much for joining us, Crysfel.
[00:41:19] CV: Thank you. Thank you so much for having me. It was really fun.
[00:41:28] SY: This show is produced and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, firstname.lastname@example.org. Join us for our weekly Twitter chats. We’ve got our Wednesday chats at 9 P.M. Eastern Time and our weekly coding check-in every Sunday at 2 P.M. Eastern Time. For more info on the podcast, check out www.codenewbie.org/podcast. Thanks for listening. See you next week.
Thank you to these sponsors for supporting the show!