A podcast about learning to be a web developer and pursuing financial independence.
It's the last episode! I'm sharing the biggest lessons I wish I knew when I first started learning to code, and also what's still to come on the Start Over Coder journey. My Parting Advice 1. Set a clear goal from the beginning 2. Build actual projects 3. Work with other people from the beginning 4. Teach someone else what you know 5. What to learn? Keep it basic and go deep What's Next for the Start Over Coder Despite this being my “parting advice,” I'm not stopping coding or actually going anywhere! Though the podcast is coming to an end, my main goals (check out episodes two and four to hear about them) are still very much in play. You can listen to the episode from about 16:15 to hear what's coming up in the immediate future, and keep in touch for future updates by: subscribing to the podcast feed wherever you get your podcasts signing up for the SOC mailing list following me on Twitter and/or Instagram (Direct Messages are open if you want to get in touch) emailing me at startovercoder at gmail dot com Show Links: CodeNewbie podcast season 3, ep 8 - Colleen Schnettler Episode 70 — First Real Life Dev Meeting Grace Hopper Celebration freeCodeCamp This episode was originally published 7 July, 2018.
In this episode I'm answering listener questions…ask me anything! The questions I answer in this episode are: What kind of laptop to you use? —Ellen What was the coding school that rejected you in episode 48? —Karl Do you think you'd ever start a new podcast, maybe focusing more on financial independence with a few updates on your coding? —Erica What life is like in general for someone living abroad? Do you ever get home sick or was it easy to meet new people? —Erica What was/has been your favorite part of living abroad? Would you like to make the move permanent or just a few years? —Erica Any podcast recommendations? I know you mentioned Second Career Devs and I'm now a big fan of that. Not even just coding ones, but what are some others you enjoy? And what made you start the podcast vs just blogging? —Erica What is your perception of the job market for entry level frontend web development jobs? —Alex It's my current plan to build a solid portfolio and apply for jobs online, but I wonder if that route has become so competitive that it's not a realistic way to land a job anymore. As you said, it's so saturated on Upwork that they turned you down(?!) —Alex I know that meet-ups/networking is important, but it's hard to prioritize that stuff since it would take up a lot of time that I could use to work on my coding skills. How do you decide how to prioritize these two aspects of the job hunting process? —Alex In pursuing financial independence, for us self supporting folk, is coding the best route? Also, is there any threshold to transition completely to a self learning or school route or just to keep at it an hour or so a day? —Krista If you had $1000 to spend, what would be your top resources? I have tried Udemy (Colt Steele and others), FCC, Learn XYZ the Hard Way, Treehouse, Udacity, community college, and am struggling with information overload… —Krista It seems that web dev, computer science, mobile, data, and security are really all their own things. Is it best to be a generalist or only focus on one? —Krista Any idea on how long to really be job ready at the hour plus a day? Is it really like Gladwell's 10,000 hours or Norvig's 10 years? —Krista With limited time, is it best to do tutorials/learn or just go build? —Krista This episode was originally published 26 June, 2018.
This week I'm sharing 2 more awesome resources for learning to code. Chingu Chingu is a learning community that gets you working on a dev team no matter what skill level you're at. How it works: Apply to join a team. Skill levels range from HTML/CSS beginners to building full stack apps. Your teammates can be from anywhere in the world. Once you're accepted, get together with your team and decide what to build during the 8-week commitment. Build it! Feel accomplished with your finished product, new portfolio addition, and all the soft & hard skills you have gained. I'm excited to participate in Chingu because I learned so much during a similar group project last year. Of course your success depends entirely on the work you put into it and a bit of luck in getting committed teammates, but in my opinion the benefits far outweigh the risks, so I think it's worth going for! To learn more about what it's like to go through Chingu, check out their Medium publication or YouTube channel. uMatrix uMatrix is a browser extension (available on Chrome, Firefox, and Opera) that can add privacy to your browser and teach you about the modern web at the same time. Its purpose is to give you control about what you want to allow/block—things like cookies, 3rd party tracking, 3rd party anything, iframes, external scripts, etc. For a thorough description and to see uMatrix in action, check out this YouTube walk-through video. You can also take a look at some examples of uMatrix rulesets: Kristerkari's uMatrix Recipes Gorhill's Useful Rulesets More in the Discoveries! series: Ep 18: Learn To Code With Me Podcast & Free Lynda.com Ep 41: Coding Solo Podcast & Millennial Money Diaries Blog Ep 64: Financial Toolbelt & Second Career Devs Podcast Ep 73: Chingu & uMatrix This episode was originally published 13 June, 2018.
In this episode I'm wrapping up a few loose ends: the final report on my first from-scratch Node application, and a course review of Harvard's CS50: Intro to Computer Science. NOTE: The CS50 course review starts about 9 minutes in! Node/Express App Part 3 To catch up from where we left off… Part One: 035 - New Node Express Project - First Steps Part Two: 043 - Node Express Project - Progress Report As I kept working on the project, I learned quite a bit about working with dates in programming (hint: not a straightforward endeavor!), and had a frustrating attempt at deploying on Amazon Web Services. But eventually I was able to successfully deploy the app using Heroku, and overall by the time all was said and done I had a working application that I actually still use to this day! CS50 - Intro To Computer Science Course Review CS50 is the introductory computer science course offered at Harvard University, and it's available for anyone around the world to take for free on the EdX learning platform. It covers a lot of basic topics to build an understanding of how computers, networks, and applications work. My favorite aspects of the course were: They have an honor code which discourages people from posting their homework solutions online. As a result, when I searched or asked for help solving the problem sets, I got nudged in the right direction rather than being given the answers full out. I learned a lot more this way. The presentation is very high quality—they have an excellent media player for the weekly lectures, and lots of supplemental materials to make sure the concepts stick. Learning CS fundamentals (data structures, big O notation, HTTP, etc.) has really helped my understanding of other topics like git, Node.js, writing functions, using hex color codes, and much more. If you're interested in taking the class, prepare yourself for a lot of work and time if you really want to make the most of it! Show Links: Episode 36: The Complete Developers Guide to MongoDB [Online Course Review] CS50 Base CS Podcast This episode was originally published 5 June, 2018.
Since setting a goal at the beginning of the year, I've made 3 attempts to get my first paid developer work. These are the big takeaways and things I've learned: Know when to not accept a project, even if you're just trying to get a foot in the door. Get the site content from the client as early in the process as possible to avoid project delays. An “approved” prototype does not mean there won't still be changes after I do a lot of coding! Working to milestones (with specific dates) and showing work at each milestone is better than sharing work in progress. I got a good handle on how much time freelance projects actually take me. When estimating how much to charge, don't forget about the time you'll spend on the project for things other than coding. Calls, check-ins, revisions, and training may add to the project time and you should be paid accordingly. Show Links: Upwork Episode 50 - 6-Month Goal Setting Episode 56 - Planning A New Web Project Episode 62 - Prototyping With Figma This episode was originally published 29 May, 2018.
This week I sat in on a status meeting with a developer team in my company. Pretty cool to see what it's actually like to work as a developer (well, get a glimpse at least!)! I was really glad to have had access to this experience without much effort—it was just a matter of reaching out to a VP in my company and asking for an informational. Now that I know this is possible, I'll be doing it a lot more! This episode was originally published 22 May, 2018.
The command line is a basic necessity for any developer and I've gotten fairly comfortable with it since I started learning how to code. Not sure what I'm talking about? Think back to any movie/tv show with a hacker hacking away into that black computer screen, typing green text. They are most likely using the command line (for good or evil, depending on the context!). But more to the point, the command line is how you can have direct access to your machine to carry out any system-level actions, from moving files around to executing programs, to communicating with other computers over a network. As a developer there are many use cases for working in the command line: Accessing servers (remote or local) and their logs Managing versions of code, like using git Tracing errors, crashes You can even write code in the command line …and the list goes on from there! Here are some of my favorite tips about getting comfortable working in the command line: Learn each aspect as it's needed. Start with the basics, then learn more commands depending on the work that needs to get done. Once there's a basic comfort level, skim the documentation for whatever command line interface (CLI) you're using. Maybe you'll find some good options to use in the future to improve your workflow! For commands that get repeated a lot, create aliases by editing the .bashrc and .bash_profile files on my computer (see article). This is especially helpful for chained events and for accessing deeply-nested folders that you use a lot. Take notes or bookmark sites where you learn how to use the commands that aren't used as often. Maybe they don't warrant a shortcut, but at least you won't have to start from scratch if you need to look up that command again in the future. Show Links: traceroute Lifehacker - Become a Command Line Ninja With These Time-Saving Shortcuts Lifehacker - A Command Line Primer for Beginners This episode was originally published 14 May, 2018.
I'm back from last week's conference! How did I do with the goals I set out before going? Pretty well! Plus gained some tips for future conferences. Show Links: Episode 67 - Pre-Conference Prep Codeland talk links coming soon! Junior Developer Toolbox Podcast - Making the Most of Tech Conferences This episode was originally published 8 May, 2018.
I'm heading to a coding conference in a few days! And unlike some past events I've been to, this time I'm doing a bit of preparatory thinking/planning to help me make the most out of attending. I've set 3 goals I'd like to accomplish during the two-day conference. How To Go To Conferences (Financially) Since Financial Independence is a big goal in my life (not to mention a topic of this podcast), I also wanted to share some tips/ideas about how to attend conferences without attacking the wallet too much: Ask your employer if they will pay for your ticket, or at least give you the day off as a “development day” (or whatever they want to call it without taking from your vacation days) Check for corporate sponsors who might be offering scholarships Volunteer to help at the conference in exchange for free admission. If they don't explicitly offer this opportunity on the conference website, contact the organizers directly and ask if you can offer your services. While there, take advantage of the network of people in attendance, and definitely listen in on some presentations if you have the chance. If none of these free or discounted options are possible, and if you can afford the price of admission without making any serious sacrifices, then don't hesitate to invest in yourself and just buy a ticket. If you'll genuinely get value out of the experience, it's probably worth it. Redeem travel rewards for flights & accommodations if the conference is not near where you live. I got my flight for free! Stay with family or friends if you have them wherever the conference is taking place. Look at inexpensive options to get accommodations, like Couchsurfing or shared rentals on Airbnb. If there's a way to connect with other conference attendees ahead of time, see if there's anyone who's looking to split the cost of accommodations. Follow Up Addition: I did another podcast episode after attending the conference to review how it went. Check out episode 68!* This episode was originally published 1 May, 2018.
I was getting set to record a second ‘stumbling block' episode when I went back to the podcast episodes I recorded last year when I first had these difficulties, and instead was reminded of the things I found helpful at that time to get out of the funk and keep making progress. The first was remembering not to beat myself up over losing momentum. Learning a new skillset is a huge undertaking and it's bound to have times of both high and low momentum. There's absolutely no value in reprimanding myself for slowing down for a few weeks! The second benefit was remembering what led to the stumbling block last year…turns out some of the same life events are happening now, so is it really a surprise that I might have a similar response? The third and biggest benefit helped plan a way forward from here. Since I can refer back to what I did last year (and I know how it worked out for me), I have a good sense of what might help me move forward this time around. So overall, having documented the obstacles I ran into last year really helped me get to a more optimistic outlook this time around. And as a result, I think I've moved past it faster! Show Links: Episode 10: Stumbling Block No 1 Episode 12: When Learning To Code Gets Overwhelming Episode 63: Overwhelming Number of Coding Intros Episode 56: Planning A New Web Project Trello 100 Days of Code Episode 51: Static Site Generators freeCodeCamp Medium article: A month ago I knew nothing about podcasting. 50,000 downloads later, here's what I've learned. This episode was originally published 24 April, 2018.
There's a lot involved to get up and running with a new dev environment—it can be pretty troublesome in fact! After working on one machine for a while, it's easy to forget (or take for granted) all of the software and helper tools you've installed slowly over time. But as soon as you want to get coding on a new machine, those tools are quickly appreciated! Here are some of the steps I took to be able to keep coding while traveling with a temp laptop, and what I plan to do going forward to make it easier next time around: Store coding projects on Dropbox to sync project files across the machines. No need to push/pull commits using a remote repository. Keep a list of all of the tools I use (especially in the command line). I think even the simplest of lists would be a better place to start than trying to remember all of the software I'm used to using. Check search results for “dev environment new computer” to also check lists others have come up with. Keep a copy of my command line shortcuts (.bashrc file) in a GitHub gist for easy future reference. Document! Document! Document! Any time I do a new installation on my machine, I'll take note of how I did it and any resources that helped with the installation. This episode was originally published 17 April, 2018.
It's another pair of discoveries this week! The website Financial Toolbelt has some great calculators if you want to start getting to know your personal finances. And the Second Career Devs podcast is a must for any and all Start Over Coders! Show Links: Financial Toolbelt Second Career Devs podcast More in the Discoveries! series: Ep 18: Learn To Code With Me Podcast & Free Lynda.com Ep 41: Coding Solo Podcast & Millennial Money Diaries Blog Ep 73: Chingu & uMatrix This episode was originally published 10 April, 2018.
Introduction overload! There are plenty of good introductory workshops, blog posts, and articles out there. But is it too much of a good thing? Recently I've felt like the sheer number of articles and events have been taking away from my efforts to become a developer. In this episode I talk about the good & bad aspects of introductory resources, and some tips about how to figure out which ones are worth spending time on. This episode was originally published 3 April, 2018.
Figma is a great prototyping tool I've been experimenting with this week. It's a software tool available for Mac or PC, and they also have a great web interface that allows you to collaborate on designs live (!) with other people. I've been using it to mock up a redesign for the Start Over Coder website, and also for a new web project I've started for someone else. Bottom line, I can highly recommend Figma for creating UI mockups and expect I will be using it for time to come! Show Links: Figma website Episode 56 — Planning A New Web Project YouTube Playlist — Level Up Tutorials Intro to Figma This episode was originally published 27 March, 2018.
This week's episode it about my first attempts at learning the React framework…it was a mixed bag but here are my first impressions: Bottom line: I don't think I've hit the pain points yet that React can solve. Also, using React requires a pretty solid foundation on ES6 methods which I could use some brushing up on. There are a few more pluses and minuses I discuss in the episode, so give it a listen! And if you have any suggested resources for learning React please share
It's been a year since I started this podcast! But I'm still not earning money as a developer. Does it really have to take over a year to learn enough to become a working programmer? Short answer: no, I really don't think so! But for me, a few things along the way have slowed down my progress. You can get the full story by listening to this episode, but to recap what I think I'd do differently to speed the transition up a bit: Set a firm date for when I'd start seeking paying jobs and STICK TO IT! My “deadline” kept being pushed farther and farther away from me. Work on a single program or curriculum that will provide you with full projects to complete and add to your portfolio. Some good examples are the freeCodeCamp certificates and Udacity nanodegree programs. Coding bootcamps are another viable option, though they can be costly. Despite my (I think) slow timeline so far, I'm still excited by what's still to come and look forward to sharing more updates soon! This episode was originally published 13 March, 2018.
It's the last episode (for now!) in the How I FI series and today I'm talking about my top 10 actions for getting myself to financial independence. To recap: Know my expenses. Know my net worth. Have zero debt. Keep an emergency fund. Save before spending. Optimize big expenses. Spend wisely. Invest wisely. Get help often. Keep the long game in mind. Previous Episodes In This Series: How I FI: The Starting Point How I FI: Learning The Basics Links From This Episode: Mr. Money Mustache - The Shockingly Simple Math Behind Early Retirement Expense tracking: Banktivity Quicken Mint.com Pen & paper! The Simple Dollar - How to Calculate Net Worth Mr. Money Mustache - News Flash: Your Debt is an Emergency!! Book - The Four Pillars of Investing by William Bernstein Fee-Only Financial Advisors: National Assoc. of Personal Financial Advisors XY Planning Network Mad FIentist blog & podcast Martinis & Your Money podcast Mr. Money Mustache blog Choose FI podcast This episode was originally published 6 March, 2018.
Continuing on with a favorite topic of mine—financial independence! In last week's episode I shared a bit about what my mindset around personal finances was before I discovered the concept of FI. Tl;dr: the more I earned, the more I spent, and I couldn't imagine a reality where things would or could be different. I'm so glad I learned that there is a better way! For me, finding that better way came in three parts: 1) getting introduced to the idea & basic concepts of financial independence; 2) applying that information to figure out my current FI status; and 3) making a long term plan to actually work towards FI. Show Links & Additional Resources To Check Out: Book: The Four Pillars of Investing by William Bernstein Book: Your Money Or Your Life Bogleheads Web Forum Mad Fientist blog and podcast ChooseFI Podcast, and check out their local listings to find a meetup group near you Plain English explanation of how to achieve FI Mint online personal finance tracker Personal Capital - another online personal finance tracker (I personally like this one better) This episode was originally published 27 February, 2018.
Let's talk about financial independence! Up until now I've shied away from talking about the FI side of this Start Over Coder project. I've made so many wrong moves with my own money that it's like, who am I to talk about the subject with any kind of authority!? Not to mention the fact that I'm years away from seeing the outcomes of my actions…maybe I'm still doing it wrong. Plus it's just a sensitive topic! But I do think one of the main reasons why it can feel so sensitive is because people don't really talk about it, and since FI is a big part of why I started learning to code, I definitely don't want to hold anything back about that side of things. So over the next few episodes I'll share a bit about how I FI, what I'm doing to become financially independent. But before getting into the specifics, it might be helpful to know a bit of my background to get a sense of what led me to do all of this in the first place. Here's a quick recap from the podcast (listen for more context!): Pretty solid upbringing with all of the basic needs (safe home, food, education) covered. At the same time I was very aware that there wasn't extra money available for the “wants.” My “money mindset” evolved as: There isn't enough money for everything. Whatever money there is will run out. You have to work work work to earn money in order to survive. It's the only way. As a result, when I earned more, it meant I could afford more, so I just spent more. There was no big picture: no savings goals, no retirement plans, no money plans in general. I lived with this mindset for years and years, but eventually I realized that this outlook wasn't working for me. In fact, I was working for it! Literally: working for the bi-weekly paycheck that I needed to keep up the lifestyle I built for myself (not exactly music to my ears). I'll share more about what changed, and what changes I made as a result in future episodes in this series. But the biggest change was finding some goals to work towards. Financial independence means having enough income to cover all of your expenses without having to work for that income. Instead, money comes in through savings interest, investment income, businesses that generate income without your personal hours of labor…all of this is often referred to as passive income. Being financially independent gives you the freedom and flexibility to live life exactly how you want to. For me that involves a lot of travel…long-term travel ideally. And contrary to popular belief, it doesn't necessarily mean not working! I actually really like working when it means having interesting projects, solving problems, and working with interesting, dynamic people. Reaching FI means having the freedom to work only when you find work that meets these criteria. That's the kind of life I want! So with these goals in mind, how do you actually do it? I've found some ideas, and I'll talk about them in the next few episodes. Stay tuned! Show Links: SOC Episode 2: Why Learn To Code For Financial Independence? SOC Episode 4: What is FI? This episode was originally published 20 February, 2018.
For any new web project, taking the time to PLAN before you CODE is key! Here are some key questions I asked myself before I started coding the new Start Over Coder website. It came down to 7 key questions, which I discuss in this episode. This episode was originally published 13 February, 2018.
Verdict on CSS Grid…it is awesome! This episode is about what I learned after digging in to the syntax and how you can learn it as well. CSS Grid is a new display method that is part of the native CSS3 syntax, and is supported in the majority of modern web browsers. The primary advantage of using grid is that you can create a web page layout by placing your content anywhere you like on a grid that you define yourself. No more floats, clears, or adapting to someone else's grid system—just build what you need and it works. Using CSS grid also make is incredibly simple to make layouts responsive with not very much code at all. Below is a list of the CSS Grid resources I've found to be the most helpful as I learned. Top Recommendations: Start Here! CSS Grid Changes Everything - YouTube video Learn Here! Wes Bos' CSS Grid Video Course - highly recommended! Talks & Demos (video content) Start Using CSS Grid Layouts Today (conference talk) Build a Mosaic Portfolio Layout with CSS Grid Creating a nice layout CSS Grid layout using grid template areas How to Create Website Layouts Using CSS Grid CSS Grid Layout Crash Course Flexibility & The Fold – new possibilities with CSS Grid Web Demos & Documentation CSS Tricks Complete Guide to Grid Grid By Example - Rachel Andrew demos Jen Simmons Labs Learn CSS Grid MDN Documentation This episode was originally published 2 February, 2018.
Whether you're actively looking for a job or not, you should be recruitment ready! I learned that the hard way this week. This episode is about what I wish I'd done ahead of time. What is recruitment ready? Up-to-date CV/resumé that is written with the type of job you want in mind. So if you're transitioning from another career to being a developer, your old CV won't do! Up-to-date LinkedIn profile, again with programmer-relevant skills highlighted. Bonus: online portfolio website to introduce yourself and show off your skills While this might seem like obvious advice, I wish I had taken it a lot earlier! These things have a way of not being prioritized if you're not actively looking for a job. Why? Well it's hard! How do you write about programming experience when you don't have any? What on earth can you write about that will make someone want to hire you? For these reasons and more, I never quite got around to preparing these things with dev opportunities in mind. AND THEN…randomly out of the blue I was introduced to the hiring manager at a company I would love to work for, and they are searching for a junior developer! We had a great conversation that made me even more excited about the opportunity to work there. And what was the first thing she asked for? A relevant CV! So I spent the weekend getting this together—not ideal on a short deadline, without time to finesse it and get others' feedback. This was my approach. This episode was originally published 30 January, 2018.
Pair programming is a productive way to write code with other people, and often used as an interview tool as well. I've been incorporating pairing into my study plan recently, and here's what I learned! What is pair programming? It's two people writing code together, and sharing one computer to do it. One person is the driver: their hands are on the keyboard and they are talking through the code they write as they write it. The other person is the navigator: the navigator takes a ‘big picture' approach and reviews the code as it's being written, stopping to ask questions or offer guidance based on what the driver writes. During the pair programming session, you would periodically switch so that each person sits in both roles several times. The main idea is that with two heads working together, the code will be better than if just one person was working alone. Here are the biggest benefits and lessons I've found so far in my pair programming experiences: You see another way to approach solving problems. It could be better, it could be worse, or it could simply be different. Regardless, you can learn something by seeing multiple ways of doing something! It's easy to put pressure on yourself to start writing code even if you haven't thought it all the way through yet, just because there's another person there watching. Instead, take advantage of a second mind and work together to create a full plan before actually writing any code. Pairing is a unique experience that you can only practice with another person! Make the effort, it's worth it. Since you're may work more slowly as a pair, take any environment obstacles out of the way before starting: dedicate a set amount of time and make sure you have a good internet connection (and backup plans). Regardless of who is the more experienced coder, it's beneficial for both people to work in both positions?the driver and the navigator. Make sure you switch off regularly! If you're learning how to code (on your own or otherwise), I would highly recommend working some pair programming time into the mix! It might be intimidating to start, but these benefits and more make it worth it in the end. And if you don't live in a busy area or can't get yourself to a place where other people are up for pairing, don't discount the option of finding a pair programming partner online. My experience was great—I'll include some links to open communities where you can look for a pairing partner in the list below. Show Links: What is pair programming? YouTube video Codebuddies public Slack Code Newbie public Slack Codeshare lets you work on code together online Codewars gives you coding challenges – great for pairing This episode was originally published 23 January, 2018.
Working with data is one of the most important aspects of development. This week I got an intro to relational databases, and here's what I learned. As we all know, a database is where we store data…what makes it relational is the method we use to store it: information is stored in tables, and then we relate those tables to each other by referencing unique id numbers from one table to the next. To interact with the data, we use a relational database management system (RDBMS) like MySQL, PostgreSQL, MariaDB, etc. Another option for storing data is to use a non-relational database like MongoDB or Neo4j which takes a less rigid approach to how and where data can be stored. These are also sometimes called NoSQL (not only SQL) databases and they provide flexibility when the data you're working with vary a lot in structure and content. However when the information is uniform, relational databases can be very efficient because there is not a lot of repetition, and you can easily access exactly the information you need with SQL, when you need it. With an RDBMS like MySQL, you can write queries to do everything from basic CRUD commands (create - read - update - delete/destroy) to refining searches and aggregating information. Using these queries and commands not only allows you to determine what information is displayed in your application, but it can also help with marketing decision, business development, advertising and much more. One correction—when I gave the Instagram example, I said that you would have a table for users, and then a table for “that user's photos” and so on. I meant to say you would have a table for ALL photos—it would not be a table for each user. You then link a user id to the photos table to show which user that photo belongs to. Sorry I misspoke! Show Links: Most popular baby names by US state The Ultimate MySQL Bootcamp W3 MySQL Exercises SQLZoo US Government Data UK Government Data Cloud9 web environment to practice This episode was originally published 16 January, 2018.
They say every professional coder should have a portfolio available for potential clients and employers to review. Here's a low-maintenance, inexpensive (or free!) way to do it. The simplest and least expensive way to host a website is to create a static website (I talked all about these in episode 31). But hard-coding all of the pages and your entire file structure is tedious and not a good use of time, especially if you expect the amount of content to grow over time (like with a blog, for instance). Static site generators allow you to set up a template for your site one time…after that's done, you only need to think about adding new content going forward. You write the content, and the site generator will process everything into a bundle of HTML pages for you. If you don't want to write any HTML or CSS you don't even really have to…there are many, many ready-made templates out there so all you need to do is add content, if you want. Easy! You'll need to basics to work with a static site generator: Access to your computer's command line (not as scary as it sounds!) A text editor (check out episode 39 for more info) Your programming language of choice installed A package manager or install method for getting the site generator Here are some options for getting started with static site generators: You'll need to get familiar with Markdown syntax for these Jekyll - written in Ruby, lots of free themes available (I can recommend Clean Blog), and host for free on GitHub Pages Hexo - written for Node.js, get started with a YouTube walk-through playlist Hugo - written in Go Gatsby - for JavaScript & React Gitbook - for book publishing …or visit StaticGen for 199 options! No matter which one you choose, be sure to take the time to look through some theme examples to see the capabilities…some generators have more functionality & more flexibility than others. Happy coding! This episode was originally published 9 January, 2018.
It's time to revisit my learning plan for learning to code! With the start of a new year and career uncertainty ahead, I'm setting some goals to make sure this Start Over Coder expedition stays on track. For the record & prosperity (!) I'm going to: Gain skills with relational databases: learn structure, learn SQL, build sample projects. Learn React, and build sample projects. Learn CSS grid, and build sample projects. Dive deeper into JavaScript and Node.js. And build sample projects! Get my first paid work as a developer by 30 June, 2018. Be more specific about calendarizing work sessions: more specificity = more productivity. Share what I learn in this podcast and in a blog. Practice pair programming. This episode was originally published 2 January, 2018.
A whole year of learning to code, whew! In this episode I reflect on some of the bigger lessons that will carry into the new year: Code. With Others. And set goals! These are the keys to success. Show Links: Episode 019 - There's No One Right Answer Episode 028 - Endings: Workshop, Bootcamp & Debt This episode was originally published 26 December, 2017.
This week I got rejected from a coding program that could have been a great way to jump into a new career. Bah humbug : ( While I put a lot of effort into researching and then applying for the program, turns out it's just not in the cards for the near future. So now it's about resetting, making some plans, and figuring out where to go from here. This episode was originally published 22 December, 2017.
This week I realized I didn't know as much as I thought I did about Node.js, so back to the basics. Show Links: Node.js Node.js Docs - Getting Started Start Over Coder Episode 20 - Too Early Intro to Node.js The Net Ninja Intro to Node.js For Beginners Playlist This episode was originally published 19 December, 2017.
The reading-to-coding ratio is important to be aware of when learning to code…it's important they don't get out of balance. When I notice I'm not writing enough code, here are some things I try. This episode was originally published 13 December, 2017.
The more you write code, the more you realize the importance of choosing good names for your functions and variables. In this episode I discuss a few best practices I've picked up so far. As a newbie to writing code, it's just about getting the darn code to work. Lots of questions take priority: What is a function? What is this var I keep seeing everywhere? Did I miss a semicolon AGAIN!? Thinking about how to name functions, variables, or elements takes a back seat. But the more you read code, and especially the more you read your own code from the past, it's easy to see just how important it is to name things well. It's probably the most important thing you can do to make your code readable. Here are some tips I've picked up so far about naming conventions: Be specific with names so that the name describes what is actually happening. Example: name a function calculateAge() instead of just calculate(), which is too vague. Don't use similar names. My terrible bad example was when I called a button “item-reward” and on the same page called a form “reward-item.” This is the epitome of confusing when you go back and read your code after a few weeks away. Don't use initials, single letters, or numbers as names. It's harder to understand and nearly impossible to search. Brevity does not always win over clarity! Basically when reading through your code, the reader should be told a story: a sequence of actions that makes sense to human understanding. To improve your own style of naming things I can recommend: Read other people's code, both good and bad. You'll get best practices from the good, and can see what not to do from the bad! Read books about best practices. I can recommend Clean Code by Robert C Martin. Ask other developers to review your code and offer suggestions for improvement. Do the time test: read your own code a few weeks or months after you've put it down. After some time away you'll see rather quickly where improvements could be made, as well as how clear or confusing it is. This episode was originally published 5 December, 2017.
For some info on what it takes to build an app from scratch, here's a progress update on the app I introduced in episode 35. The main updates: Goal #1 is shipping a minimum viable product (MVP). Since my initial plans got a bit complicated, I took a new approach and simplified the basic functionality of the app. I can always go back and add more robust features later?for now I'd like to get a good foundation completed. I also aimed to pick up a new skill by using a new front end framework, Semantic UI to style the site. In the testing stage, I found a bug! So researching some possible fixes, including the Mongoose queries written in my Express routes, and using AJAX requests to update small portions of the page. I'll do at least one more update on the app before wrapping it up! In the meantime… This episode was originally published 21 November, 2017.
Financial Independence and a career in coding are like peas in a pod. Here's why! This episode was originally published 28 November, 2017.
Quitting a well-paying, decent job to become a programmer is a big decision. This episode is all about the pros & cons. Although the initial impetus to pursue a coding career was very reactive to a bad situation, I truly threw myself into—and got excited about—pursuing a career as a developer. But as the sting of a bad work situation wore off, all of the great things about the job I'd be leaving came more into the forefront. Not to mention the stories out there about non-diverse, workaholic workplaces in tech. Is this really a good decision? No answers guaranteed in this episode, but here's a glimpse into the thought process involved with leaving one career for another. Show Links: Learn more about Effective Altruism Learn more about 80,000 Hours - lots of great research on choosing a career for personal fulfillment AND the greater good of the Earth. You can also learn about them in this TED talk. This episode was originally published 14 November, 2017.
This week I share two more great (and free!) resources for learning to code. The Coding Solo podcast is an entertaining UK perspective on working as a freelance software developer. And check out the Millennial Money Diaries blog for another perspective on starting a programming career with a view on personal finance! UPDATE FROM THE FUTURE: The Millennial Money Diaries Blog no longer exists
The Programmer 101 series answers the questions all new coders might ask themselves. Today: demystifying a common programming acronym. This episode was originally published 31 October, 2017.
The Programmer 101 series answers the questions all new coders might ask themselves. Today: shedding some light on the great text editor debate. This episode was originally published 25 October, 2017.
The Programmer 101 series answers the questions all new coders might ask themselves. Today: differentiating between different types of web developers. This episode was originally published 17 October, 2017.
The Programmer 101 series answers the questions all new coders might ask themselves. Today: clearing up some job title terms that sound quite similar! This episode was originally published 11 October, 2017.
Udemy's Guide for MongoDB from Stephen Grider is a good course for intro & advanced MongoDB topics. In this episode I share the best & worst parts. Show Links: Episode 29: course review of The Web Developer Bootcamp This episode was originally published 3 October, 2017.
I've started a new project, building a web app using Node & Express. These are the first things to think about when beginning a new project. This episode was originally published 26 September, 2017.
Getting stuck when you're learning to code on your own can be FRUSTRATING!! Here are some tips on how to get help. TIP #1 - Google TIP #2 - Rubber Duck It TIP #3 - Slack Communities TIP #4 - FreeCodeCamp Message Boards TIP #5 - StackOverflow, Reddit, etc. TIP #6 - Revisit What You've Already Learned TIP #7 - Take a break! TIP #8 - Join A Group TIP #9 - Pay For Help This episode was originally published 19 September, 2017.
This week I saw just how beneficial it is to practice every day, and more importantly, to practice well. How can we apply this to learning to code? After months of dillydallying around the piano I recently decided to rededicate myself and practice just 15 minutes a day to keep up the minimal skill I had earned through lots of practice. In 5 days I learned the majority of a song I'd been “learning” for the previous 4 months! This showed me just how productive it can be to not only make a daily practice habit, but also to be focused and targeted in that practice. So how can we apply this to learning to code? First of all, code every day. Forget less in between sessions and keep the skills you pick up along the way fresh in your mind. This is not new advice, but it's important! Equally important (maybe more so) is being specific about what you want to take away from each learning session. In a way, I'm still figuring out what this means for myself, but here are some of the key ideas I've been focusing on: When you're first learning, write code out as much as possible (instead of copying & pasting), even if it's something you've written many times before. Doing so will ensure you know what you're doing rather than relying on application or keyboard shortcuts. Work and re-work code you've written in different ways. You'll learn different ways to go about accomplishing the same thing, and will very likely find ways to optimize your code as well. Build small proofs of concept for bits of code that you're writing, and then practice working them into bigger projects. Really study the smaller pieces so you have a better understanding of the whole. Schedule your learning time to make sure you get it in each day. At the end of each session, plan what you'll work on the next day. These actions set you up for productive, daily sessions. Keep distractions to zero while you're working, and focus on one part of your code in each session. Always take the time to study the code you're writing–especially if you're taking inspiration from other people's code. Make sure you understand how it works before moving on to the next thing. This episode was originally published 12 September, 2017.
Picking up from last week, this episode shares some of the options you can try for hosting a full blown web app, so you can show off your work when you're learning to code. If you missed last week's episode which was all about how to host a static website, go back and listen to episode 31. Today we're talking about hosting applications with dynamic content, i.e. you need a database and have written the backend code. To review the basics, you will need a domain name (most of the time!) and web hosting to have a website–go back and listen to episode 31 to hear more about these. To host an app you will also need a database server, and the good news is that you can usually get the hosting bundled in with this. But you will almost always need to buy the domain separately. Here's the overview of services I talk about in this episode (this is not a comprehensive list, just my experience!!): Heroku Heroku link My #1 recommendation for small scale apps & proofs of concept It's free! You can host up to 5 free apps on Heroku. You interact with Heroku from the Heroku command line, but don't be scared off by this…they've got great tutorials and documentation. You can also link Heroku to your GitHub master branch for automatic, continuous deployment. You get a nice domain name, or can create your own: your-app-name.herokuapp.com You can get a database server for free, and lots of other services as well (both paid and free). Look in the ‘add-ons' section. Be aware if you want to scale up: you can get quality service for lower prices with other service providers once you need to leave the Heroku free tier. Amazon Web Services AWS link Works for static sites, works for more complicated sites too To host an app you'll use EC2 (web server), S3 (file storage), and RDS (relational database server) or DynamoDB (NoSQL database server). All of these services can be used for FREE for 12 months or more, and after that they're still massively inexpensive for simple, low-traffic demo apps. There's a steep learning curve for using Amazon Web Services, and also for getting all the services to work with each other correctly. Personally, I think it pays off in the long run. You do need your own domain name when using AWS. You can get one through Route 53 on AWS, or any domain registrar. Unfortunately, you do need a credit card to sign up for AWS. If you're not in the US, be wary of any fees your card company may charge–AWS services are billed in US dollars. Other Services Azure Digital Ocean Google Read this blog post for further comparison on these! This episode was originally published 5 September, 2017.
Once you've learned a bit of code, you want to show it off! Here are some of the options you can try for hosting a static website. In part 1 of 2 we're talking about hosting static websites, or sites that don't require any database connection or dynamic content. You might want to buy your own domain name (ex: yourname.com) which is where people will find your website. Separately, you will need website hosting, a service which stores your webpage files on a server and sends them to users when they visit your domain. There are many companies eager to sell you a domain name and/or their hosting services. Sometimes you can bundle the two and get some great discounts! My Approach So which should you choose? My approach is always based on my goals for the site I'm building at the time. Do I want it to be ready quickly, do I want it to be inexpensive, or do I want it to be high quality (ideally with my own code)? You can only get 2 out of 3 at a time! For fast & quality, Squarespace is certainly the one to pick, but I'll pay more than what I'd like. For cheap & quality (well, as good quality as I'm capable of writing), it's AWS…but the tradeoff is the time it will take me to write my code, AND the time to figure out the monster that is AWS! The next thing I ask myself is what are the goals for this project. If it's something I know I'll keep up long term, I'll take the time to set things up properly on AWS and build it myself from scratch. On the other hand if it's something I'm just trying out, I might start on Wordpress.org (with a steeply discounted hosting plan) just to get something up quickly and see whether I'll actually stick with it. Perfect example–startovercoder.com! Next question–are there any deals to be had? Even though I prefer AWS, sometimes it's worth it to use another service in the first year to take advantage of their promotions. For example, to buy the Start Over Coder domain on AWS it would be $12 for the domain, plus the monthly hosting and storage costs. Instead I used a registrar which offered a free domain and 12 months of hosting for $11.92! At the end of the year it's just a matter of moving everything over to AWS (another great skill to learn!). Visit domcomp.com to compare the latest prices & services from many registrars at once. Final question: I ask myself what I want to learn by building my website. Personally, I'm not interested in learning PHP (not for now at least) so I'm fine to use a mediocre-looking Wordpress theme rather than building my own or doing a lot of customizations. On the other hand, having a level of comfort with AWS will be a great asset (I think!) when it comes to looking for jobs, so I accept the pain & time that will go into figuring it out. This episode was originally published 31 August, 2017.
Recently completed my first web app as part of a group workshop and I learned a lot! Here are the key steps and biggest takeaways from the experience. Coming Up With App Ideas Set a constraint or goal to help narrow down ideas. Pick one problem to solve, and then think about many ways to solve it. Do a lot of brainstorming–everything goes on the list! Research each idea to determine what you need to do technically to build it. Pay special attention to APIs, data sources, and other aspects which may take a lot of work to integrate. Picking An App Idea To Build Set a deadline for when you want to complete a minimum viable product, and then pick an idea that is feasible within that time limit. Pick an idea that stretches your learning, but isn't so advanced that it will discourage you from finishing. If you know very little about the tech stack, do a bit of extra research to find out how much documentation there is and how many tutorials exist online…if you don't have resources to go to when you get stuck, it will prove to be very difficult! Building the App There will be a lot you will come against that you can't even imagine ahead of time, but that's the fun of it! Here are some things which can help guide the process despite this: Wireframing: Sketch, Invision, Origami, Google Docs, or even just pen & paper will give you a map to follow during the project. Build the function before building the design, as existing design can limit the code you write. Set some user questions at the beginning to make sure you're hitting all the key needs when building the app. Collaboration Working with a group has both benefits and challenges. Here are some things which can make the experience work well: Git for version control & GitHub for collaboration. Check out episode 14 of this podcast to learn some basics. Use branches so that each person is working on different parts of the code. You can also use GitHub's issues and projects to keep track of what needs to be worked on, what's in progress, and what's been completed. Meet with the group to get everyone on the same page as far as expectations go. If some people have more/less time to work on the project, or more/less skills in certain areas, it's helpful to know in advance. Be honest! Ask questions about the code other people write to learn even more. “Finishing” The App If you identified some user questions at the beginning to determine what you would be happy with as a minimum viable product, make this your goal for “finishing.” There will always be something else to do or other improvements to make, but focus on shipping something stable as an initial goal. Deployment is the final hurdle which may take more effort than anticipated. Don't let this derail the project. Go for a simple service like Heroku if it helps. Send the live link to some friends for user testing. They may find some things you missed while you were deep in the code. This episode was originally published 22 August, 2017.
Udemy's Web Developer Bootcamp is a fantastic course I can highly recommend. In this episode I share the best & worst parts, and some tips to get the most out of it. To check out the full description of Colt Steele's course or to sign up, view the course on Udemy. Show Links Paper.js - JavaScript animations library Howler.js - JavaScript library for playing sounds Colt Steele's MySQL course This episode was originally published 15 August, 2017.
Three big endings this week: online bootcamp, a coding workshop, and 15+ years of debt. That's a lot for 9 days! This episode was originally published 8 August, 2017.
FRUSTRATION!!! This week I share the painful experience of getting stuck while coding. And some helpful tips to get through it! I'm in the process of building my first web app from scratch and adding the login feature proved to be massively difficult. No matter what I tried, no matter what tips I got, I just couldn't get it working. While it's not the first time I got stuck coding something, it definitely held out the longest, leading me to bang my head against more walls than I'd like. But in the end I found some tips to get through it (be sure to check out last week's episode which inspired all of them!: Don't get frustrated! If you do, step away from the code and refresh your brain. Break the problem into smaller pieces: take the part you can't solve and write it as standalone code. Then it should be easier to fit into the bigger piece. If you use other people's code, be sure to take the time to learn how it works, otherwise it's just a band-aid. When things get tough, just stick with it… …but ask for help (ideally well before getting worked up to tears)! This episode was originally published 1 August, 2017.
How can you make looking for your first tech job less scary? Go to a recruiting event before you're actively looking! Last week I attended my first tech job fair to take the edge off. This episode was originally published 31 July, 2017.
Think Like A Programmer by V. Anton Spraul aims to teach the fundamentals of computer programming. It's not perfect, but it offers some great takeaways for anyone learning to code. In the book Spraul breaks down how to go about solving a problem step-by-step, covering fundamental topics like arrays, pointers, dynamic memory, classes, and recursion. Each topic comes with code snippets written in C++, and the chapters conclude with a list of exercises you can do on your own to make sure the information sticks. The key takeaways were: Take the time to form a plan when faced with a problem to solve. Random trial and error is not advised! Break big problems into smaller pieces and try to solve the small pieces. Then you might spark ideas about how to work on the parts you're less comfortable with. If a program will have multiple parts to solve, start with the one with the most constraints. Write separate programs to test small functions within a bigger project. If you can write a small piece on its own, you'll have an easier time fitting that function into the bigger project. Start with what you know and find analogies with code you've already written. Be careful with using other people's code…doing so can hinder your own learning, even if your program works. Don't get frustrated! Work on something different or just go take a walk when things get tough. Show Links: Where to find the book: Goodreads, Amazon, No Starch Press Start Over Coder ep 18 - free stuff from your local library V. Anton Spraul's YouTube Channel This episode was originally published 25 July, 2017.