[00:00:00] SY: Last year, more than a hundred thousand developers participated in Call for Code 2018, a virtual hackathon with the goal of finding ways to reduce the impact of natural disasters through technology. Submit your idea by midnight Pacific Time, July 29 for your chance to win $200,000 and support from IBM and other partners. Last year’s winner was Project OWL, a deployable mesh network that brings connectivity to survivors of natural disasters which you can learn more about in Episode 1 of this season. Start building your life-saving app today. Just a heads up that after this episode’s end credits, we’ll be playing a trailer of Command Line Heroes, the other podcast I host that’s all about open source and produced by Red Hat. So stay tuned.
[00:00:50] (Music) 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 developing code and developing a thick skin with Ali Spittel, a software engineer and developer advocate at DEV.
[00:01:08] AS: And that was like a very fascinating thing to navigate because my identity and who I am is being attacked and that’s really tricky.
[00:01:18] SY: Ali talks about the beginnings of her popular coding blog, strategies for dealing with online harassment, as well as some coding advice for beginners after this.
[00:01:33] You might have already heard us talking about bootcamps on this show and how important they’ve been to changing people’s careers and their lives. Well, Flatiron School is one of the best. The education you receive and the skills you gain and the community you’ll have will prepare you for the rapidly growing tech field. Go to flatironschool.com/codenewbie to learn more. That’s flatironschool.com/codenewbie.
[00:01:55] Actualize Online Live is an online bootcamp created and taught by expert educators. It’s 100% live and can be taken from the comfort of your home. They use video conferencing, so you get to actually see and talk to your instructors and classmates in real time. That means you have live interaction and feedback, not just during instruction but during all your exercises and projects as well. Learn more at actualize.co/codenewbie. That’s actualize.co/codenewbie.
[00:02:25] If you’re designing a website or building a mobile app, you’re probably going to want to take payments at some point. Square APIs allow you to easily implement their payment form on your website. And with their In-App Payments SDK, you can add it to your mobile app. You don’t have to worry about dealing with PCI compliance because they’ll take care of that for you. Don’t let anything come between you and your money. Start building with Square over at squareup.com/go/codenewbie.
[00:02:58] SY: Thank you so much for being here.
[00:02:59] AS: Thank you so much.
[00:03:00] SY: So tell us a little bit about what DEV is and what kinds of things you’re working on there.
[00:03:05] AS: Yeah. So DEV is a really awesome platform and a place to be a developer. So it’s a great place for sharing ideas, having conversations and meeting other developers. I was a longtime user of the platform before I started working for them. I was writing blog posts and started cross-posting those posts to DEV and then eventually transitioned over to writing there full-time. And then I also work there now. So I split my time between writing code for their code base. I mostly do front-end code and then I also do developer advocacy. So I do a lot of speaking and blogging as well for them now.
[00:03:53] SY: Very cool. So when you’re working on coding stuff, what does that mean? What kind of features do you get to work on?
[00:03:58] AS: A couple different things that I’m working on, the first one is the editor, so where you’re writing your blog post, making sure that that’s as user friendly and hopeful as possible and then I also do a lot of pages for events and stuff. So if we’re hosting something I will do that or if we’re doing a fancy page for like our Shecoded Campaign which is where women developers tell their stories. I built the page for that and so a lot of fun like one-off stuff like that as well.
[00:04:32] SY: So you were also lead instructor at General Assembly and you’re teaching Web Development Immersive. IS that right?
[00:04:39] AS: Yes. So I taught there full-time for over a year and a half, both teaching their regular bootcamp on campus, like you would probably think of, and then also their enterprise program. And then after that, I still have stayed on teaching part-time. So even though I am not teaching full-time anymore, it’s such an important part of me and something I just love doing. So it’s that important.
[00:05:04] SY: So you have a very popular personal blog. It has a lot of tech stuff in it, a lot of coding stuff, but also it has just some personal things about you and your life. Tell me how you got started with blogging.
[00:05:14] AS: I had seen a lot of other blogs and really been helped by them when I was starting out. I took some computer science in college, but I’m mostly self-taught especially for web stuff. I taught all of that to myself. And so I pulled from so many different sources and learned from so many other people’s blogs. And I thought it was a great way to challenge myself. So I actually have this introductory blog post from almost two years ago talking about how this blog is really just for myself and so that I could steer my own learning and describe stuff in depth while I was learning it. My initial blog was talking about the things that I was learning and then I would build an app with that thing and write a blog post on it each week, which is a huge amount of work and completely unsustainable, but it was a lot of fun.
[00:06:10] SY: I: was going to say, that sounds like a lot.
[00:06:12] AS: Yeah. Yeah.
[00:06:13] SY: It was intense.
[00:06:14] AS: Huge amount of work and I would not necessarily recommend it. But having that challenge, even if you don’t meet that goal, like which I definitely didn’t. It still gets you somewhere. It still gets you better than where you would be without that goal. And so yeah, it was way too lofty, but having that was really, really helpful and I learned all these sorts of things that I wouldn’t have otherwise. So I taught myself in Angular. I taught myself Go. I taught myself augmented reality. And I’m not an expert in any of those things, but even just having blog posts about them, people thought that I was really good at those things. So I like to say that I’m like traveling the world this year to talk about augmented reality based off of an app that I built in a couple hours and that’s pretty cool.
[00:07:00] SY: That is very cool. So you said that you taught yourself all these things. How did you get started learning on your own?
[00:07:07] AS: I did not learn well in a computer science classroom. The way it was taught just didn’t really work for me and didn’t really click for me. It was a little bit too abstract and I didn’t understand it because I didn’t have a solid programming background before then. So I was trying to understand these computer science things but also programming on top of that. And they were very much discouraging using online materials on top of the course. So I didn’t. I didn’t Google anything. I just use a textbook and that’s it. Well, I learned after that that there was this wide assortment of online resources. So I found Codecademy back when it was much more rudimentary than it is today. They kind of have everything on there. But at that point, they only had a couple tutorials and I went through their HTML and CSS tutorials. So that kind of opened the web world to me. And then, actually, after I was working as a software engineer, I wanted to learn how to do full stack web development. So to do that, I was just reading a bunch of blog posts and different videos that were out there. I actually don’t learn super well from videos, but at that point, I was watching them and then reading the documentation for different technologies as well. And most of myself teaching was once I was actually employed, but all the stuff that I taught myself is like what I still use today.
[00:08:30] SY: Okay. So you are learning all these technologies, you are blogging about it. What was so beneficial about blogging? I know you have this big ambitious goal of blogging everything that you wrote, but what was the biggest value you got from doing that?
[00:08:45] AS: So I think the biggest value was just steering my learning journey and having a direction for it. At least that was the initial benefit from it. I looked back and got like 36 readers on my first blog post at the time. So definitely it wasn’t something that other people were reading. Eventually, more and more people started looking at it, and even by the end of that blog, only a couple of thousand people are reading my blog post, but that was still enough to be getting speaking opportunities and starting to see a little bit more on social media. So even at that small level, it was pretty impactful for my career. And so eventually that blog, as we’ve been talking about, became really unsustainable and I kind of dropped off with it.
[00:09:35] SY: Oh, interesting.
[00:09:36] AS: From there, that’s when I started my blog that people probably are more likely to know about, if they do, but I started writing last summer because I moved to Connecticut where I knew nobody. And so when I knew nobody, I had a lot of extra time on my hands and I started a new blog that was supposed to be a hybrid of lifestyle content and programming. So talking about my life as a woman programmer and showing that people with my interests and my skill set could be successful programmers. It turned out that people really like the code ones and those would all do really well and then the lifestyle ones nobody really read. And so I kept going with what the people wanted and wrote more.
[00:10:28] SY: Got to give them what they want. Yeah.
[00:10:29] AS: Yeah, exactly. Wrote more of the code content. And from there, I noticed that people were really liking my beginner content, which kind of makes sense because I was teaching code full-time and kind of spiraled into where I am now, where I’m working for DEV. I was cross-posting all my posts from that blog to DEV and I now don’t really write for where I’m at in the industry. I started learning code like six years ago and got employed like five and a half years ago. So I am not really writing for where I’m at now, but I’m very much writing for that young woman who is in that computer science class and felt like I did not fit in at all and like I was a total outlier and that everybody else was better at this than I was. So she is who I am writing these tutorials for, trying to help the people that were in the place that I was back in the day.
[00:11:28] SY: Tell me a little bit more about what it felt like to be in that classroom. You mentioned not feeling like you belong, feeling like an outlier. Do you remember a moment or a thing that happened that really made you feel that way?
[00:11:41] AS: My big issue was in my second computer science class. So the first one was just kind of an introductory one. It was pretty normal, lots of people from all sorts of backgrounds. And then the second one was when it started getting more serious and more people who were computer science majors. That’s I think when there were fewer and fewer women in the class. So that was kind of one piece of the puzzle. But then on top of that, my interests are very, very different than I think are stereotypical for programmers, like even now I see a lot of stuff that’s like Star Wars and Lord of the Rings and all these things that are awesome and that people really enjoy, but I’ve never seen any of those.
[00:12:28] SY: Yeah. Same.
[00:12:28] AS: And so I feel like I can’t even talk the language, you know? So I can talk all day about the Real Housewives and Southern Charm, but I don’t know too much about those things. And so you start to feel like you’re the odd duck out and maybe this just isn’t for people like you. I also didn’t have coding experience when I was younger and it seemed like I was coming into computer science at the time where a lot of people were starting to have these programs in their schools, especially the people who are majoring in computer science. And I had no idea that code was even something that people really did. I had no context at all for that. So definitely was not the average computer science student. And so I completely quit the coding after that class. I was like, “It’s for somebody else,” and I only started it again because I got a totally unrelated internship doing political data and I realized that I could automate some of my job and so I did using Python.
[00:13:32] SY: Was it Python you remembered from that first class?
[00:13:34] AS: Yeah. Yeah, totally.
[00:13:35] SY: Oh, neat.
[00:13:37] AS: Yeah.
[00:13:38] SY: Oh, that’s fun.
[00:13:38] AS: It’s like this thing exists and it’s going to make me way more efficient and excel than excel well and so that led into my career.
[00:14:02] SY: Flatiron is a global school with immersive and online courses designed for passionate people who are ready to change their lives. Check out Flatiron School’s free 75-hour bootcamp prep where you can learn not just coding languages like JavaScript and Ruby, but also how to ace your job interview. By the way, did you know that they’re now part of WeWork? Which means they now offer classes at a growing number of WeWork locations around the world. A bold change begins with a single step. To take yours, go to flatironschool.com/codenewbie and learn more. That’s flatironschool.com/codenewbie.
[00:14:36] Actualize Online Live is not only a super convenient way to receive a top-notch bootcamp instruction from the comfort of your home, they also have nifty tools to help you learn everything from new coding concepts to syntax. They even produce a free weekly video called “Think Like A Software Engineer”, which teaches you things like how to debug code, how to research problems, and how to teach yourself new languages. Learning the mindset of a software engineer is the key to getting past the hurdles that can bog you down as you code. Check out the series at actualize.co/codenewbie. That’s actualize.co/codenewbie.
[00:15:16] SY: I want to go back to blogging for a second because a lot of folks don’t blog because they feel self-conscious, they’re intimidated, but they also don’t blog because they feel like, “Well, what do I have to say?” You know, there are so many blog posts already out there. The world is kind of swimming in resources and things that are already written about code and they’re kind of thinking, “What could I possibly contribute that’s different from what’s already out there?” So when you think about your own contributions, where is its place in the coding world, in the blogging world? How do you think about that?
[00:15:46] AS: Know something well enough to explain it to somebody else. You have to know it really, really in-depth and from a lot of different angles. Writing that down and doing that research and organizing your thoughts in that way is super beneficial for yourself even if nobody else reads it down the road. And on top of that, you have that reference to look back to. Like some of my own blog posts, if I go a while without using a technology or something, I’ll go back to one of my blog posts and read through it because it’s the way that I think. So I have this really awesome guide that I wrote that’s in the way that I think and I can refer to it at any point.
[00:16:24] SY: So you’ve gotten a lot of positive feedback and people love the work that you do, but there are also a lot of trolls in the world. Tell me a little bit about that. What are some things you’ve had to deal with as a result of blogging and also frankly being really good at what you do?
[00:16:40] AS: So that’s definitely been a roller coaster. It’s been one of the more difficult parts of all of this. So about a year into blogging, almost a year, I really got nothing negative, like maybe once in a blue moon somebody would send something or would write some comments trying to correct my post technically. And to be clear, if somebody’s like correcting my blog posts technically, I’m super okay with that and it’s really helpful because I’m actually learning from that. The problem is when they’re trying to correct you technically and they’re not correct themselves, that’s where the problem comes in. But the vast majority of what I get are just guys like hitting on me. That’s the most day-to-day one that I get. And then I would say some people explaining things that don’t need to be explained and that gets annoying and then you get the really strange one sometimes where they follow you from platform to platform even though you’re like walking them.
[00:17:42] SY: Oh, wow.
[00:17:43] AS: Yeah. So nothing happened until about a year in and somebody posted one of my posts to Reddit, Reddit’s R Programming, which is a really popular subreddit. And my blog post got to the top of the front page of that, which is super cool. But also there’s a lot of not fun stuff that comes from that. The interesting thing is though that almost nobody was being negative about my blog post. They were all being negative about me. So people were pretty much attacking every single piece of me. They were saying that I was not experienced enough to write blog posts, that I was too new, that I should be making minimum wage, that I was not actually self-taught, and there were like incorrect personal facts being posted about me. There were pretty much attacks coming in from all different angles and that was like a very fascinating thing to navigate because my identity and who I am is being attacked and that’s really tricky. You know, I thought that I would get more used to it and I have strategies for dealing with it now, but I wouldn’t say that it ever actually gets easier. Every time you see one of those comments it still hurts a little bit.
[00:19:07] SY: So that first post, the one that got on the programming subreddit, what was that post about?
[00:19:13] AS: So it was my 25 pieces of advice from a mostly self-taught software engineer. So all of my advice that I would give to new programmers. And I really liked it because I feel like I’m lucky that I have the angle of suddenly learning from three different ways. I took computer science in college, but dropped out. I was mostly self-taught. I learned web development myself and most of my knowledge is from online resources. And then on top of that, I’d been teaching formerly in a boot camp setting. So getting to deal with all types of programming learners and my advice from all those different angles and for different parts of programming too. So dealing with imposter syndrome, the dealing with staying motivated, but then also the more technical side of how to get better at pattern recognition and problem solving and fundamental algebra. The thing is if it’s getting to the top of R programming, then it’s a decent post. It’s just that commenters are the ones that are going to be like more negative and all the upvoters were the silent ones.
[00:20:25] SY: Did it give you any comfort knowing that the post itself wasn’t attacked?
[00:20:31] AS: I wish it did. I think that it didn’t because I felt so personally taken down and like maybe I shouldn’t be the person writing. There’s always that doubt, is this industry really this way? And I’ve had good and bad experiences during my career, but I think to some extent, at some point, I got put in this like super positive tech bubble where my online community was really positive at the time and I was working at a bootcamp, which is a super, super positive environment. So I was like, “Am I on this bubble of positivity in tech and is it really just like that outside of me and do I belong in this industry if that’s the way that it is?”
[00:21:15] SY: You mentioned that, you know, it hurts and it still hurts when you see a negative comment. What are your strategies for dealing with that?
[00:21:22] AS: Part of it is just reminding myself that I write for myself more than I write for anybody else and that I am doing this to have my own repository of knowledge that’s out there and that people can learn from, but then also it’s like the positive feedback, the people who were leaving nice comments or nice DMs or nice emails and I screenshot all of those and have them in a document so that when I do have negative stuff I can come back to read all of those and knowing that people are learning from my stuff and then it’s making code more accessible and that’s really cool to see and to see those numbers going up and being in a community of other people who are blogging and all of that. That’s the really positive part and that’s what keeps me going and allows me to press that publish button even if it’s hard.
[00:22:11] SY: Have you ever tried confronting some of these commenters, some of these trolls?
[00:22:17] AS: So I do a select amount. So most of them will try to just ignore or block or whatever. If they get me at a bad time, sometimes I’ll say something. I used to or I still too try to come at it from an educational point of view at first and one of my go-to tactics is to send them a link to Feminism Is for Everybody by Bell Hooks on Amazon.
[00:22:40] SY: I like that.
[00:22:41] AS: Yeah. And so I also just send a bunch of online resources on why what they’re saying is wrong. One that I get pretty frequently is that like men are better programmers than women or whatever. I get that a decent amount, pretty randomly too. And so have resources stockpiled on that to send out whenever that comes out, resources on why you shouldn’t DM women that they’re pretty and stuff like that. So I have my resources for teaching. Also, sometimes if some people send really long emails complaining about my work, I’ll email back educating them on why certain decisions were made or why their feedback could have been a little bit more taken into account if they had framed it a little bit differently.
[00:23:30] SY: So you give them feedback on their feedback. I like it.
[00:23:32] AS: Yes. I try. But I can only do it to a very small extent of them because it just becomes exhausting because 99 percent of them don’t respond positively to it.
[00:23:42] SY: So a common piece of advice is don’t feed the trolls, right, when they’re attacking, when they’re saying things, just leave them alone. Hope they die off on their own. But I kind of love the fact that you don’t always do that and you do kind of engage and try to have a conversation. What are you hoping happens? Like after you send that guy feedback on his feedback, what are you hoping happens as a result of confronting him?
[00:24:05] AS: If it's via email or something like that, then normally I just hope that they don’t do it to somebody else in the future or that they think about it next time. But if I’m doing it publicly, I’m really not doing it for the person that I’m calling out. I am really doing it for the people that are on looking.
[00:24:22] SY: Yeah, people are watching. Yeah.
[00:24:23] AS: Hopefully that those people, A, understand that it’s happening and that it’s something that women in tech have to navigate especially if they have a platform that this is something that they’re dealing with because I think a lot of people just don’t even realize that. And then the second part is that the anonymous people watching, maybe it’ll tell them, “Okay, this is not an okay thing to do. This is not something that people are okay with or will take positively so maybe I shouldn’t do that in the future.” So it’s really not for educating that one person though. If that one person responds positively, that’s awesome. But usually not the case. It’s usually for the onlookers.
[00:25:02] SY: Any good stories that have come from you confronting folks?
[00:25:06] AS: So I have one via DM where I told him to read Feminism Is for Everybody and he did and he responded positively to it and was like, “Okay, I understand where you’re coming from.”
[00:25:16] SY: Oh, that’s awesome. Wow! That never happens.
[00:25:17] AS: Yeah. And that was a really positive one and I’m still very, very proud of that. But for the most part, it’s just one of those ones that devolves for that person until you end up blocking them or whatever and then the onlookers see it and hopefully it helps them or impacts them in some sort of way.
[00:25:37] SY: You mentioned that mostly you ignore the comments. How do you do that? How do you manage to just ignore all these horrible things that people are saying?
[00:25:45] AS: Something that I do a lot is I will actually write out a reply and then screenshot it and then just delete it because it feels good to have that vent and have that outlet of this is what I want to say, but then usually pressing the send button does more harm than it’s worth and so just throwing it away helps. And sometimes I’ll just send those screenshots to friends and we’ll have a good laugh over it too.
[00:26:09] SY: I love that.
[00:26:10] AS: But I have like a direct message group with some other women who are in a similar point to myself and we share screenshots all day.
[00:26:18] SY: Yeah. What an interesting way to bond.
[00:26:22] AS: Yeah. Yeah.
[00:26:23] SY: So have you ever felt unsafe as a result of these comments?
[00:26:30] AS: Yeah. Yeah, definitely have felt unsafe to some extent. So I’m really, really private about like even where I’m living now. So I’m doing the whole digital nomad thing right now and so I’m in different cities all the time. The one that I worry the most about is conferences and that something could happen there because people know that I’m speaking at something at a certain time. But I haven’t had any specific threats or anything like that. I know some other women in tech definitely have, but I have not, luckily. So that’s been at least some sort of sigh of relief there.
[00:27:18] SY: Coming up next, Ali talks about non-programming skills that can help programmers how to get past the cycle of just using online tutorials and what makes a great website after this.
[00:27:38] We’ve talked about open source a bunch of times on this podcast, but frankly, open source is so big and complex, and fascinating that it needs its own show, and it has one called Command Line Heroes. It’s produced by Red Hat and it’s hosted by me. That’s right. I’ve got another podcast talking to incredible people about all things open source. We talk about the history of open source, the introduction of DevOps and then DevSecOps, and we even do an interview with the CTO of NASA. And that’s just the beginning. We also dig into cloud and serverless and big data, and all those important tech terms you’ve heard of, and we get to explore. If you’re looking for more tech stories to listen to, check out redhat.com/commandlineheroes. That’s redhat.com/commandlineheroes.
[00:28:25] Square has APIs and SDKs to make taking payments easy whether you’re building a mobile app in iOS, Android, Flutter, or React Native. If you want to embed a checkout experience into your website, it’s super easy. Square has processed billions of transactions so you know it’s tried and true. Start building with Square over at squareup.com/go/codenewbie.
[00:28:52] SY: When you think about your most popular blog posts and some of the positive things that people have said, what are some of the blog posts that have really struck a chord with the community and it really risen to the top?
[00:29:03] AS: I believe my most read ones are that advice for new programmers, which we talked about earlier. And then on top of that, I have a React tutorial, which I really like talking about because I wrote this React tutorial last summer well after the wave of React tutorials. So I’m sure there were thousands and thousands of React tutorials before mine. And it’s really cool to see that so many people have read that. It kind of shows that even if you’re writing about a topic that other people have, you still have a unique perspective on it and can still teach it in some way that will resonate with some people. So still write that blog post even if you think that it’s been covered.
[00:29:47] SY: So you do a lot of obviously coding topics, but I assume there are some non-programming skills that help you become a better developer. Tell me a little bit about those. What are some of those non-programming skills?
[00:29:57] AS: So for me, I think I almost identify more as a teacher than a programmer now just because so much of my identity is wrapped up in blogging and teaching and speaking and all of those things. So for me, the ability to communicate and to distill topics is something that’s really been important for me, and on top of that, just empathy and the ability to understand where somebody else is coming from when they’re having an issue or something’s blocking them or maybe they’re even reacting not super, super well to having a code problem. Being able to put myself in their shoes has been really, really helpful as well. On top of those things, having problem solving and pattern recognition skills are the two things that I talk about all the time as being incredibly helpful for new programmers to build up those skills even outside of coding because they’re so important for programming that if you have them built up, you’re much more likely to be successful and have that learning curve be less steep for you.
[00:31:04] SY: So how do you build up those skills?
[00:31:07] AS: A lot of it is practice, like anything else, and so solving riddle-type questions. I really love doing coding puzzles. I used to post one on Twitter every day. One of those problems that you see on those code challenge sites like Codewars or Project Euler or any of those.
[00:31:29] SY: Yeah.
[00:31:30] AS: I have so much fun with those and I think that they’re great for just practicing your ability to solve problems. On top of that, there’s this game called SET which has you recognize patterns in cards and The New York Times has an online version of it every day and I recommend that so much to my students and to anybody else out there because it’s a super, super fun game, but you’re also really working on your problem solving skills and your pattern recognition. So can’t recommend other than that.
[00:32:01] SY: Oh, that sounds fun. So you wrote a series of blog posts that are all about moving past tutorials. Why do we need to get past this cycle of tutorials and how do we do that?
[00:32:12] AS: So this is something that I’m really, really passionate about and is probably the biggest issue that I see with people learning how to code is moving past that cycle of tutorials or that loop of trying one thing and then trying a different thing and then getting through one tutorial on each of those things but not actually fully learning it. So what I would do is I would pick a problem or a project that you want to build, so some application that would really help you in your life or somebody else or just be something that you think is fun to build. And then we’re going to break down the pieces to solving that problem. So if it’s a game, maybe it’s first the styling of that game, the buttons that go into it, and then the user has to click on a start button, and then from there, random things show up on the screen and then the user has to click on those or something along those lines, but taking that really big problem or a tic-tac-toe game or something like that and breaking it down into its individual pieces is the first step then from there figuring out how to solve those all independently. So I really recommend using pseudocode which is writing down the steps of the problem in regular words instead of code and trying to get that closer and closer and closer to actual code. So writing a for loop but having it just be the word “for” or something along those lines. And then as you’re going through this, do one tutorial that clicks with you in order to learn the syntax of what you’re trying to figure out, but don’t keep doing them and don’t keep going for one that’s not working for you. Find your learning style and work within that learning style.
[00:33:56] SY: Yeah.
[00:33:57] AS: Another thing I noticed with new programmers is that a lot of times they’ll search the whole entire problem instead of parts of it. So they’ll Google how to make a tic-tac-toe game in JavaScript and they’ll come up with 50 different solutions to that and that’s great. Looking through other people’s code is a super valid way to learn. But when you’re actually starting out, if instead you Googled how to run some code if somebody clicks on a button, if you Googled that instead, you would be still solving the rest of the problem by yourself instead of just kind of refactoring somebody else’s code. And refactoring other code is an important skill to have but also solving those problems by yourself is even more important when you’re starting out. And so look at that other code as your last step to make sure that what you did is the most efficient way of doing things, but don’t rely on that, and especially a lot of the code out there that you can find is not super excellent and so learning from it is maybe not the way to go. Solve the problems yourself instead of having somebody else solve them for you.
[00:35:05] SY: I love that. How do you know when it is time to move on from tutorials?
[00:35:13] AS: Move away from them as fast as you can. So as soon as you can use the basic syntax of that language, I would say that it's a good time to start building something and you’ll have to search for things along the way. You’ll have to look at different syntactical things to use and stuff like that. But as soon as possible, identify some sort of project that you’re trying to build and try to learn in order to do that and achieve that goal rather than just doing these tutorials without a goal in mind. I would also say that when you’re looking through those tutorials to take notes on them so that you are internalizing the information. If there’s code in that tutorial, write the code along with that person. Don’t copy and paste it because copy and pasting it you’re probably not reading the full code. But if you’re typing it out, then you’re having to actually internalize the different steps that are involved. And all of this learning is towards a goal instead of just jumping from thing to thing.
[00:36:16] SY: So since you do a ton of front-end work at DEV, I’m wondering how do you think of websites? How do you think of them in terms of making them fun, making them exciting, accessible? How do you build a website like that?
[00:36:29] AS: So I have a ton of fun doing like weird design stuff, like my portfolio site, you hover over letters and they used to move. They don’t anymore. I made them static recently. But you click on the background and random shapes appear and I just like sites that are different and fun and that are not what people have seen in the past. So that’s what I try to bring to whatever I’m doing. So with DEV, I have some more complex front-end stuff that I do like React or we use Preact, which is like React, but it’s a little bit more efficient and then integrating that into a Rails application, so I do some back-end for that as well. But then on top of that, there’s a ton of HTML and CSS and no matter what front-end position you get, knowing those fundamental tools will get you really far. And whenever possible using those tools, HTML and CSS, instead of using JavaScript as your first resort just to make your site more performant and focus on those. I know a lot of people kind of skip over them in order to do the more hands-on kind of JavaScript-y things, but they’re really, really important to learn in detail too because every website that’s out there is built on them.
[00:37:48] SY: So what are some other resources or advice you have for our audience who might want to one day do what you’re doing?
[00:37:56] AS: So I really, really enjoy gamified learning and I think that there are a lot of great sites for that now. So there’s Froggy Flexbox, CSS Grid Garden.
[00:38:06] SY: What is that?
[00:38:08] AS: You get to move around different frogs up and down the page and learn flexbox while you’re doing it and you put them on certain lily pads. It’s pretty fun.
[00:38:18] SY: That sounds amazing.
[00:38:19] AS: There’s also one for learning just CSS selectors as well. It’s CSS Diner. That’s really fun.
[00:38:27] SY: Okay. Is that like food-related like diner food? Is that what that means?
[00:38:31] AS: Yeah. You’re selecting different plates out of a bunch of plates.
[00:38:35] SY: Wow! Where were these resources when I was learning to code?
[00:38:40] AS: And I learn best from written tutorials. So I really, really love places that have great documentation. So Gatsby JS, I’m so impressed with because their document teacher is so good.
[00:38:54] SY: I’ve heard good things. Yeah.
[00:38:56] AS: And Django is something that I absolutely love. It’s a Python framework. And so they have the Django Girls Tutorial. That’s another one of my favorites. It kind of explains web development from zero too. So it’s a really great starting off place. I would highly recommend either finding a workshop in your city or just using their tutorial online. I think it’s a really, really high quality.
[00:39:23] SY: Now at the end of every episode, we ask our guests to fill in the blanks of three very important questions. Ali, are you ready to fill in the blanks?
[00:39:31] AS: Yes.
[00:39:32] SY: Number one, worst advice I’ve ever received is?
[00:39:36] AS: So this one’s pretty funny because you brought it up earlier, but I have don’t feed the trolls.
[00:39:41] SY: Oh, interesting. Yeah.
[00:39:43] AS: That one, it comes from a lot of people who don’t really have to worry about not feeding the trolls very frequently, like people normally have maybe a smaller following or from a different demographic. And so it feels kind of hurtful sometimes because it’s like they’re telling you not to react to something the way that you’re reacting to it and it’s kind of invalidating. So that one kind of hurts and you can also use feeding the trolls as an educational tool like we talked about earlier. Yeah. That’s one that bothers me.
[00:40:18] SY: Yeah. Okay. Good reasons. Good reasons. Number two, my first coding project was about?
[00:40:24] AS: So my first one outside of school that I did on my own time was for my senior thesis in college. So I was a government major and had to write this super, super long thesis and I decided to write it about how men and women across the political parties are spoken about very differently online. So I pulled down a bunch of Twitter data about how people are discussing senators. And then I built a web application to visualize all this and drew up a bunch of data visualizations that are interactive and you can see how those things are different across those different lines. And so it’s still online. It’s still one of my favorite things that I’ve built. It’s pretty slow, but it’s still fun.
[00:41:14] SY: Very cool. Okay. Number three, one thing I wish I knew when I first started to code is?
[00:41:21] AS: Don’t be such a perfectionist. I think at first those read error messages can just be terrifying and you feel like you’re bad at programming, but they’re such an important part of learning and embracing those error messages and knowing that they’re getting you one step closer to where you’re trying to get is super, super helpful. So don’t be such a perfectionist. And I think if I was less of a perfectionist, I wouldn’t have quit either or quit my other blog. So I think that being a perfectionist has definitely been something that I’m continuously trying to overcome even now, but it’s the advice that I wish I had.
[00:42:00] SY: Wonderful. Well, thank you so much, Ali.
[00:42:02] AS: Thank you.
Command Line Heroes trailer:
[00:42:09] SY: This episode was edited and mixed by Levi Sharpe. You can reach out to us on Twitter at CodeNewbies or send me an email, hello@codenewbie.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.
[00:42:47] GC: At the end of the meeting, they were in agreement. They wanted one data-processing language. The language which came to be known as COBOL.
[00:42:54] SY: That’s programming pioneer, Grace Hopper. We told her story last season and there was so much love for the tale of Hopper and the early days of programming languages that we decided to follow up with a whole season of amazing language stories. This is Season 3 of Command Line Heroes, an original podcast from Red Hat. And I’m your host, Saron Yitbarek. In Season 1, we tracked the emergence of open source.
[00:43:22] MAN: I think a world without open source is almost bound to be evil.
[00:43:26] SY: In Season 2, we pushed the limit of what developers can shoot for.
[00:43:31] MAN: One day we’re going to put humans on Mars. We’re going to explore even further to find Earth 2.0.
[00:43:37] SY: But we cannot wait to share Season 3 stories with you. Each episode takes you further into the world of programming languages. We’ve been out on the road, listening to hundreds of developers and sysadmins, and your excitement for languages, your curiosity has inspired us to devote a whole season to exploring their secret histories and amazing potential.
[00:44:00] MAN: The language I love the most right now is Python.
[00:44:02] MAN: One language I love is JavaScript.
[00:44:06] WOMAN: Okay. I know this sounds weird, but a language that I love is VAX Assembler.
[00:44:15] SY: There’s no wrong answer. We’ve got COBOL. We’ve got JavaScript. We’ve got C and Perl and Go. We’re taking you to the college campus where basic was COBOL together. We’re diving deep into shell scripts so we can master the language of ops. Around the globe, heroes are using programming languages to develop a brighter, more open future. And we’re all along for the ride no matter where we’re coming from.
[00:44:39] WOMAN: We now see all of these collaborative projects that are interwoven. So it’s quite an evolution.
[00:44:46] WOMAN: Most programming languages, you can just learn a bit and you can really make it do whatever you want.
[00:44:53] SY: It’s a meeting of the minds between humans and our technologies, a journey that extends the possibilities of programming past anything that’s come before. Command Line Heroes Season 3 drops this summer. You can subscribe today wherever you get your podcast so you don’t miss an episode. Check redhat.com/commandlineheroes for all the details.
Copyright © Dev Community Inc.