What does HackerNews think of coding-interview-university?

A complete computer science study plan to become a software engineer.

Which programs offer Formal Methods and TLA+?

Define a relative metric for comparison

Programmer's Competency Matrix: https://cuamckuu.github.io/index.html

Coding Interview University: https://github.com/jwasham/coding-interview-university

Coding Guidelines: https://awesome-safety-critical.readthedocs.io/en/latest/#co...

Predict software quality and/or career success

Predict applied ML/AI failure due to insufficient Data Science fundamentals

By well-rounded do you mean the ACM Computer Science Curriculum; or a strong liberal arts program which emphasizes critical thinking and effective communication; or Emotional Intelligence, Servant Leadership, and Project Management?

InfoSec; Computer Security > Careers: https://en.wikipedia.org/wiki/Computer_security#Careers

The NIST NICE Framework describes Categories (7), Specialty Areas (33), Work Roles (52) and Knowledge, Skills, and Abilities which are in demand in cybersecurity: https://niccs.cisa.gov/workforce-development/nice-framework

You and/or a good program can help you find projects and jobs where you can learn and demonstrate application of KSA's (before you present a certificate for your first job and finally begin your career in lifelong learning). A good program teaches you how to learn; study skills, personal people skills, computer skills.

Is managing a team of engineers engineering, and will they still let me do engineering if I do management (which none of us have taken a course in)?

Which programs have QIS Quantum Information Science in their cirricula as more than a paragraph and a quiz question?

DevSecOps > DevSecOps, shifting security left: https://en.wikipedia.org/wiki/DevOps

I'm not sure why you assume it has to be hundreds of hours. Take a look at something like https://github.com/jwasham/coding-interview-university, which has a lot of different topics.

In interview loops I've done recently, I realized I was most nervous around Systems/Scaling and Graph (e.g. Dijkstra's) questions, so took some time to work on those.

You don't have to do like the author of that piece and work for hundreds of hours. If trees are proving a problem or are an area you know you aren't so up on, then use studying to fill in the gap. Anything is better than nothing, and studying for, let's say, 10 hours might make you just more comfortable with the topic to turn the interview in a more positive direction.

(Disclaimer: I have a academic background from years ago, just haven't used most of these things in years, since like everyone here has admitted, it isn't regularly a part of day-to-day life)

I got this push message from Hacker News this morning and felt obliged to post my opinion on the "LeetCode thing" cause I'm currently trying the same thing as you are. I have a master degree on CS and 4 years of professional experience and trying to keep moving forward.

I don't believe solving LeetCode problems well is something that you have to be gifted to achieve. Ironically, I believed it once upon a time. I got very frustrated when failed tech interviews for Microsoft and Google when I was a new-grad and trying to find a decent job.

I know it's frustrating to just look at somebody finishing all the contest problems in 10min and you're scratching your head for many hours or even a whole day. Believe me I was literaly doing this for a long time. But I started my professional occupation anyway. What I did then is keep trying for several years since I know I'm stupid and stubborn. It turns out to be promising in the third year doing so.

I gradually find out there IS a way! There is a clear and straightforward path to do better in algorithm problems: just get a full list of basic data structures and algorithms, understand them all by watching youtube videos, learning online courses (MIT online courses helped be a lot), and practice tens of problems in each subject until you get sick of it. Currently I get 2481 points in LeetCode contest and I'm preparing for my next period of career and hope these hard work finally pay off!

In case someone need it, these 2 lists are very comprehensive and helped me a lot:

* https://github.com/jwasham/coding-interview-university * https://techdevguide.withgoogle.com/

Hope it helps!

> My question is how do you find all those algorithms? Wikipedia never really feel like a good introductory nor discovery place.

I know a place.

From the Github repo Coding Interview University[0] there is a link to a Jupyter notebook[1] on various ways to solve the traveling salesman problem - it is a very good, detailed, resource.

[0] https://github.com/jwasham/coding-interview-university

[1] https://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipyn...

Problem solving: https://en.wikipedia.org/wiki/Problem_solving

Critical thinking: https://en.wikipedia.org/wiki/Critical_thinking

Computational Thinking: https://en.wikipedia.org/wiki/Computational_thinking

> 1. Problem formulation (abstraction);

> 2. Solution expression (automation);

> 3. Solution execution and evaluation (analyses).

Interviewers may be more interested in demonstrating problem solving methods and f thinking aloud than an actual solution in an anxiety-producing scenario.

https://en.wikipedia.org/wiki/Brilliant_(website) ;

> Brilliant offers guided problem-solving based courses in math, science, and engineering, based on National Science Foundation research supporting active learning.[14]

Coding Interview University: https://github.com/jwasham/coding-interview-university

Programmer Competency Matrix: https://github.com/hltbra/programmer-competency-checklist

Inference > See also: https://en.wikipedia.org/wiki/Inference

- Deductive reasoning: https://en.wikipedia.org/wiki/Deductive_reasoning

- Inductive reasoning: https://en.wikipedia.org/wiki/Inductive_reasoning

> This is the [open] textbook for the Foundations of Data Science class at UC Berkeley: "Computational and Inferential Thinking: The Foundations of Data Science" http://inferentialthinking.com/

Being self taught, I often wonder the same thing. I don't know that this is "THE ANSWER" but I was impressed by the job done here of curating a bunch of disparate CS materials (including some from the universities you mention) into some kind of structured learning approach https://github.com/jwasham/coding-interview-university

As the url suggests, it's got an agenda about interview prep but the materials do not - they're straight up CS resources. Like I said, this may not be exactly what you want, but it could be helpful.

On a different note, I have completed the Stanford Algorithms Course part 1 (currently working on part 2) and I can recommend it.

Lots of questions if you care to answer:

What does the curriculum look like? I’m on a phone and it wasn’t obvious

What percentage take the course and don’t succeed at getting a job offer?

What percentage get a FAANG level offer?

What does the typical successful “candidate” look like that takes the course?

How is this better than just doing leetcode/CTCI/CIU[0]?

How does this differ from /better than similar programs like techlead’s one[1]

What happens if you pay the $8k upfront and fail to get an offer?

[0] https://github.com/jwasham/coding-interview-university

[1] https://www.techseries.dev/

Edit: FYI your domain is 1 letter away from https://www.codebreakeracademy.com (which is a very different thing)

You are on the right track in terms of preparing for a FAANMG-level interview. But it pains me to say that this just only meets the bare-minimum that they are looking for as in to prove that you can 'program' as the other thousands more candidates will be applying too.

What you need to differentiate yourself is to learn the undocumented dark arts for whiteboard interviews that the FAANMG are really looking for in a technical interview.

Firstly, [0] explains where these data structures are used in Computer Science and should be a start on implementing them and understanding their complexities and use-cases. The rest from [1 - 4] goes straight into the advanced details of areas like competitive-programming which will give you explanations and clever solutions which are better than the typical DS and algorithm answers that even the interviewers will suggest.

Some of these resources might even give a walkthrough of a proof of these complexities if you really need to convince the interviewer who wants to rigorously test your understanding.

[0] - https://cstheory.stackexchange.com/questions/19759/core-algo...

[1] - http://courses.csail.mit.edu/6.851/

[2] - http://jeffe.cs.illinois.edu/teaching/algorithms/

[3] - http://cp-algorithms.com/

[4] - https://concatenative.org/wiki/view/Exotic%20Data%20Structur...

If you really don't know where to start, you can search and pick a specific topic here to study it in depth: https://github.com/jwasham/coding-interview-university

Personally, If I were preparing for a FAANMG interview, I would contribute to widely known open-source projects that utilise these concepts such as compilers like LLVM, Rust or V8 and operating systems.

Start from here: https://github.com/jwasham/coding-interview-university

When studying from this, choose only to learn the optimal data structures and algorithms, understand why the other solutions are bad and then find out where these concepts are applied in several open-source projects.

Once you have completed the essentials, solve the puzzles in Hackerrank and Leetcode, before the interview.

To be honest, I dislike this sort of interviewing for DS/Algos unless the company can justify using them other than for a secret IQ test or another candidate filtering technique. If it were me, I'd just ask for links to significant open-source contributions instead of this nonsense.

Outstanding resource.

jwasham/coding-interview-university also links to a number of also helpful OER resources: https://github.com/jwasham/coding-interview-university

I really enjoyed practicing on Pramp [1]. I ran through their whole batch of problems (roughly 40) so I can't schedule more interviews, but it helped me a lot to work on the soft skills required for FAMG type interviews. Unfortunately I still didn't pass the Google interview (had on-sites in Zurich) even though I was very well prepared. I also maintain (sort of lol) a list of interview preparation resources [2], although I find [3] to be even better.

PS: I also failed much easier interviews at CrowdStrike and SourceGraph so maybe I just suck at being interviewed in a way that's not clear to me. It really takes a toll on your confidence though.

1 - https://www.pramp.com/

2 - https://github.com/andreis/interview

3 - https://github.com/jwasham/coding-interview-university

If you don't have a copy of Cracking The Coding Interview I'd suggest getting one. Also:

https://github.com/jwasham/coding-interview-university

Ultimately I don't think this is what OP is saying. Just that white boarding leetcode/hackerrank algos isn't the best use of time, but I'll respond to the takeaways nonetheless because I have spent a lot of time on them:

1) By what metric? Also, who's we? I am a full-stack engineer and feel properly compensated if not over-payed given my expectations.

2) Leetcode has been extremely helpful. Not just in interviewing, but also in understanding how to have more granular control of space/performance. However, it is not the whole picture and I would point people to the famous coding university github: https://github.com/jwasham/coding-interview-university and further push people to follow research and coders they admire such as Peter Norvig: http://norvig.com/

Here's an answer to a similar question: "Ask HN: How to introduce someone to programming concepts during 12-hour drive?" https://news.ycombinator.com/item?id=15454421

https://learnxinyminutes.com/docs/python3/ (Python3)

https://learnxinyminutes.com/docs/javascript/ (Javascript)

https://learnxinyminutes.com/docs/git/ (Git)

https://learnxinyminutes.com/docs/markdown/ (Markdown)

Read the docs. Read the source. Write docstrings. Write automated tests: that's the other half of the code.

Keep a journal of your knowledge as e.g. Markdown or ReStructuredText; regularly pull the good ones from bookmarks and history into an outline.

I keep a tools reference doc with links to Wikipedia, Homepage, Source, Docs: https://wrdrd.github.io/docs/tools/

And a single-page log of my comments: https://westurner.github.io/hnlog/

> To get a job, "Coding Interview University": https://github.com/jwasham/coding-interview-university

From my perspective, I'd try walking before you run. You need to get the interview first.

Although you hear of Google hiring thousands of developers a year, and those that do get hired having a 5% chance of success or whatever, that doesn't mean that Google are guaranteed to offer you an interview. I've applied a handful of times, and despite having a Computer Science degree, startup, and small/large agency experience I've never managed to get past the application stage at Google or Microsoft. Microsoft and Amazon contacted me in the past, but neither actually resulted in an interview. Google rejected me within days of applying on both occasions I applied.

With that in mind I would recommend that you follow a loose curriculum, and just focus on becoming the best developer you can be. I'm currently working through John Washam's repo on getting a job at one of the big four, and it was good enough to get him through the door at Amazon.

https://github.com/jwasham/coding-interview-university

In general I think it's a good idea to rethink what your aims as a developer are every now and then, regardless of what company you want to work for. Recently, I was a senior .NET developer at a large agency working for big-name clients, but I often felt like I wasn't a "proper developer" because I worked on the .NET stack, and because for the past few years I've felt complacent in a senior-level role. To combat this, I started learning some new languages on the side, and eventually moved to a new job where I've switched from being the go-to guy for .NET to the goes-to guy for working on a Linux stack, and I hope that over the next few years I'll pick up enough knowledge that I can throw an application in again and not get immediately rejected.

Start here: https://github.com/jwasham/coding-interview-university

I wouldn't recommend going back to school. You already have a Master's in Physics, which should give you all the math background you need to understand CS algos. I'd even encourage you to start to "translate" your Physics knowledge into code.

Google, FB, Microsoft, et. al. are more concerned with your ability to explain CS concepts at a whiteboard than your degrees.

Have you considered SpaceX? http://www.spacex.com/careers/list

They are usually very interested in cross discipline candidates.

In my opinion Java is great if you want to write big enterprise-y applications but if you just want to get something done or just learn some concepts I would suggest Python. You can do all the same things you can do with Java as a beginner and it will mostly stay out of your way. Python also doesn't require a build system like Java does. You can just write some Python in a plain old text editor and run it without too much trouble. Java on the other hand will require a build system and a full IDE.

IMO with all the other languages available Java just doesn't really offer anything special enough to warrant it's dealing with it's awkward type system and verbosity. Unless you want to do something with Java specifically like Android dev it just doesn't offer anything worth the pain. If want higher performance and the type safety that Python doesn't have I prefer Go. It's syntax is very similar to Python and it has some interesting concepts.

Whatever you choose don't choose based off hype/promises of jobs. Most companies will hire engineers who have never used the language(s) in their stack as long you can demonstrate knowledge of core programming concepts. Python's `list`, Java's `ArrayList` and Go's `slice` might have some slight differences in implementations and different warts and what have you but deep down they are arrays. If you are familiar with the data structures and algorithms core to programming you can learn to use any language to solve problems.

At the end of the day a language is just a tool. The concepts that underpin these tools are what is important. So choose a tool you enjoy using and fits the scenario. Here are some links that were helpful for me, hopefully they will be helpful for you:

Python:

- https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial... - Good tutorial written for Flask.

- https://docs.python.org/3/ - Python docs, lots of good info there

- https://docs.djangoproject.com/en/2.0/intro/tutorial01/ - Django tutorial. Good intro to developing applications with Django, probably the most popular/common Python web framework.

Go:

- https://tour.golang.org/welcome/1

- https://gobyexample.com/

General:

- https://www.codecademy.com/catalog/subject/web-development - Very basic tutorials, has Java and Python as well as others

- https://github.com/jwasham/coding-interview-university - Lots of general CS info, this is the important stuff

This is also a great resource, if you're into studying yourself:

"Coding Interview University" https://github.com/jwasham/coding-interview-university

From "Resources to get better at theoretical CS?" https://news.ycombinator.com/item?id=15281776 :

- "Open Source Society University: Path to a self-taught education in Computer Science!" https://github.com/ossu/computer-science

This is also great:

- "Coding Interview University" https://github.com/jwasham/coding-interview-university

Neither these nor the ACM Curriculum are specifically topologically sorted.

This made the rounds here a little while ago and should help you prepare for CS heavy type interviews:

https://github.com/jwasham/coding-interview-university

It's pretty in depth and extremely popular (44k stars). Hope it helps.