Live data from Hacker News

Ask HN: CS papers for software architecture and design?

news.ycombinator.com

81–90 of 104 posts

Re: Ask HN: CS papers for software architecture and design?

#81
post #45

Earlier quoted context omitted.

Agreed, good architecture doesn't come into play until you need to add a lot of complex features or scale significantly. Initially architecture doesn't really mean squat. I would concentrate on making the codebase flexible, but that's about it. I've regretted making some of my software with a cool but complex architecture when I should have been focused on what the product does.

In Knuth's words: "Premature optimization is the root of all evil". Although I guess in this context, you're emphasizing that it's more valuable to solve the right problem poorly than it is to solve the wrong problem well.

I didn't say anything about solving the right problem poorly, but you are probably speaking a truth, depending on what poorly means. It certainly isn't ideal. I've seen solutions designed so poorly that when it came time to add features that paying clients wanted, it was significantly more difficult (significant risk) than if it was designed well.

I'd say solve the right problem well, without spending time on requirements you don't yet have. These would include a large scalability requirement and over-modularization, like breaking out 10 "micro services."

Re: Ask HN: CS papers for software architecture and design?

#82
post #62
post #61

Earlier quoted context omitted.

> I think good software engineers are just as much product guys (and data guys) as they are software guys. ya often times they are women too

pretty sure 'guy' in modern American English is gender- and age-less. As in two 70 old ladies could be addressed as "you guys" too. Surprised me a lot when I was there

That's pretty disingenuous. "You guys" is different than "software guys". You would totes say "you guys" to refer to two 70-year-old ladies, but if there were two women working on web development, you wouldn't refer to them as the "web dev guys".

Re: Ask HN: CS papers for software architecture and design?

#83
post #62

Earlier quoted context omitted.

pretty sure 'guy' in modern American English is gender- and age-less. As in two 70 old ladies could be addressed as "you guys" too. Surprised me a lot when I was there

Like most language, meaning is dependent on context. But in general it seems to be good practice to steer clear from pronouns associated with a particular gender when there are other perfectly good terms to be used (In this context, "people", "folks", or even "focused".)

"seems to be good practice" for who? people who enjoy policing language, maybe. some people just want to express themselves without hypervigilantly monitoring every single word they say, for anything that could potentially offend anyone.

Re: Ask HN: CS papers for software architecture and design?

#84
post #37

Earlier quoted context omitted.

I agree that's a wonderful paper to read, but has it had significant influence in the mainstream?

I read this more than 5 years ago, I think from a recommendation on HN. But I must have gotten something different out of it than most people. It is advocating a particular architecture. But that architecture is essentially LAMP, as far as I can tell. It's what we ALREADY do!!! From the paper: FRP is currently a purely hypothetical approach to system architecture that has not in any way been proven in practice. It is…

"All essential state takes the form of relations This is a database" - relations are a more abstract concept than this, see relational programming

"Logic is expressed using pure user-defined functions This is PHP / CGI / FastCGI. PHP is imperative, but the entire program is a pure function, because the request state is cleared between every request." - the entire program is not a pure function as seen by clients; to be functional, sending an identical request would always have to display the same information, but it won't if the page was updated between requests. Functional means that a given input (the request in this case) would always return the same output (page), just like a function in the mathematical sense would.

"PHP/MySQL is functional and relational." In a behavioural view of "functional", what matters is whether an operation always produces the same output for a given input; this is certainly possible with imperative languages, with some discipline. We can't apply a definitional view in this case, because PHP is multiparadign, supporting both stateful and functional programming , so you can't write operations that are functional by definition, you have to know what your are doing.

BTW, I haven't read the paper yet, I guess it will change my views after I do

Re: Ask HN: CS papers for software architecture and design?

#85

Earlier quoted context omitted.

Like most language, meaning is dependent on context. But in general it seems to be good practice to steer clear from pronouns associated with a particular gender when there are other perfectly good terms to be used (In this context, "people", "folks", or even "focused".)

"seems to be good practice" for who? people who enjoy policing language, maybe. some people just want to express themselves without hypervigilantly monitoring every single word they say, for anything that could potentially offend anyone.

People who care about the effect their words have on other people.

Re: Ask HN: CS papers for software architecture and design?

#86
post #62
post #61

Earlier quoted context omitted.

> I think good software engineers are just as much product guys (and data guys) as they are software guys. ya often times they are women too

pretty sure 'guy' in modern American English is gender- and age-less. As in two 70 old ladies could be addressed as "you guys" too. Surprised me a lot when I was there

Pretty sure most 70-year-old American ladies would be quite surprised to be addressed or referred to as "guys". I'm not sure who you hung out with while you were here, but it may not have been a representative group. (Some people think "guys" is a universal referent, other people don't. The first group seems to skew heavily to younger males.)

Re: Ask HN: CS papers for software architecture and design?

#87

"Scripting: Higher- Level Programming for the 21st Century" by J. Ousterhout was certainly very influencial (cf. Python, Ruby, etc.) https://web.stanford.edu/~ouster/cgi-bin/papers/scripting.pd... Not sure the paper in itself aged so well. Also, see: https://en.wikipedia.org/wiki/List_of_important_publications...

Thx for the wikipedia link, this is probably the best paper list I've seen so far

Re: Ask HN: CS papers for software architecture and design?

#88

Earlier quoted context omitted.

"seems to be good practice" for who? people who enjoy policing language, maybe. some people just want to express themselves without hypervigilantly monitoring every single word they say, for anything that could potentially offend anyone.

People who care about the effect their words have on other people.

And what of the effect suppressing/policing speech has on society and wellbeing? Believe it or not, censoring yourself and having to be in a heightened state of alertness with every word you say, against a litany of possible ways someone might take offense also has a negative effect on people.

Re: Ask HN: CS papers for software architecture and design?

#89

Not sure it says a lot about 'architecture', but in terms of 'design', Daniel Jackson's "Rethinking Software Design" has been an absolute eye-opener: https://www.youtube.com/watch?v=cNe6g0qczxE The premise of the talk is that while software engineering goals & processes are well-defined and well-understood, the same does not apply for software design. He sets up a framework of 'purposes' and 'concepts', which in an i…

I am a big fan of Daniel Jackson's approach to teaching programming, and really like his courses, in particular the mindblowing "Elements of Software Construction" [1], which is, by a mile, the best programming course I have come across, and which I believe is sadly underrated; I know there are more recent versions of this course, by a different professor, that use the more popular (at least in this forum) Python instead of Java, but IMHO with all due respect, they are a bit dumbed down and I believe that you won't get the same out of them. It is not really a Java course, it has improved my programming (and, very specially, design) in general, in any language. It completely changed the way I look at design patterns, for instance; it made me really understand functional programming and state machines; what OO really is about; how to choose a software paradigm for a given problem; and now I use JSP stream processing to model many programs (nothing to do with java JSP, it was created by his dad in the 70s, "the other Michael Jackson").

To really appreciate how much thought went into the design of this course, I recommend reading "A New Approach to Teaching Programming" [2]

As for the Concepts and Purposes you refer to, there is more on this in [3] [4] [5] in the MIT 6.170

[1] https://ocw.mit.edu/courses/electrical-engineering-and-compu...

[2] http://people.csail.mit.edu/dnj/articles/teaching-6005.pdf

[3] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...

[4] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...

[5] https://stellar.mit.edu/S/course/6/fa16/6.170/courseMaterial...

Re: Ask HN: CS papers for software architecture and design?

#90
post #9

For me, the most influential was "Out of the Tar Pit". From the abstract: "Complexity is the single major difficulty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential difficulty, but disagree with his premise that most complexity remaining in contemporary systems is essential." [1] https://github.com/papers-we-love/papers-we-love/blob/master...

I am not an expert and I might be well be wrong, but I decided to stop reading this paper after page 28 because I thought it is, well, not serious research and IMHO BS. I decided then to lookup the authors in google and scholar, and came up just with this paper, no other info or any academic background as far as I can tell; there is a Ben Moseley from Washington Uni, but his paper is not listed among his papers so I assume it is a different Ben.

I would have expected the authors of a paper that makes such revolutionary and sweeping claims to have more of a trail.

But of course, you have to judge a paper by its content.

The reason I stopped is because they quote heavily from a well respected book (often described as an updated SICP) that I am studying now, "Concepts, Techniques and Models of Computer Programming", and my interpretation of what the book says is at odds from how they apply it in the paper.

For instance, in the book the difference between a formal specification and an informal one is not in precision, but in that the formal one uses a mathematical language. However, in the paper it says that a formal specification is the same as formal requirements (synthesised by the engineer), which are different from informal ones from the user. These definitions can't both be right.

They also claim that in the ideal world control (basically order) can be entirely omitted. But what if from the user's informal requirements we must deduct that there are events that the user expects to be ordered?

The paper also claims that concurrency is not relevant in an ideal world, given that all operations are instantaneous. This would be impossible if there indeed there would be essential control, given that parallelism in the world is inescapable.

At this point I was convinced that I was wasting my time, and now I know why this paper hasn't had any impact in the mainstream, as one commentator has wondered.

Post reply on HN