Software Development Resources
In an effort to make the tech industry more accessible, I have created this document to help anyone who wants to become a software developer see the materials I have used in my journey to break in and grow within the tech industry.
The following resources listed in this document are the courses, articles, videos, tools, and games that helped me build a major part of my foundation as a programmer.
This will likely be an ever growing document, as being a software developer means constantly growing and learning more.
Sections:
- Main Resources
- Supplemental Resources
- Job Resources
- Coding Games & tools
- Social Issues in Tech and Organizations to Support
- CS Culture and People to Follow
- Further reading
Main Resources
The resources listed in this section were courses or materials that helped me build a major part of my foundation as a programmer.
One thing of note is that there's a lot of overlap in the CS topics these resources all cover which is intentional. A lot of these topics are difficult to grasp initially, and I found while learning them, that I was able to gain a much stronger understanding of each topic if I learned about it from multiple sources.
Khan Academy: Computer Programming
-
This is a really great resource for anyone just starting out and was integral to my success as a newbie. The lessons here are very simple and cater to learners of all ages, not assuming any kind of background in programming. The instructor, Pamela, is really great at breaking down pretty complex concepts in such a way that they’re incredibly easy to understand. The only issue I had with these tutorials was the Object-Oriented Programming section in the introduction to JavaScript, I found it a bit difficult to understand at the time.
-
My resource rating: 4.5/5
Harvard’s CS50
-
CS50 was a really helpful resource when I was beginning to learn about concepts like algorithms and data structures, as well as the importance of memory management (even in scripting languages like JavaScript). It also covers the basics of things like hexadecimals in color coding, very basic encryption, and problem solving programming techniques. The big issue I have with this course is that it gets really really hard really quickly for a course that is marketed towards total beginners. At times I found the instructors to move too fast during the homework tutorials, and I found that reaching out to the Facebook and Reddit groups often left me more confused than I was before.
-
My course recommendations:
-
CS50's rule that you shouldn’t look at anyone else’s solutions while trying to solve the homework problems isn't really indicative of how the software development field works. If you are not taking this course for credit or to get the certificate, I would recommend timeboxing how long you'll work on a homework problem (e.g. 15 minutes) before you search for other people's solutions on Google. DON'T copy and paste their solutions, that won't help you learn at all. Try to reason you way through their solution, be sure that their solution makes sense to you, and then try to find an alternative solution to the problem using what you have learned from theirs. Bonus points if you can come up with a solution that is more efficient.
-
While the class lectures and shorts are great, you’ll likely have to look at outside resources like the BaseCS series to reinforce what you’re learning about CS fundamentals from this class. If you're new to programming, I would highly recommend taking Khan Academy's computer programming course first.
-
Take many many breaks while working through this course. Most people do not finish CS50 quickly, and it's okay to work through it over weeks and months.
- Link: https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x
- My resource rating: 3.5/5
CodeNewbie and BaseCS
- I sincerely wish I had discovered this resource much much sooner in my coding journey. Codenewbie is a podcast/blog/community that follows real people on their journey to becoming better software developers. The main podcast features talks with various people in the field, giving advice or testimonials on how specific technologies work, what they have learned from working with specific tools, and loads of other cool stuff. The episodes are usually 45 mins to an hour long.
The BaseCS podcast is similar to the main podcast, however each episode is shorter and the entire focus is on the foundations of computer science taught by Vaidehi Joshi. The BaseCS podcast is incredibly helpful for learning the kind of computer science fundamentals that I personally struggled to understand elsewhere.
And finally, there’s the community, it’s most active on twitter, but there’s also a facebook group which I have found to be incredibly useful and encouraging as a beginner.
- Links:
- https://www.codenewbie.org/podcast
- https://www.codenewbie.org/basecs
- https://medium.com/basecs
- https://twitter.com/CodeNewbies
- My resource rating: 5/5
The Net Ninja
-
I cannot recommend this channel enough. The Net Ninja is a a YouTube channel that covers a variety of topics throughout the web stack including frameworks like React and Vue. This channel really helped me cement my knowledge of Node.js and Graphql and also helped me through my coding bootcamp when I was learning MongoDB, Python, and Django.
-
Links:
-
My resource rating: 5/5
Team Treehouse
- Team Treehouse is a really good resource for learning specific technologies and tools in the web and mobile development space. Their library has courses in all of the major scripting/high-level languages as well as some courses in lower level ones like Java, Swift, and Objective-C. They also have courses on Git version control, Linux console foundations, HTTP and other networking protocols, and even how to choose a text editor.
I also found this to be a really good choice for helping me to nail down object-oriented programming, as well as for learning Node.js, jQuery, and how AJAX and JSON both work. My main problem with this resource was that I felt that the cost of $25 a month for just a basic membership seems quite expensive especially when compared to many of the Udemy courses that are out there.
FunFunFunction with MPJ
-
Another really great YouTube channel, he mainly focuses on JavaScript but he has videos that cover a few other things like Test Driven Development, Haskell, and his opinions on various technologies as a veteran in the field. I personally learned a lot from his series of videos on JavaScript Functional Programming, Advanced Object-Oriented Programming, and ES6 features. He can get a little too abstract for newbies (which he acknowledges as most of his videos are meant to be for intermediate to advanced programmers), but if you already have a good grounding in programming, especially in JavaScript, his channel is really useful.
-
Link: https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q/playlists
-
My resource rating: 4/5
The Coding Train by Daniel Shiffman
-
A really good resource for tutorials on JavaScript. Most of his videos have a focus on programming as it applies to art work using the P5.js library, however his “Working with Data", “TwitterBot”, and "ES6" playlists are the courses I believe have the most value. The biggest problem for me is that Daniel has a certain awkwardness on camera and he makes a lot of uncomfortable, self-deprecating jokes that can be distracting during the videos.
-
My resource rating: 4/5
Supplemental Resources
The resources in this category were courses, videos, and articles that I found to be very helpful while learning to program, however, in many cases they were not necessarily integral to my foundations as a software engineer.
Web Developer Roadmap
- A pretty good guide on what to learn to achieve your goals as a developer. Take note, this roadmap is good suggestion for anyone who doesn’t know what to learn, but don’t take it as the law. If you want to learn a technology that isn’t on this list or is further down the path then suggested, do it. You’ll learn best by following your own curiosity rather than someone else’s list (Including the one I have made here).
Dash.General Assembly:
- General Assembly’s pre-admittance work. Focuses almost exclusively on front-end development, however I found it be one of the best tutorials on HTML and CSS out there. For anyone who has already gone through something like Khan Academy and wants to get to the next step, this is a great resource. The greatest reason I would suggest this course is because it teaches you about things like CSS breakpoints, accessibility, and mobile responsiveness which are pillars of UI/UX development.
- Link: https://dash.generalassemb.ly/
Free Code Camp:
- Great resource for learning to code for free and includes hours upon hours of coursework on technologies across the web stack. I have mainly used their YouTube channel to learn about data structures, however that only scratches the surface of what they offer.
- Links:
C Programming Tutorials and MyCodeSchool
-
These two channels really helped me break down some of the harder parts of programming as beginner in C and I would highly recommend watching their videos while working through doing CS50:
-
Links:
Microsoft’s Learn to Program in Java Course:
-
Pretty good resource for learning the basics of the Java programming language. At times it be a bit slow if you have any prior experience writing programs in Java, but it does a really good job of covering the fundamentals and is great for learning object oriented programming.
Node.js Best Practices
- A collection of articles on building a node.js application in production environments (e.g. live on the internet). This directory contains a lot of advanced topics that are mainly important if you want to develop a web app at a professional level.
- Link: https://github.com/goldbergyoni/nodebestpractices
Eloquent JavaScript
-
A very in depth book on how Javascript works at its lowest level. I would not recommend this course for beginners, however I believe it's a great read to tackle once you have become somewhat advanced at programming in JavaScript.
Stack Overflow
-
Essentially the Yahoo Answers of programming but people actually use it. Generally speaking, if you have a question about something related to programming, someone has asked it and had it answered here. The biggest drawback is that it can be a bit beginner unfriendly as the stackoverflow community can be quiet toxic at times.
HackReactor Prep
- A crucial resource if you are planning on attending a coding bootcamp in the near future. This course requires that you learn and pratices numerous mini-javasript algorithms. It's super helpful if you are attending a bootcamp that has a technical screen.
- Link: https://www.hackreactor.com/prep-programs/
Dev.to
- Pretty much a combination of the CodeNewbie community and StackOverflow. This website/community prides itself on being beginner friendly and tries to maintain an environment that makes asking “dumb” questions easy. I would highly recommend this to developers of all levels who may feel intimidated by the often toxic culture of StackOverflow.
- Link: https://dev.to/
How To Graphql
A very in-depth tutorial series that teaches you how to begin developing Graphql for client to server applications. While the tutorials here are bit heavier on the theory-side of GraphQL, I find that they pair nicely with the Net Ninja's course on Graphql which is heavier on the application side of the technology.
Job Resources:
If you elect to make software development more than just a hobby, there are tons of companies looking for people with your skillset. In fact, according to the 2016 Department of Labor statistics, over the next 10 years there will be far more positions in software development than there are people to fill them, which means working in this field will likely lead to above average salaries.
Levels.fyi
- A site that compares software developer salaries across the industry based on experience, location, company, etc. Far more accurate than Glassdoor, this resource is a great place to start if you are trying to figure out how much you should be making in accordance with the market rate for your area.
- Link: https://www.levels.fyi/
People of Color in Tech:
- Blog/Community/Job Board that seeks to get more PoC, especially Black people into the tech industry.
- Links:
Blacks in Technology
- Community focused organization aimed at growing and developing black womena and men in tech.
- Link: https://www.blacksintechnology.net/jobs-board/
How to code FizzBuzz solution in JavaScript:
Fizzbuzz is a notorious problem asked in many programming interviews. For most programmers it would appear quite easy to solve, however, there is one small gotcha that often slips up even the most veteran developers. It is also hailed as one of the most common technical interview questions. -https://www.youtube.com/watch?v=Pt8gGCc2Gsk
Exhaustive List of Front-End Developer Interview Questions
- A good resource to study over if you are seeking a job in front end development.
- Links
Coding Games & Tools
Flexbox Froggy
- A game that introduces you to CSS’s amazing flexbox functionality and how to use it to arrange elements in your front end applications. https://flexboxfroggy.com/
SQL Murder Mystery
-
A small game that helps you practice your SQL skills by solving a murder based on evidence in a police database. You'll need a basic understanding of SQL in order to be able to play, but it's great for reinforcing your skills.
DevDoc.io
- Really useful web app that organizes the documentation of pretty much every popular programming language/framework in one place, making it super useful for when you don’t want to have a thousand tabs open covering the documentation for multiple frameworks at a time.
- Also offers offline support which can be really useful if you’re writing code on a plane or train and can’t access the internet.
JavaScript Object Explorer
- A useful web app that allows you to explore the creation and functionality of Javascript objects in an interactive setting. I found this super usueful while working through Khan Academy's course on object oriented JavaScript.
- Link: https://sdras.github.io/object-explorer/
Regex101
- Another useful web app for learning how to create Regular Expressions. What I like about this tool is that it both helps you create validation regex patterns, and also explains the functions of each symbol within the pattern.
- Link: https://regex101.com/
Binary to Decimal Converter
A tool for converting binary numbers into decimal formats (and vice-versa). Not something I need to do on the day to day, but it is useful when you are first learning how binary works.
Http Cats
A useful web page for referencing http status codes and their associated meanings.
- Link: https://http.cat/
Caniuse
A great website that tells what front-end technologies are available on both desktop and mobile web browsers. This is extremely useful if you are working on web app that must support wide a range of users including those using legacy browsers.
Social Issues in Tech and Organizations to Support
Every day, new advancements in the tech industry change the world we live in and alter the fundamental ways we go about life. Unfortunately, sometimes these changes do not affect us all evenly, and can sometimes further marginalize certain groups. As such, social justice and ethical practices are incredibly important in this industry. Below are resources I have used to learn about social issues in tech and some of the organizations that have been created to solve them.
Code2040
- Nonprofit organization that focus on racial equity in the tech industry, specifically for black and latinx tech workers. This organization has been incredibly successful in getting more POC into the industry through its fellowship program, and it also boasts its Code2040 Summit Conference in San Francisco each year bringning diverse technologists from all over the conutry to the bay area.
- Link: http://www.code2040.org/
Code Girl:
- Available on Netflix, this documentary is super interesting and discusses how one competition aims to reduce the gender gap in tech by encouraging young women to go into programming. (A must watch for anyone wanting to know more about the representation gap in tech and/or anyone who wants to create their own tech-based social enterprise): -http://www.codegirlmovie.com/
BlackGirlsCode
- Organization that aims to raise the number of black women in the tech industry by targeting girls 7-18 years old and getting them interested in programming. BlackGirlsCode has chapters across the the US, and has done amazing work getting more young black women into the field. This is my personal favorite organization on the list and the charity I donate to the most. BlackGirlsCode is also available on the Lyft “Round up and Donate” program which makes it super easy to donate to.
- Link: http://www.blackgirlscode.com/
Hidden Genius Project:
- A really amazing, Oakland based, Non-profit that seeks to get more young black men into tech and computer science. The Hidden Genius Project has partners across the tech industry, and is doing a lot to fight the representation gap for black men in the tech industry.
- Link: http://www.hiddengeniusproject.org/
GirlWhoCode:
- Another great organization that aims to defeat the gender gap in tech. Also available through Lyft “Round Up and Donate.” -https://girlswhocode.com/about-us/
TechHire Oakland
An organization based in Oakland, California that works to help East Bay residents from underrepresented backgrounds gain access to the tech industry.
CS Culture and People to Follow
Command Line Heroes
A podcast by Saron Yitbarek (founder of CodeNewbie) that discusses the history of computing starting from the origins of the operating system and command line. Super interesting to listen to if you interestde in learning about the hisotirical context that created many of core technologies used in software development today.
The Happiest Cat:
A game developer with very interesting videos about the ridiculous amount of work and talent that goes into developing modern video games.
Vaidehi Joshi
The creator of the BaseCS series and advocate for accessibility in Computer Science. Also very active in the social justice space with an intersectional approach to equity in the tech industry.
Saron Barek:
Founder of CodeNewbie and a great resource in learning about tech
Erica Joy
Prominent voice in the tech industry having led teams at Google, Slack, and Microsoft. Strong advocate for Diversity and Inclusion in the tech industry.
Sophie Albert
Former manager of the React.js team at Facebook and well known voice in the tech industry.
Dan Abramov
Influential member of the React.js team at Facebook.
Sarah Drasner
Prominent engineer in the tech indsutry, on the core contributors team of the Vue.js framework.
Michael Berhane
Founder of PoC in tech and cofounder of the tech-ish podcast.
Danielle Leong
Well-known engineer manager at Github.
DHH
Creator of Ruby on Rails and co-founder at Basecamp.
- Link: https://twitter.com/dhh
Mina Markham
Well known software engineer at Slack.
Further Reading
Architecture, App making, Database Management
- 10 Rules for a Better SQL Schema
- Project structure for an Express REST API when there is no “standard way”
- Pagination: You're (Probably) Doing It Wrong
- Database Normalization Explained
- Difference between Controllers and Services in an Express Rest API
- Why you should isolate Express from the rest of your Node.js application
- Express Code structure
- Bulletproof node.js project architecture
- Evolving API Pagination at Slack
Business, Startup, General Industry Info
- What is the General Data Protection Regulation?
- What It’s Like Managing 10 Million Users As a Solo Developer
- I spent 3 months applying to jobs after a coding bootcamp. Here’s what I learned.
Tutorials, Javascript, Coding Guides
- JavaScript Basics Before You Learn React
- JavaScript Promises: an Introduction
- Pure versus impure functions
Security
- GraphQL security in Node.js project
- How to safely store passwords
- Web Security 101
- Securing Your GraphQL API from Malicious Queries
- How to secure tags in the browser
Devops, Infrastructure, Code Deployment:
- AWS Tips I wish I’d Known Before I Started
- Heroku vs AWS EC2 (or Infrastructure as service vs Platform as service)
- Difference Between Horizontal and Vertical Scaling