├── Books.md ├── Four_C.md ├── Hackathons.md ├── Learning_Git_GitHub.md ├── Online_Coding_Collaboration.md ├── Online_Learning_Platforms.md ├── Other.md ├── README.md ├── Tech_Opportunities.md └── Technical_Interviews.md /Books.md: -------------------------------------------------------------------------------- 1 | ## C++ & Software Engineering Books 2 | 3 | #### C++ 4 | * [The C++ Standard Library: A Tutorial and Reference] by Nicolai M. Josuttis 5 | * [The C++ Programming Language 4th Edition] by Bjarne Stroustrup 6 | * [Programming: Principles and Practice Using C++ 2nd Edition] by Bjarne Stroustrup 7 | 8 | #### Algorithms 9 | * [The Algorithm Design Manual] by Steven S Skiena 10 | * [Algorithms] by Robert Sedgewick & Kevin Wayne 11 | 12 | #### Software Engineering 13 | * [Refactoring: Improving the Design of Existing Code] by Martin Fowler 14 | * [Design Patterns: Elements of Reusable Object-Oriented Software] by Erich Gamma 15 | * [Refactoring to Patterns] by Joshua Kerievsky 16 | 17 | [The C++ Standard Library: A Tutorial and Reference]: 18 | 19 | [The C++ Programming Language 4th Edition]: 20 | [Programming: Principles and Practice Using C++ 2nd Edition]: 21 | 22 | [The Algorithm Design Manual]: 23 | [Algorithms]: 24 | 25 | [Refactoring: Improving the Design of Existing Code]: 26 | [Design Patterns: Elements of Reusable Object-Oriented Software]: 27 | [Refactoring to Patterns]: 28 | -------------------------------------------------------------------------------- /Four_C.md: -------------------------------------------------------------------------------- 1 | ## The 4 C's of Effective Technical Interviews 2 | 3 | So, the interviewer has given you a technical programming problem. Right off the bat, it feels hard. You've never heard or seen the problem before. Your mind is racing. The empty whiteboard or page in front of you is begging to be filled. How do you proceed? 4 | 5 | You pause. And you remember the four C's. A basic formula for answering these sorts of programming questions asked in technical interviews. In order, you remember that they are (1) **Clarify**, (2) **Construct**, (3) **Code**, and (4) **Confirm**. 6 | 7 | #### Clarify 8 | _Clear up any confusion and resolve any ambiguities in the problem given to you._ Pause and think. The question the interviewer actually wants you to address might be simpler than you originally supposed. However, even simple questions might have tricky cases or situations. An oversimplified understanding of the problem will bite you later. Either way, assumptions can seriously hurt you. Clear them up as early as possible. It's also good to mention if you've seen the problem before, even if you're not completely sure about the solution. 9 | 10 | This step should take betweeen one and three minutes. 11 | 12 | #### Construct 13 | _Create a strong foundation for an algorithm that solves the problem._ Before even a single line of code gets written, achieving clarity (for the interviewer, and **especially** for you) about a solution is the key to success. Start off by providing the simplest, brute force solution to the interviewer (if it exists). Be sure to explain why it's probably not the best algorithm using Big-O complexity analysis. Often, the interviewer will agree with you and say that it's not good enough, and wants a better algorithm. However, in certain circumstances, the interviewer won't necessarily want you to implement a better solution, so they'll allow you to go forward with the brute force solution. 14 | 15 | If not, the next step will be to discover the more optimal solution. This requires you to find a key insight or recognize a pattern from other problems you've previously solved. If you don't come up with one relatively quickly, a good approach is to create examples or formulate test cases for the problem. Bringing up tests early shows that you care about resilient code, not just working code. It helps you see things about your problem that might not normally be clear when you're thinking in your head. Diagramming is your best friend! Coming up with test cases also provides an additional benefit--if you're stuck, it provides excellent stalling time! 16 | 17 | Once you have a solution, explain it thoroughly, using your examples if necessary. Perhaps even provide complexity analysis without prompting. Make sure you and the interviewer agree on (and understand!) the solution before proceeding to the next **C**. The most important thing about this entire step is communication. Talk out loud! It shows the interviewer your thought process. This is just as important as writing good code. There might be a lot going on in your head, but if you're stuck and quiet, that helps neither you nor the interviewer. If the interviewer really see that it's necessary, they may give a hint. 18 | 19 | Ideally, this whole step should take betweeen three and eight minutes. 20 | 21 | #### Code 22 | _Translate the algorithm into (relatively) clean code._ The key to being comfortable here is to fully understand what your solution is. Moreover, doing a lot of practice problems where you actually code and don't just mentally answer the question is super helpful for not freezing up during a real interview. 23 | 24 | Some DO's: 25 | 26 | * If you forget an official library function name, simply make up a name for it and mention that you've forgotten it, but that you know it exists. 27 | * If you want to use a helper function that "accomplishes" a certain step for you, ask if you can assume it exists and offer to implement it later if necessary. 28 | * Leave yourself space between your lines of code, especially at the beginning of a function; you'll almost certainly realize that you forgot to include something midway through your implementation. 29 | 30 | Some DO NOT's: 31 | 32 | * Don't talk **too** much. We've gotten through the hard part already of creating and explaining an algorithm. At this stage it's ok to explain the part of the algorithm that some code line/block refers to, but re-hashing a complete version of your earlier explanation takes up valuable time. I tend to talk less than I would during the **Construct** phase, but I definitely don't stay completely silent. Some interviewers like it when you explain during this step; others do not. Either way, it depends on the interviewer, so gauge what you can from body language and their responses to you. 33 | * Don't write in pseudocode, but provide code comments where necessary. We've already explained the solution verbally, so pseudcode here will only slow you down and take up time. 34 | 35 | Ideally, this whole step should take between five and ten minutes. 36 | 37 | #### Check 38 | _Check and test your code for correctness._ Once you're done writing code, give it a quick look-over. This is just a rudimentary check for basic syntax errors and any blanks that you promised to fill in. Then, do a second check that's more in-depth. Trace through your code. Offer to run it against the test examples that you created earlier! This may not always be necessary, but it shows that you care about correctness. If you find bugs, don't panic and don't change the code willy nilly. Take some time to think about the issue and then fix it once you understand where it went wrong. Finally, when you feel confident that your implementation is solid, you can declare that you're done. Sometimes, you may still have missed something. The interviewer could bring this up in a variety of leading and non-leading ways. Either way, follow the same policy as before. Don't panic and don't change the code brazenly. 39 | 40 | This step should take between three and eight minutes. 41 | 42 | #### Afterthoughts 43 | 44 | The interviewer might feel fully satisifed with the way you completed the problem. In fact, they might take it as an opportunity to challenge you even further and add new constraints to the problem that they didn't mention before. This is a good sign! They think you're capable enough to push you harder. They may not expect you to augment your previous code or add new code, but at least, they'll want to discuss it as a thought experiment. Sometimes, though, this can actually segue into a totally new, but related problem. Take it in stride and tackle it from the beginning of the four C's. 45 | 46 | Understand that, at the end of the day, no matter what the interviewer asks you, they know a lot about their problem. A lot. They've asked it many times before. They know how candidates approach the question. They know how to simplify it and how to complicate it. They know where you'll likely get stuck and they know when to jump in with a hint. They know when to let you stew without any help because even with that deafening silence, they know when you can solve it without their guidance. Practice, learn from your experiences (especially the failures!), and do better next time! Good luck! 47 | -------------------------------------------------------------------------------- /Hackathons.md: -------------------------------------------------------------------------------- 1 | ## Hackathon Awesomeness 2 | 3 | #### Hackathon Sources 4 | * [Major Leage Hacking] 5 | * [Devpost] 6 | 7 | #### Prototyping 8 | * [InVision] 9 | * [Marvel] 10 | * [Proto.io] 11 | 12 | #### APIs 13 | * [Giphy]: GIFs galore! 14 | * [Google Hangouts]: Build and integrate your ideas into Google Hangouts 15 | * [YouTube]: Upload videos, modify video data, and otherwise manipulate the place we spend all our time 16 | * [Twilio]: Programmatically make/receive phone calls and send/receive text messages 17 | * [Foursquare]: Location data for restaurants, shops, and any other physical venues 18 | * [Rotten Tomatoes]: Everything and anything about movies (posters, reviews, cast and crew, etc.) 19 | * [Spotify]: Billions of data points about music 20 | 21 | #### API Search 22 | * [Apigee]: Browse APIs and test in their sandbox 23 | * [Mashery] 24 | * [MashApe] 25 | * [Open Data Network] 26 | * [ProgrammableWeb] 27 | * [NYC OpenData]: Amazing collection of NYC related data sets 28 | 29 | #### Services 30 | * [MailChimp]: Automates standalone and responsive email services 31 | * [Kimono Labs]: Turn any website into an API, through automatics site scrubbing 32 | * [Squarespace]: A very easy way to get a site up for your app 33 | * [Heroku]: The fastest way to get your app online 34 | * [Parse]: Store data without setting up a database 35 | * [IFTTT]: (If This Then That) Creates a chain of automated events with no code 36 | * [Octoblu]: Like IFTTT, but more expansive and controllable 37 | * [Orchestrate]: A database as a service (DBaaS) tool 38 | * [DigitalOcean] 39 | * [Firebase] 40 | * [Syncano] 41 | 42 | #### Frameworks 43 | * [Foundation] 44 | * [Bourbon] 45 | * [Sass] 46 | 47 | #### Design 48 | * [COLOURLovers Palettes] 49 | * [CSS ZenGarden] 50 | * [CSS Trick Snippets] 51 | 52 | #### Productivity 53 | * [RequestBin]: HTTP Request Inspector 54 | * [Javascriptoo]: Research tool for finding javascript libraries 55 | * [ngrok] 56 | * [JSFiddle] 57 | 58 | #### Validators 59 | * [Markup Validator] 60 | * [CSS Validator] 61 | * [JSLint] 62 | 63 | #### NodeJS 64 | * [Hackathon Starter Kit] 65 | * [Passport]: User authentication 66 | 67 | #### Other 68 | * [CodeGeekz] 69 | * [CodePen] 70 | * [Web Design Repo] 71 | 72 | [Major Leage Hacking]: 73 | [Devpost]: 74 | 75 | [Invision]: 76 | [Marvel]: 77 | [Proto.io]: 78 | 79 | [Giphy]: 80 | [Google Hangouts]: 81 | [YouTube]: 82 | [Twilio]: 83 | [Foursquare]: 84 | [Rotten Tomatoes]: 85 | [Spotify]: 86 | 87 | [MailChimp]: 88 | [Kimono Labs]: 89 | [Squarespace]: 90 | [Heroku]: 91 | [Parse]: 92 | [IFTTT]: 93 | [Octoblu]: 94 | [Orchestrate]: 95 | [DigitalOcean]: 96 | [Firebase]: 97 | [Syncano]: 98 | 99 | [Apigee]: 100 | [Mashery]: 101 | [MashApe]: 102 | [NYC OpenData]: 103 | [Open Data Network]: 104 | [ProgrammableWeb]: 105 | 106 | [Foundation]: 107 | [Bourbon]: 108 | [Sass]: 109 | 110 | [RequestBin]: 111 | [Javascriptoo]: 112 | [ngrok]: 113 | [JSFiddle]: 114 | 115 | [Markup Validator]: 116 | [CSS Validator]: 117 | [JSLint]: 118 | 119 | [COLOURLovers Palettes]: 120 | [CSS ZenGarden]: 121 | [CSS Trick Snippets]: 122 | 123 | [Hackathon Starter Kit]: 124 | [Passport]: 125 | 126 | [CodeGeekz]: 127 | [CodePen]: 128 | [Web Design Repo]: 129 | -------------------------------------------------------------------------------- /Learning_Git_GitHub.md: -------------------------------------------------------------------------------- 1 | ## Learning Git/GitHub 2 | 3 | Long, but highly suggested git and GitHub course: 4 | * https://www.udacity.com/course/how-to-use-git-and-github--ud775 5 | 6 | ------------------------- 7 | 8 | Super quick git guides: 9 | * http://rogerdudler.github.io/git-guide/ 10 | * http://gitref.org/creating/ 11 | 12 | Slightly longer git guides: 13 | * https://try.github.io/levels/1/challenges/1 14 | * https://www.youtube.com/watch?v=8oRjP8yj2Wo&index=1&list=PLg7s6cbtAD165JTRsXh8ofwRw0PqUnkVH 15 | 16 | Longer git guides: 17 | * http://gitimmersion.com/index.html 18 | 19 | ------------------------- 20 | 21 | GitHub Guides: 22 | * https://guides.github.com/ - specifically "Understanding the GitHub Flow" & "Hello World" 23 | * https://www.youtube.com/watch?v=0fKg7e37bQE 24 | -------------------------------------------------------------------------------- /Online_Coding_Collaboration.md: -------------------------------------------------------------------------------- 1 | ## Online Coding & Collaboration 2 | 3 | * [collabedit] 4 | * [codingground] 5 | 6 | [collabedit]: 7 | [codingground]: 8 | -------------------------------------------------------------------------------- /Online_Learning_Platforms.md: -------------------------------------------------------------------------------- 1 | ## Online Learning Platforms 2 | There is a plethora of online resources that you can take advantage of to learn almost anything. With enough willpower and time, you can jump into an unfamiliar subject and get guidance from the best teachers out there. I've compiled a list of online learning platforms that I'm familiar with. Most offer all free courses. Others have free courses, and give more personalized attention for a fee. Some are paid subscription services with a few trial courses. The paid ones are sometimes worth the money, but be sure to do your due diligence if you want to go that route. Here is the list: 3 | 4 | * [Udacity] 5 | * [Coursera] 6 | * [edX] 7 | * [MIT OpenCourseware] 8 | * [Codecademy] 9 | * [Khan Academy] 10 | * [Udemy] 11 | * [Code School] 12 | * [Pluralsight] 13 | * [Lynda] 14 | * [Treehouse] 15 | * [freeCodeCamp] 16 | 17 | For a more complete list with descriptions, visit the [80+ Best MOOC (Massive Open Online Course) Providers List]. If you have something specific in mind, you can use search engine and rating sites like [CourseTalk], [Class Central], and [Mooctivity] to find what you're looking for amongst these platforms. If you do find something you're interested in, don't feel overwhelmed by your options. Just choose one and go with it! 18 | 19 | [Udacity]: 20 | [Coursera]: 21 | [Udemy]: 22 | [edX]: 23 | [MIT OpenCourseware]: 24 | [Pluralsight]: 25 | [Lynda]: 26 | [Treehouse]: 27 | [Codecademy]: 28 | [Code School]: 29 | [Khan Academy]: 30 | [freeCodeCamp]: 31 | 32 | [80+ Best MOOC (Massive Open Online Course) Providers List]: 33 | [Class Central]: 34 | [Mooctivity]: 35 | [CourseTalk]: 36 | -------------------------------------------------------------------------------- /Other.md: -------------------------------------------------------------------------------- 1 | ## Awesome, Free, & Miscellaneous 2 | 3 | * [Microsoft Dreamspark Student Software Catalog] 4 | * [GitHub Student Developer Pack] 5 | * [Livecoding.tv] 6 | * [Lynda.com (for free!)] 7 | * [Robert O'Connor's MEGA] 8 | * [Hak8or's Tech Talks Collection] 9 | 10 | [Microsoft Dreamspark Student Software Catalog]: 11 | [GitHub Student Developer Pack]: 12 | [Lynda.com (for free!)]: 13 | [Robert O'Connor's MEGA]: 14 | [Livecoding.tv]: 15 | [Hak8or's Tech Talks Collection]: 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Tech Resources 2 | I've decided to compile a list of resources that might be helpful to anyone going into the tech industry. Check them out below. (**This document is growing, so feel free to fork this repository, make changes, and submit pull requests!**) 3 | 4 | * [Online Learning Platforms] 5 | * [Learning Git/GitHub] 6 | * [Technical Interviews] 7 | * [Tech Opportunities] 8 | * [C++ & Software Engineering Books] 9 | * [Online Coding & Collaboration] 10 | * [Hackathon Awesomeness] 11 | * [Awesome, Free, & Miscellaneous] 12 | 13 | For an overwhelming amount more, check out: 14 | * [HowToBeAProgrammer] 15 | * [awesome] 16 | * [awesome-awesomeness] 17 | * [lists] 18 | * [ListOfGithubLists] 19 | 20 | [Online Learning Platforms]: 21 | [Learning Git/GitHub]: 22 | [Technical Interviews]: 23 | [Tech Opportunities]: 24 | [C++ & Software Engineering Books]: 25 | [Online Coding & Collaboration]: 26 | [Hackathon Awesomeness]: 27 | [Awesome, Free, & Miscellaneous]: 28 | [HowToBeAProgrammer]: 29 | [awesome]: 30 | [awesome-awesomeness]: 31 | [lists]: 32 | [ListOfGithubLists]: 33 | -------------------------------------------------------------------------------- /Tech_Opportunities.md: -------------------------------------------------------------------------------- 1 | ## Tech Opportunities 2 | 3 | #### Fellowships 4 | * [hackNY Fellows Program] 5 | * [KPCB Fellows] 6 | 7 | #### Hackathons 8 | * [Major Leage Hacking] 9 | * [Devpost] 10 | 11 | #### Other 12 | * [NYC Tech Talent Pipeline] 13 | * [Digital NYC] 14 | 15 | 16 | [hackNY Fellows Program]: 17 | [KPCB Fellows]: 18 | [Major Leage Hacking]: 19 | [Devpost]: 20 | [NYC Tech Talent Pipeline]: 21 | [Digital NYC]: 22 | -------------------------------------------------------------------------------- /Technical_Interviews.md: -------------------------------------------------------------------------------- 1 | ## Technical Interviews 2 | Learn to become a better technical interviewee with these resources! 3 | 4 | #### Personal Resources 5 | * [The 4 C's of Effective Technical Interviews] by Simon Ayzman 6 | * [Technical Interview Questions] by Simon Ayzman 7 | 8 | #### Books 9 | * [Cracking the Coding Interview] by Gayle Laakmann McDowell (*earlier editions are good as well*) 10 | * [Cracking the Tech Career] by Gayle Laakmann McDowell (*an expansion of [The Google Resume]*) 11 | * [Elements of Programming Interviews] by Adnan Aziz, Tsung-Hsien Lee, & Amit Prakash 12 | * [Programming Interviews Exposed] by John Mongan, Noah Kindler, & Eric Giguere 13 | 14 | #### Websites 15 | 16 | ##### Interactive Technical Interview Practice 17 | * [LeetCode] 18 | * [HackerRank] 19 | * [CodeSignal] 20 | * [Interview Cake] 21 | 22 | ##### Mock Technical (Phone) Interviews 23 | * [Pramp] (*free*!) 24 | * [interviewing.io] (*free!*) 25 | * [Gainlo] 26 | 27 | ##### Technical Interview Question Sources 28 | * [CareerCup] 29 | 30 | #### Guides 31 | * [How to pass a programming interview] by Ammon Bartram 32 | * [Resources, Resources, Resources] by andreis 33 | 34 | McDowell (the author of the *Cracking the...* franchise and founder of CareerCup) sells a set of [unscripted technical interview videos] that are absolutely invaluable to getting yourself prepared. A ton of her lectures are also posted online, and they are pretty helpful reference resources. This list is not exhaustive of course! 35 | 36 | [The 4 C's of Effective Technical Interviews]: 37 | [Technical Interview Questions]: 38 | 39 | [Cracking the Coding Interview]: 40 | [Cracking the Tech Career]: 41 | [The Google Resume]: 42 | [Elements of Programming Interviews]: 43 | [Programming Interviews Exposed]: 44 | 45 | [LeetCode]: 46 | [CareerCup]: 47 | [Pramp]: 48 | [Interview Cake]: 49 | [HackerRank]: 50 | [interviewing.io]: 51 | [CodeSignal]: 52 | [Gainlo]: 53 | 54 | [How to pass a programming interview]: 55 | [Resources, Resources, Resources]: 56 | 57 | [unscripted technical interview videos]: 58 | --------------------------------------------------------------------------------