Who are you? Where are you from and what is your backstory?
Hey! I’m Ethan, a 15 year old from Sydney, Australia. I started learning to code when I was 11 years old. In this time I’ve launched multiple products including KanbanMail, a kanban board for your emails, and Code The Web, a blog teaching people web development. Most recently I’ve created Maker Rocks, a platform that enabled me to establish myself as a creator within the maker community, ranking at #1 in the #24hourstartup challenge.
What made you get into programming?
When I was 7 years old, I started playing about on a website called Scratch. It’s a drag-and-drop block programming environment mainly aimed at the young creators demographic. I really liked it! Scratch also had strong community features, so I got to know lots of other users. At the time, Scratch programs used Flash so they couldn’t be run on mobile. I heard about this thing called ‘HTML5’ which let you make programs that run on mobile, so I decided to take a look! I assumed that I’d be able to make an interactive game after 1 month of learning ‘HTML5’, but boy was I wrong! Regardless, making a simple heading appear with this mysterious text coding felt like a huge achievement. I’d finally graduated from drag-and-drop programming to ‘proper’ programming. I’ve been learning and improving my web development skills ever since then!
What made you create Code the Web?
I’ve made quite a few products! But I’m going to talk about Code The Web here, because you can probably relate! When I was learning to code, there were a ton of resources. But it was hard to find *good* resources. Many StackOverflow answers, most documentation pages and almost all tutorials were all really hard to understand. Not because the concepts were hard, but because they were taught in really complicated ways. I’m still not sure if this was on purpose because people wanted to look smart or just an accidental thing that people did. But it was really hard to find simple explanations. The problem is, a lot of people assume that the more complex-sounding, the better. That because it uses big words, it must be ‘official’ and prestigious. But I just wanted someone to explain flexbox to me in a way that didn’t make my head hurt!
So I started making tutorials with the goal of them being simple and super easy to understand. In fact, I made the tagline “Web development explained for normal people”. I tried to sound as human as possible in my articles. A lot of people try and make their articles sound justifiably smart, but I think this just alienates readers and is especially nasty towards beginners. With this goal in mind, I started Code The Web! It’s been really successful – even though I’ve taken a break for a few months to work on other projects (I’ll get back in really soon!), it’s traffic has been going up really consistently from Google search. I’ve received lots of really powerful thank-yous from random people, so I think it’s a great thing to keep going at 😀
What does your process for learning to code look like?
I started my coding journey by completing a free Codecademy course on HTML and CSS. After this I knew the basics, and could create very simple websites, for example this one from 2015. After this, I slowly learned more and more about HTML and CSS by researching when necessary and by devouring articles about HTML/CSS features. It took me almost two years to get to a point where I felt like I completely understood CSS. I define this milestone as being when you can recreate any web design from an image (without using position: absolute for everything 😛). Believe it or not, teaching other people HTML and CSS really helped me learn faster!
When I started writing Code The Web I knew enough to teach beginners, but I didn’t have a fully developed understanding. Through the process of brainstorming; understanding what people needed to learn, digging deeper in research for articles, and by just writing it all out, I managed to get a much more solid understanding of web development. Don’t do this if you’ve never written a line of code, but if you know the basics and are looking to further your knowledge, consider writing tutorials on your own little blog. Whether you end up getting 12 or 12,000 visitors – it’s a super effective way to fill gaps in your knowledge!
What does your process for building apps look like?
I usually already have a basic idea in my head before I start building. Sometimes I do a short brainstorm to think of features, but I generally get straight into building pretty quickly. If it’s a product that I want to generate a lot of hype around, I might make a quick landing page first with a subscribe form and share it. But otherwise I like to get stuck right in and just start building. I find it pretty easy to decide on technologies, as I usually use the same stack – Node.js cloud functions for the back-end and plain HTML/CSS/JS (and sometimes Vue for more complex projects) for the front-end. I create a new folder, set up Git and I’m pretty much ready to go. I sometimes start with the back-end first, and sometimes the front-end.
I’m undecided on this but I think both are good approaches. I always make sure to use the product myself as I’m working on it – this usually decides what features I work on next, as I’ll want the ones that are most necessary first. Once I get it to a basic acceptable version (MVP), I release it in beta and get bug reports and ideas. Then I’ll make a “What’s stopping me” list of everything that’s stopping me from launching it right this second. I get all those things done (including making a proper landing page), and then launch it into the world!
Do you face any particular challenges when building over a period of time?
I don’t have a huge amount of challenges when it comes to the building – most of the time I either know what to do or can look it up and find a solution. I sometimes overly question myself when working on projects. Is this a waste of time? Is this a bad idea in the first place? Will anyone even use this? I have to learn to just ignore these questions most of the time. While it’s good to see if you’re on the right track, I try to keep it to a minimum while I’m actually busy coding, and think about it some other time. I also sometimes have trouble taking enough breaks while developing, I get quite excited and always want to add that next feature right now but I need to remember to take breaks now and then. Sometimes I’m good at this, sometimes I’m not!
I’ve also been struggling in the past few months with balancing all my projects. I have 4 side projects + high school, so I need to prioritize my time and calculate how much time to spend on what. So far my development process has been a bit impulsive, working on whichever project I feel like at that moment. But I think I need to make more calculated decisions about which project to work on when and for how long.
Are you currently learning anything new?
I can get stuff done with everything I use currently, and I’m not sure I need to change the tools and technologies that I use. I’ll continue with a similar stack, but I do want to get into mobile & desktop app development more. I probably won’t use the native languages because they’ll take longer to learn, I think I’ll use something such as Ionic or Vue Native. I recently built and launched a Mac app with Electron, and found that fun. A lot of people have asked for a KanbanMail mobile app, so I’m definitely going to have to find a way to do that in the near future.
Advice for those learning to code?
I think my #1 piece of advice is that you don’t need to know everything. There’s so much to learn about all these languages that you could be stuck there for years learning, not having made anything with your skills. Instead, I think it’s better to learn the basics – so you have a solid foundation – but then just look up the rest as you come across it. I think this is a super efficient way to learn, because you will eventually memorize the stuff that you look up often, meaning you’ll know the parts of the language that are the most useful to you. Don’t try too hard to memorize stuff, let it come naturally. And don’t feel pressured to know it all. There’s no harm in looking something up, developers do it all the time because it’s just not practical to have it all crammed in your head.
Also, I think the fastest way to learn (once you have the bare basics down) is to make things. It doesn’t have to be real ‘products’ that other people will use, it can just be silly programs/applications/sites that will help you learn along the way (and if it ends up useful in its own right, that’s a bonus!)
What’s your tech stack?
Sometimes Vue.js (for KanbanMail, parts of Maker.rocks, Makerlog Menubar)
Sometimes Jekyll (for Code The Web)
I always make serverless sites hosted on Netlify for free.
What have been influential books, resources and links that have helped you?
When I was first learning to code, Codecademy was a huge help. They have free interactive tutorials on a range of topics, and they make learning to code really exciting! If you’re learning web development, I really recommend Flavio Copes’ tutorials as well – he’s got a ton of well-written content! Other than that, I don’t really have that many recommendations – I usually just search things up and click on whatever result looks useful (usually Stack Overflow). And I’ve never read a book on programming before. Oh, and don’t forget to check out Code The Web too!
Where can people learn more about you and your work?
Here are the links to my products:
Code The Web – Web development explained for normal people
KanbanMail – A Kanban board for your emails (like Trello for email)