Live data from Hacker News

Famous Laws of Software Development (2017)

timsommer.be

171–180 of 202 posts

Re: Famous Laws of Software Development (2017)

#171

Earlier quoted context omitted.

Um, no. The real world is not that simple. It would be nice if it were. Or perhaps your statement is correct, but in the real world components are never sufficiently separate. So, while your statement may be correct by definition, it is not useful.

You are misreading my words.

Perhaps so. Would you care to explain? Your statement here doesn't give me much to go on.

Re: Famous Laws of Software Development (2017)

#172
post #34

There is an entire poster of funny 'laws of computing' that was created in 1980 by Kenneth Grooms. It's pretty amazing how many of these are completely relevant 40 years later... It's hard to find the original piece of art, but my uncle had this hanging in his office for a long time, and now it's hanging in mine. I transcribed it in a gist so I had access to them for copy/paste. https://gist.github.com/sorahn/905f67a…

Bonus points for green bar paper!!

Re: Famous Laws of Software Development (2017)

#174
post #13

Hyrum's law is highly relevant to anyone who makes software libraries. "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody." I.e. any internal implementation details that leak as behavior of the API become part of the API. Cf. Microsoft's famous "bug for bug" API compatibility through versions of Win…

They might become part of the API in a superficial sense, but if you broadcast clearly that undocumented behaviors are subject to change, then users can decide if they want to accept that risk and won’t have a valid complaint if they want the not-covered-by-the-contractual-API preserved or become surprised by a change.

Too many devs do not read the spec/docs and relies on testing. If it works it's golden.

Re: Famous Laws of Software Development (2017)

#175
post #2

Don't forget Atwood's law: "Any application that can be written in JavaScript, will eventually be written in JavaScript."

Or Greenspun's Tenth Rule of Programming : Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of CommonLisp.

And then there is Virding's First Rule of Programming:

Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.

Re: Famous Laws of Software Development (2017)

#177
post #13

Hyrum's law is highly relevant to anyone who makes software libraries. "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody." I.e. any internal implementation details that leak as behavior of the API become part of the API. Cf. Microsoft's famous "bug for bug" API compatibility through versions of Win…

Obligatory xkcd "workflow": https://xkcd.com/1172/

Re: Famous Laws of Software Development (2017)

#178

Earlier quoted context omitted.

You are misreading my words.

Perhaps so. Would you care to explain? Your statement here doesn't give me much to go on.

Well I meant it quite literally: if it is not clear which component has the bug, the components are not separate enough. You also say:

> in the real world components are never sufficiently separate

But the separation of components is not an issue of "real world", it is a function of design and implementation. It is absolutely to the developers how independently the components will be implemented; if there is no way to test them in isolation, then they are not really separate components.

Take this website, and your browser, as an example. They are obviously connected, as you're using the latter to access the former, but they are completely independent: you can access other pages with the browser, and you can use other methods (other browsers, or curl, or Postman etc) to access this page. Each can be tested separately, and even when they are used in conjunction they don't directly depend on each other, but rather on a set of standards (HTTP, HTML, CSS etc) understood by both.

Re: Famous Laws of Software Development (2017)

#179
ReRe's Law of Repetition and Redundancy [2] seems appropriate here:

  A programmer can accurately estimate the schedule for only the repeated and the redundant. Yet,

  A programmer's job is to automate the repeated and the redundant. Thus,

  A programmer delivering to an estimated or predictable schedule is...

  Not doing their job (or is redundant).
[2] https://news.ycombinator.com/item?id=12150889

Re: Famous Laws of Software Development (2017)

#180

Earlier quoted context omitted.

> “Before we had four cross functional teams, working on a single application, everyone felt responsible for it, worked overtime to fix bugs etc, we had good communication between the teams.” This actually sounds very dysfunctional, but with the type of positive PR spin that product / executive management wants, basically anyone who believes “cross-functional” is anything more than a buzzword. Would love to know what…

Aside from the working overtime part, what sounds dysfunctional?

Types of bugs or failures are not separated into specialized areas, rather it’s one “cross-functional” unit. It’s like building a monolith class in software instead of following basic principles like Single Responsibility Principle and organizing workflows according to independent specializations.

This part is often much worse than the overtime part, because it means you’re expected to sublimate your personal career goals in favor of whatever arbitrary thing needs done for the sake of the cross-functional unit.

When I hear someone describe communication between cross-functional team members as “good” or “effective,” then I know it’s a big lie, and most probably it’s a disaster of overcommunication where product managers or non-tech leadership have a stranglehold on decision making when really engineering should be autonomous in these cases exactly according to independent specialization.

Post reply on HN