This is my working through the Cracking the Coding Interview & Leetcode challenges, copies of my notes from my time at Lambda, and various education/job-related things I think are useful. The reference material contained herein is still in progress.
A (*) in this readme indicates that the link leads to a live file that is still incomplete. If there is a [sample] designation, that means it's coming, but not live yet.
- Bootstrap: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- Cypress: [Notes] | Anki Flash Cards | [Cheat Sheet]
- Emmet: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- GraphQL: Notes (*) | Cheat Sheet
- HTML & CSS: Notes (*) | HTML Anki Flash Cards | CSS Anki Flash Cards | Cheat Sheet | Cheat Sheet | Cheat Sheet
- Java: Notes (*) | Anki Flash Cards | Anki Flash Cards | Cheat Sheet | Cheat Sheet | Cheat Sheet
- JavaScript: Notes (*) | Anki Flash Cards | Cheat Sheet | Cheat Sheet | Cheat Sheet
- LESS: [Notes] | Anki Flash Cards | [Cheat Sheet]
- Node, Knex, Express: Notes (*) | Node Cheat Sheet | Knex Cheat Sheet | Express Cheat Sheet | Quick Set-Up Guide
- Python: [Notes] | Anki Flash Cards | Cheat Sheet | Cheat Sheet
- React & Redux: Notes (*) | React Anki Flash Cards | Redux Anki Flash Cards | Cheat Sheet
- Regex: Notes (*) | [Anki Flash Cards] | Cheat Sheet
- SQL: Notes (*) | Anki Flash Cards | Cheat Sheet
- Tailwind CSS: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- TypeScript: Notes (*) | Anki Flash Cards | Cheat Sheet
- Visual Basic: [Notes] | Cheat Sheet
- Data Structures & Algorithms: Notes | Anki Flash Cards | [Cheat Sheet]
- Graphs: Notes 1 | Notes 2 | [Anki Flash Cards] | [Cheat Sheet]
- Calculating Big O
- Stack Overflow Big O Explanation
- Stacks v. Heaps
- Am I Ready for the DS&A interview?
- Bit Manipulation: Notes | [Anki Flash Cards] | [Cheat Sheet]
- Computers: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Operating System: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- Notes | [Anki Flash Cards] | Cheat Sheet
- OO Interview Tips
- OO Design Patterns (*)
- OOD Patterns Glossary (*)
- OOD Patterns Quick List
- Scalability: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- System Design & Architecture: Notes | [Anki Flash Cards] | Cheat Sheet (*) | [Available Tech Cheat Sheet]
- UML: Notes (*) | Cheat Sheet
- System Design Interviews: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Agile: Notes (*) | Anki Flash Cards | Cheat Sheet | Cheat Sheet | Cheat Sheet | Cheat Sheet
- PowerShell: [Notes] | Anki Flash Cards | Cheat Sheet
- Git & Bash Terminal, VS Code Shortcuts: Notes (*) | Git Anki Flash Cards | Cheat Sheet
- Docker: Notes (*) | [Anki Flash Cards] | Cheat Sheet | Cheat Sheet
- Azure: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Cortana: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- Postman: [Notes] | [Anki Flash Cards] | [Cheat Sheet]
- Clean Code: Notes (*) | [Anki Flash Cards] | Cheat Sheet
- Clean Coder: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Clean Architecture: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Gang of Four book: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Web Scalability for Startup Engineers: Notes (*) | [Anki Flash Cards] | [Cheat Sheet]
- Cracking the Coding Interview: Anki Flash Cards | Problems
- problem solving tips
- coding challenge patterns
- interview tips (*)
- good interview questions to ask
- code review tips (*)
- behavioral questions: Readme (*) | [Anki Flash Cards]
- hot-seat questions: readme (*) | [Anki Flash Cards]
- Self Study Questions: [Readme] | Anki Flash Cards
I can't recommend TutorialsPoint enough as a great base or starter place to go for your knowledge. There are a TON of different languages, frameworks, and fundamental computer science concepts explained there, including object-oriented design, data science and algorithms, how to use various cloud providers, languages, frameworks, operating systems, and more. Study and take notes on a subject there, and then any videos you go on to watch or other things you do to learn will be very easy to understand and follow through on.
- TutorialsPoint
- System Design Primer
- OOAD Tutorial
- Docker Tutorial
- TypeScript docs
- GSAP
- Visual Studio
- Visual Studio
- Operating System Tutorial
- Azure Tutorial
- Microsoft Style Guide
- HighScalability.com Examples
- Google Style Guide 1
- Google Style Guide 2
I am a huge fan of Front End Masters. Lambda students receive a free six-month sub as part of the GitHub Student Pack.
- Wes Bos's free JavaScript 30 course; this course really helped me a ton and has some great flashy little projects to learn
- Wes Bos's free Command Line Power User course
- System Design Playlist
- Design Patterns Playlist
- Front End Masters LPs
- FEM React LP
- Ruby on Rails
- NodeJS/Express
- JavaScript
- Axios/Ajax/JSON
- Cortana
- PowerBI
- MySQL & AWS
- PHP Front to Back
- Python
- C++
- HTML/CSS/GSAP/SVG
- Linux
- 30 Days of React
- Mobile
- UML
- Excellent Interview-Related Tips from Dan Croitor
YMMV, but I highly recommend Cornell note-taking style for note taking with a weekly review (answering the questions) to stay refreshed on what you learned. This style of note-taking is how it was a fairly easy task to create so many Anki flash cards; I already had the questions all written out by the time I went to make the flash cards.
(I know, I know.)
I wanted to share these links because there's some really good info on job-related things like how to have a productive 1:1 with your manager at a job, how to deal with incomplete specs on a project, etc.:
- how to deal with incomplete specs on a project 1
- how to deal with incomplete specs on a project 2
- how to have a productive 1:1 with your manager 1
- how to have a productive 1:1 with your manager 2
- how to have a productive 1:1 with your manager 3
- what does career progression look like in cs
- how/why to keep a work journal 1
- how/why to keep a work journal 2
- how/why to keep a work journal 3
- how/why to keep a work journal 4
- career development books beyond tech skills 1
- career development books beyond tech skills 2
- career development books beyond tech skills 3
- mistakes to avoid 1
- mistakes to avoid 2
- how to constructively communicate with your team lead/ask for help
- how to learn as a tech lead
- what to do during onboard as a new employee to make a good impression on your manager 1
- what to do during onboard as a new employee to make a good impression on your manager 2
- what to do during onboard as a new employee to make a good impression on your manager 3
- what to do during onboard as a new employee to make a good impression on your manager 4
- what to do during onboard as a new employee to make a good impression on your manager 5
- what to do during onboard as a new employee to make a good impression on your manager 6
- how to help grow a junior dev
I have read and highly recommend every one of these.
- Clean Code, Bob Martin
- The Clean Coder, Bob Martin
- Clean Architecture, Bob Martin
- Design Patterns: Elements of Reusable Object-Oriented Software, Gang of Four
- Web Scalability for Startup Engineers, Artur Ejsmont
- Cracking the Coding Interview, Gayle Laakmann McDowell
- First 90 Days, Michael Watkins
- Debugging, David Agans
- Think Like a Programmer, Anton Spraul
- Kotlin in Action, Dmitry Jemerov
- Intro to Algorithms, Cormen, Leiserson, Rivest, Stein
- Patterns of Enterprise Application Architecture, Martin Fowler
- Agile Estimating and Planning, Mike Cohn
- Test Driven Development By Example, Kent Beck
- Shell Scripting: How to Automate Command Line Tasks Using Bash Scripting & Shell Programming, Jason Cannon
- Applying UML & Patterns, Third Edition
- Testing Computer Software, Kaner, Falk, Nguyen, Hung, Wiley
- Essential TypeScript: From Beginner to Pro, Adam Freeman
- Effective TypeScript: 62 Specific Ways to Improve Your TypeScript
- TypeScript 4 Design Patterns & Best Practices, Theo Despoudis
- Spring Boot in Action, Craig Walls
- Effective Kafka, Emil Koutanov
- Domain-Driven Design, Eric Evans
- Software Requirements, Karl Wiegers & Joy Beatty
- Rapid Development, Steve McConnell
- Code Complete, Steve McConnell
- Enterprise Integration Patterns, Gregor, Hohpe, Woolf
- Atomic Habits, James Clear
- How To Win Friends and Influence People
- Pragmatic Programmer
- Bullet Journal
- ActiveMQ In Action
- Implementing Domain-Driven Design, Vernon Vaughn
- Domain-Driven Design Distilled
- Building Secure and Reliable Systems
- Coders at Work, Peter Seibel
- Continuous Delivery, Humble & Farley
- Continuous Integration, Duvall & Matyas
- Practical Monitoring, Mike Julian
- Designing Data-Intensive Applications, Martin Kleppmann
- The Lean Startup
- Service Design Patterns, Robert Daigneau
- Mythical Man Month, Frederick Brooks, Jr.
- Beyond Software Architecture, Luke Hohmann
- Refactoring to Patterns, Joshua Kerievsky
- Building Event-Driven Microservices, Adam Bellemare
- Refactoring, Martin Fowler
- Working Effectively with Legacy Code, Michael Feathers
- Docker Bootcamp, McKendrick, Raj, Chelladhurai, Singh
- Hands-On Design Patterns with Kotlin, Alexey Soshin
- SQL For Data Analytics, Malik, Goldwasser
- SQL Antipatterns, Bill Karwin
- Beautiful Code
- Pro Git
- Common Sense Guide to Data Structures & Algorithms
- Clean Craftsmanship
- Code That Fits In Your Head
- RabbitMQ Essentials, Johansson, Dossot
- Node.js Design Patterns, Casciaro, Mammino
- Programming TypeScript
- Natural Language Processing in Action, Lane, Hapke
- Beej's TCPIP Guide
- Assembly Language for x86 Processors
- Elements of Computing Systems: Building a Modern Computer from First Principles
- Art of Computer Programming
There are lots of other ways to figure it out, but my suggestion is to use your previous or current work experience as a muse of sorts to figure out a unique project you can build. What problems can you solve with your tech AND real-world knowledge that you would use your built app to solve? If there's an industry you want to work in, research what different tech companies are doing in that space and build a clone of one of those things, preferably NOT in the language of the original. Try really hard to come up with things like this, where you applied yourself and your skills to generate the idea, because that is how you stand out in a world of to-do lists. Your interview answers will stand out as well as your projects.
If you're having trouble figuring out what to learn next, my suggestion is to figure out what industry you want to work in or what place or type of place you want to work at, and then do research on the various job boards and read a lot of job descriptions to get a feel for what people in those places know and expect their tech employees to know. Read what job ads for your next career step are requiring. Then go learn what you find. This is a place where you could also potentially leverage your previous work experience to figure out what to learn.
Remember, you are in the driver's seat for your career. You are the one that needs to figure out what you need to learn so you can grow and progress your career.
- Make detailed readmes; don't make hiring people work to have to find out what your app does, how it works, key features, tech stack, who worked on it with you, what you did/your role, etc. A lot of people don't do this, so it stands out. This also helps refresh you before going to an interview of the highlights of a particular project so you can talk about it easier at the interview.
- Also try out Code Climate badges.
- Fill out your about-me readme on your GitHub profile.
- Make sure your GitHub squares are green at least five days a week if at all possible.
- Start creating your portfolio early so you can give it the time and effort it deserves.
- Handwriting notes isn't for everyone, but it does force you to think about what you're writing for a longer time than if you're typing the same thing.
- Don't be afraid to write design docs, UML diagrams, robust general documentation, Postman docs/tests, and the like for even small projects, because it proves you know how to do it and shows leadership, shows that you can keep the big picture in mind.
- Put general comments throughout your code while you're writing your project so you know why stuff is the way it is and maybe extremely short summaries of what it does, because you aren't going to remember why you did something six months down the road when you need it. It will be useful to have this info for interviews.
- If you are terrified of public speaking, there is only one way to get over it, and that's to practice it. Go on Zoom, answer an interview question, no matter if it's behavioral or technical, draw, go through the motions, and talk out loud, recording it to watch it later. Then when you watch it, make some general notes about things you didn't like or think can be improved. Do this over and over and over again until you are comfortable. There are services out there that you can do this with a buddy or an interviewer, free and paid, but if you are able to self-evaluate, you only need yourself.
- Contribute to open source; it can be documentation or other things, not necessarily code.
- If you are intending on interviewing at a place that requires a system design interview, you need a few weeks to a month to properly study everything you need to know. Giving it only a few days will not be enough!