Live data from Hacker News

Untitled topic

news.ycombinator.com

131–140 of 163 posts

Re: undefined

#131

Earlier quoted context omitted.

> Highly debatable. For the sake of debate: call me old-fashioned, but I don't ever want to rely on code from a "developer" who isn't familiar with binary notation.

How does knowing binary produce meaningfully better code? Most of us aren't working at a low enough level for it to be substantial. You should be judging the code, not the person who wrote it.

For nearly all of the software I rely on, I haven't examined the code. I'm not in a position to judge it.

For most of that software, of course, I'm not in a position to judge the developer either; but if all I know is that the developer isn't familiar with binary and hex, then I wouldn't expect her to be competent to write, for example, a brochure website, let alone a webserver. URL encoding depends on hex. Debugging often depends on hex. Arithmetic overflow and carry are binary. Twos-complement notation for signed integers is a binary convention.

I wouldn't hire a developer who couldn't explain binary notation. In fact I don't think I've ever met one like that.

As I suggested, perhaps I'm old-fashioned.

Re: undefined

#133

Earlier quoted context omitted.

Learning binary and knowing what binary is are two separate things. I don't think you need to learn binary to learn to code. Been doing this for 25 years working at some big name companies, I don't know binary other than 1 is on, 0 is off. I'm starting to feel like this whole notion that newbies can't come in and learn say React or modern JavaScript without having to go all the way back to that day in 1995 when they…

> Learning binary and knowing what binary is are two separate things. I don't think you need to learn binary to learn to code. Been doing this for 25 years working at some big name companies, I don't know binary other than 1 is on, 0 is off. You're wearing your lack of CS knowledge like some kind of badge of honor. Of course you don't need deep CS knowledge to be a competent programmer. But almost undoubtedly you'll…

> But almost undoubtedly you'll be a better programmer if you do know CS (I'm using binary here as a proxy for CS since I can't imagine having a deep knowledge of CS without knowing something fundamental like binary). How many times over those 25 years could a problem have been more efficiently solved (in programmer time or CPU time) if you had known about problem solving techniques (perhaps those related to binary knowledge for example) that you don't know from the world of CS? You'll never know...

You're both right and wrong.

Principles are a lot of cognitive debt to take on, and not strictly necessary to be functional. Literally anybody can sit down with an IDE and write code to merge spreadsheets or whatever the actual business need is. We teach this stuff to anybody with any interest. Kids, even!

If someone thinks they want to be a plumber, they shouldn't start with a 4-year commitment to learning principles of hydraulics and mechanical engineering-- makes much more sense to apprentice, lay some pipe, and if it's the job for you, then go back and learn it at a deeper level. Doing it the other way is why college is so ridiculously expensive and most spend 5 to 6 figures on a major and then go manage at Target.

After failing discrete math three times and giving up, I managed to make it almost 20 years in this industry before needing to learn anything about binary math-- and even then, it was only so I could understand how flags in old MUD code worked, for fun. Truth tables are important, but there has never come a logic problem I couldn't solve by taking a few extra steps to be explicit where you might reduce the logic to a compact blob of symbols. I'll never optimize code as well as someone classically-taught. I don't know what Big-O is-- and outside of a botched Google interview absolutely not a single employer or client has ever given a shit. Nobody has ever been victimized by my code. The "CS" way implies the academic approach is the only way to do things. It's the textbook definition of gatekeeping. All academia did was appropriate and institutionalize experiences yahoos like myself have always learned through ingenuity and trial-and-error.

You've learned more than I do, so you have more tools in your bag. The only thing that sets us apart is that I won't be advancing the industry or publishing anything on arxiv anytime soon. Outside of that, you're going to struggle with quantifying how you're better than the self-taught without resorting to speculation or guild/union mentality (gatekeeping).

Re: undefined

#134
post #7

> Today's developers didn't learn binary before learning Python, why should you learn how to code without the most modern tools? This phrasing makes me wary. There's a difference between being self-taught, and not even bothering to teach yourself the absolute fundamentals of computing, like binary...

Learning binary and knowing what binary is are two separate things. I don't think you need to learn binary to learn to code. Been doing this for 25 years working at some big name companies, I don't know binary other than 1 is on, 0 is off. I'm starting to feel like this whole notion that newbies can't come in and learn say React or modern JavaScript without having to go all the way back to that day in 1995 when they…

> I don't think you need to learn binary to learn to code. Been doing this for 25 years working at some big name companies, I don't know binary other than 1 is on, 0 is off.

I... guess?

But the full explanation of binary is only a paragraph long. At a certain point that seems like something you'd have to avoid on purpose.

Re: undefined

#135
post #121

Earlier quoted context omitted.

Why are you talking about CS and nonexistent "problem solving related to binary"? By "knowing binary" we are not talking about knowing machine code instructions or the details of how they are executed, but literally knowing how to read and work with binary numbers (using bitwise operations). Which isn't necessary for problem-solving or implementing most algorithms. (Yes, there are algorithms that use bitwise operatio…

> nonexistent "problem solving related to binary" Are you joking? Without understanding binary, you can't understand: - Numeric types, which numbers can be represented exactly, their failure modes, etc. - Bit-field flags, e.g. for enums - IP address masks and other bitmasks - Anything at all about modern cryptography - Anything at all about data compression - The various ways color is represented in images - Any cust…

The average web CRUD developer never needs to touch any of this stuff.

- Numeric types? Who cares? I know min, I know max. I take number from user and insert it in database. For calculations with money, I use integer cents.

- Bit-fields? I work in Java, what are bitfields?

- IP addresses? I am web dev loper, not network engineer. I don't need to deal with netmasks.

- Cryptography? Me no understand. Me use Let's Encrypt. Is secure, no?

- Compression? Browser do gzip for me. Me no care.

- Colors? I pick the nice color from the color wheel.

- Binary? What is binary? I only use binary when I want users to upload a file. Then I put the files on S3.

Well I do embedded dev as a hobby now so I know this stuff. But for a long time I didn't know how many bits were in a byte simply because I never really needed that knowledge.

Re: undefined

#136

Earlier quoted context omitted.

Let’s hope you never have to parse an archaic binary format then

Most people, in fact, do not have to do this. That’s an exceptionally rare thing to do that I would estimate a fraction of a percent of developers will ever encounter.

I would have put the number at 75% rather than a fraction of a percent. What do all these people do, these "developers" that never have to use bitstrings in python, deal with encodings, endianness, interface with hardware, etc.? Are they all UI people?

Re: undefined

#137

Earlier quoted context omitted.

Boolean logic is close to bitwise operations and it is the knowledge without which nobody should dare to call themselves a software engineer.

is close, yet no the same. There's difference between "do you understand this if ladder" or "can you simplify this boolean expression" and "clear bits 3, 25, 26, 27 of this register and set bits 25, 26, 27 to value 0b101" I'm not saying that this is hard or something, just the 3rd thing is really rare unless you work close to hardware or some other specific tasks

I think the generalization skill that allows to go from one to another is essential. If someone has only some basic understanding of boolean expressions, but cannot apply this knowledge to binary numbers, this is a good characterization of their programming skills in general.

Re: undefined

#139

Earlier quoted context omitted.

> Learning binary and knowing what binary is are two separate things. I don't think you need to learn binary to learn to code. Been doing this for 25 years working at some big name companies, I don't know binary other than 1 is on, 0 is off. You're wearing your lack of CS knowledge like some kind of badge of honor. Of course you don't need deep CS knowledge to be a competent programmer. But almost undoubtedly you'll…

> But almost undoubtedly you'll be a better programmer if you do know CS (I'm using binary here as a proxy for CS since I can't imagine having a deep knowledge of CS without knowing something fundamental like binary). How many times over those 25 years could a problem have been more efficiently solved (in programmer time or CPU time) if you had known about problem solving techniques (perhaps those related to binary k…

> Nobody has ever been victimized by my code.

You don't know that. Actually all code that is inefficient is victimizing both the user (via performance) and the environment (unnecessary energy usage). I'm not saying you've done anything wrong, I'm just saying we all don't know what we don't know. I'm sure my inefficient code has had many users and electric bills as victims. I released software before that subsequent versions where I had better CS techniques improved 100 fold in performance. I wasted my users' time before I learned how to do it better.

> You've learned more than I do, so you have more tools in your bag. The only thing that sets us apart is that I won't be advancing the industry or publishing anything on arxiv anytime soon. Outside of that, you're going to struggle with quantifying how you're better than the self-taught without resorting to speculation or guild/union mentality (gatekeeping).

You made a lot of assumptions about me without knowing my background. I was a self-taught programmer as a child/teenager and my undergrad degree was in economics, not CS. I went back to school to get a masters in CS which was difficult coming from a self-taught background. I did programming both paid and hobbyist for over a decade before that more formal education. And I write books read largely by self-taught programmers.

Saying a full software development education includes binary and the fundamentals of CS is not gatekeeping, it's a low bar if we don't want inefficient software wasting users time and sucking energy. I'm not saying you have to start there, I'm saying it should be part of your education as a programmer whether self-taught or formally taught.

Re: undefined

#140

Earlier quoted context omitted.

Most people, in fact, do not have to do this. That’s an exceptionally rare thing to do that I would estimate a fraction of a percent of developers will ever encounter.

I would have put the number at 75% rather than a fraction of a percent. What do all these people do, these "developers" that never have to use bitstrings in python, deal with encodings, endianness, interface with hardware, etc.? Are they all UI people?

> use bitstrings in python, deal with encodings, endianness, interface with hardware

is nowhere even remotely close to

> parse an archaic binary format

The goalposts are on the other side of the field.

Post reply on HN