Live data from Hacker News

Beej's Guide to Learning Computer Science

beej.us

41–50 of 150 posts

Re: Beej's Guide to Learning Computer Science

#41
post #5

Most reputable CS courses will have one or two math subjects (often called "Discrete Mathematics" or some variation). Does anyone have any advice on tackling subjects like these for someone who hasn't done any math since high school more than a decade ago (and has forgotten it)?

https://www.mathacademy.com/ is a great combination of structured learning across an incremental skill tree with practise problems to prove to yourself that you understand. It’s a big commitment but helped me go from “hasn’t done any math for a while and probably missed some basics” to much more comfortable. You can do the self-test to pick a starting level and work up from there. As with many things you basically ha…

I second this. Mathacademy is great and there is no way OP would be able to just jump into university-level math courser without re-learning prerequisites, considering they said that they forgot most of the school-level math.

Re: Beej's Guide to Learning Computer Science

#42

What does this matter now? It seems like economic collapse and the destruction of value coming out of programming is basically imminent

> 7.3 No Copy-Paste Coding > [...] But nowadays they tend to punt to some AI. Beginning developers should not do this. I don't know how I feel about this. I get the sentiment, I really do. But it almost reads like a chess Grandmaster in the 90s telling up-and-coming players to not practice against Deep Blue because it will teach you bad habits.

Especially if your job will be to let Deep Blue play against others so you should know how to control it well. That maybe doesn't satisfy the purists around here but it makes Juniors way more competitive in the short term, hence they are well-advised to use it.

Re: Beej's Guide to Learning Computer Science

#43

What does this matter now? It seems like economic collapse and the destruction of value coming out of programming is basically imminent

> 7.3 No Copy-Paste Coding > [...] But nowadays they tend to punt to some AI. Beginning developers should not do this. I don't know how I feel about this. I get the sentiment, I really do. But it almost reads like a chess Grandmaster in the 90s telling up-and-coming players to not practice against Deep Blue because it will teach you bad habits.

terrible analogy. It's more like a chess grandmaster telling you not to let Stockfish play for you. Which would be a very obvious thing to not do anyway, just like for a learning programmer.

Re: Beej's Guide to Learning Computer Science

#44
post #25

> So, while it’s clearly possible to have a career in a lucrative field you dislike, it’s (a) going to be harder for you than for people who like it and (b) maybe you should consider a field that you do like? > You gotta want it. Do you want it enough to go through the tremendous amount of effort it takes to learn it? Maybe you hate programming, but you want the money enough. Maybe you don’t care about the money, but…

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build…

Have you found any strategies that help maintain joy while dealing with business constraints? What boundaries work best?

Re: Beej's Guide to Learning Computer Science

#45
post #25

> So, while it’s clearly possible to have a career in a lucrative field you dislike, it’s (a) going to be harder for you than for people who like it and (b) maybe you should consider a field that you do like? > You gotta want it. Do you want it enough to go through the tremendous amount of effort it takes to learn it? Maybe you hate programming, but you want the money enough. Maybe you don’t care about the money, but…

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build…

There's a lot you can legitimately blame PMs for, but promising features that don't yet exist is essentially their job definition. A good PM will allow for uncertainty and flexibility, but at the end of the day, to have some sort of product roadmap, even in the most agile of environments, they have to say things like "at that stage we'll have functionality x, so our product will enable users to y, so that we'll better compete across z"

Re: Beej's Guide to Learning Computer Science

#46
post #25

Earlier quoted context omitted.

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build…

There's a lot you can legitimately blame PMs for, but promising features that don't yet exist is essentially their job definition. A good PM will allow for uncertainty and flexibility, but at the end of the day, to have some sort of product roadmap, even in the most agile of environments, they have to say things like "at that stage we'll have functionality x, so our product will enable users to y, so that we'll bette…

PMs are an invention of PHBs that sat in too many introductions to agile from management consulting firms.

Actual agile gets rid of them along with all the other cruft. PM as a title is fundamentally a jobs program for people who couldn’t hack it as programmers, or are nepo hires. You could argue a North Star like a product manager performs useful business alignment. But in 12 years across several companies I haven’t met a single project manager that is more than a professional problem manufacturer with selective hearing that miraculously ignores expert engineering opinion.

Re: Beej's Guide to Learning Computer Science

#47
post #29

I did Beej's Guide to Network Programming and it was fantastic, I learnt a lot, and it was easy enough that I was able to do it in Rust. I'm sure this one is as good as all the others. Point 7.5 of this guide reminds me of the Einstellung effect, I built my own "pomodoro" timer with notifications saying "go stretch" or "go drink water" ( https://github.com/reciperium/temporis in case someone is interested)

Must have been nearly 25 years ago now, this was one of my first dips into network programming after very briefly dabbling in systems programming based on nothing but random man page exploration and K&R. Think I still have it printed somewhere.

Beej has really done the world a solid, it's also making me happy that they're still around and being kept up to date (as much as these things change).

Re: Beej's Guide to Learning Computer Science

#48
post #25

Earlier quoted context omitted.

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build…

There's a lot you can legitimately blame PMs for, but promising features that don't yet exist is essentially their job definition. A good PM will allow for uncertainty and flexibility, but at the end of the day, to have some sort of product roadmap, even in the most agile of environments, they have to say things like "at that stage we'll have functionality x, so our product will enable users to y, so that we'll bette…

>> promising features that don't yet exist is essentially their job definition

Agree. I think he meant (at least my reality) they promise features that does not exist (ok) AND are impossible to implement in the promised time (or at all).

Re: Beej's Guide to Learning Computer Science

#49
post #25

Earlier quoted context omitted.

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build…

Have you found any strategies that help maintain joy while dealing with business constraints? What boundaries work best?

As long as:

(1) The technical staff understand the business constraints AND (2) management understands the technical constraints AND (3) both constraints "match" you are in heaven. I've seen that. Is possible. Is nice.

More often than not, one of the 3 conditions is not met. In case of 1 and 2, if they are good professionals, talk can (and typically will) help. In case of 3, you business case sucks, that is a big problem, change company. Run.

Re: Beej's Guide to Learning Computer Science

#50
post #15

Well done but is this a guide to Computer Science or to Software Engineering? In a Guide to CS I expected to find information theory, computability, complexity, finite state automa, language grammars etc. Anyway, the audience is > Undergrad students just getting into programming so it's naturally biased toward the engineering part of the subject.

What about operating systems, architecture, compilers, networking, and the like? I have seen people argue that computer science is the more theoretical side of things, but many university CS programs cover both systems and theory (or sometimes skew to one side).

Yes, my CS program of 40 years ago had 4 parts. Sorted by decreasing abstraction level:

Math, physics, statistics

Theoretical CS, the one in my original comment

OS, compilers, networking, computer vision, transmission codes

Computer languages and having to write actual programs, how transistors work up to logical gates, adders, CPUs and machine language

Of course the separations are not clear cut: we had relational algebra and SQL commands in the same course.

Post reply on HN