Skip to content

evoingram/endorsement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Endorsement Repo


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.

Table of Contents


Notes

TBD on completion of this section

Languages & Frameworks

Theory And Concepts

Computer Science

Object-Oriented Analysis & Design

System Design

Software

Books

  • 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

Miscellaneous

Learning Resources

Written

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.

Video

I am a huge fan of Front End Masters. Lambda students receive a free six-month sub as part of the GitHub Student Pack.

Note Taking

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.

Insightful Employment-Related Reddit Posts

(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.:

Looking for a book to read?

Books I've read

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

On my shelf to read

  • 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

What project do I do next?

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.

What do I learn next?

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.

Other Tips

  • 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!

About

Interview practice, coding challenges, and other post-endorsement stuff.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published