Live data from Hacker News

Writing Software is Hard

m.signalvnoise.com

11–20 of 28 posts

Re: Writing Software is Hard

#11
In my opinion the biggest reason why writing software is hard is that the requirements are often not clear from the beginning. Changing requirements can kill a software project. What makes it even harder is when data has to be migrated during the process.

Analogy for clueless manager types: in many cases, software is 99% plumbing. But imagine the cost of changing the plumbing after the house has been built :) Also consider the problem of changing the plumbing while people are actually living in the house.

Re: Writing Software is Hard

#12
post #3
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

This might be related: https://xkcd.com/927/ Edit: Besides that, I agree, except one thing, I'd say C# is just MS's reaction that there is something awesome which does not belong to them.

C# is pretty much what Java ought to be, if it hadn't had a lost half decade where Sun/Oracle sat on their hands after 1.6.

Re: Writing Software is Hard

#13
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

Could you elaborate on what you think a better direction for creating a programming language would be? I'm not sure I follow how that would be done in a way that isn't like the list you described. I don't see someone wandering out of a cave and unveiling a p-lang that didn't build off of known drawbacks of past languages.

Re: Writing Software is Hard

#14
post #5

I completely agree with the idea that we are overestimating the impact of tools, specifically, programming languages. I often see startups that rewrite their software one or more times just because they think that changing the tools is the key to success. They switch from PHP to Python, then from Python to JavaScript then from JavaScript to Go. It's so easy to say "We failed because X language, now we have to use Y".…

Having (or not having) large successful projects written using some tool is not evidence that it's a good tool. Your implication that it is stands in bizarre contrast to your statement that the impact of tools is overrated.

Force of will, network effects, and other political factors dominate most forms of technical merit when it comes to "success" of a project. This includes such meritorious properties as security as well as understandable code. Let's not give up, OK? Doing a good job is always going to be hard, but it doesn't have to hurt this much, and it doesn't have to be as crappy-by-default as it is now.

As we take responsibility for doing better with our tools, we need to take responsibility for doing better on our tools.

Re: Writing Software is Hard

#15
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

I agree, we haven't solved programming yet. It might take another 50 or 100 years... or longer.

Re: Writing Software is Hard

#17
post #13
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

Could you elaborate on what you think a better direction for creating a programming language would be? I'm not sure I follow how that would be done in a way that isn't like the list you described. I don't see someone wandering out of a cave and unveiling a p-lang that didn't build off of known drawbacks of past languages.

I think that's part of the problem - none of us have yet the conceptual ability to see what the answer is. We're just scratching symbols on cave walls. Until some massive unexpected breakthrough or insight, it seems like programming languages are doomed to continue circling the same old ground.

Re: Writing Software is Hard

#18
post #4

Writing software is hard but to me the hardest part is always taking a random abstract concept from someone's mind (or worse, several people) and converting that into something "real" in a fixed timeline and budget. There will have to be lots of tradeoffs and miscues by definition. We are always making something that doesn't already exist, it is creation and creation is hard. I do agree that tools (and process and ..…

I will parrot what a professor told me years ago. The hardest part of writing software is proper requirements gathering. He said it was like pulling teeth. By proper I mean the developer knows exactly what the client wants and the client knows exactly what will be delivered. A "meeting of the minds," I call it. I always tell clients this is the hardest part.

Re: Writing Software is Hard

#19
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

>all languages share the same flaw; they specify the what and the how, but never the _why_. Until we figure out how to encode the _why_, we will forever be going in circles.

I don't believe encoding the "why" is possible.

The mapping from "why"s to "machine code" is not predefined bijective nor injective.[1] It can't be well-defined enough to make a deterministic compiler. If you restrict the set of "whys" to a very narrow set of "understandable" inputs by the compiler, you've basically re-implemented the specifying of the *"whats" again.

Building ever higher abstractions is tractable because it's what we've been doing for decades: combine several lower-level "whats" into higher-level "whats". But encoding the "whys" seems to be unsolvable. Either that or I'm not understanding what you're communicating.

[1] https://en.wikipedia.org/wiki/Injective_function

Re: Writing Software is Hard

#20
post #3
post #2

Writing software is hard yes, but I disagree with the author: I do blame the tools. Every language since C has been created as a reaction. What I mean by this is: > C++ was created as a reaction to OOP being so difficult to do in C. > Java as a reaction to memory management being difficult. > C# as a reaction to Java not being concise enough. > Javascript as a reaction to HTML not being dynamic enough. > Go has a rea…

This might be related: https://xkcd.com/927/ Edit: Besides that, I agree, except one thing, I'd say C# is just MS's reaction that there is something awesome which does not belong to them.

It doesn't matter which way you look at it, Java today, after all the work put into catching up, still pales in comparison to the C# of 2007.

Really, C# is a public service to correct for something that for so many reasons should be awesome having turned out so-so at best.

(You may say writing a million getters and setters, declaring types twice, stuffing your code in deep directory hierarchies, and dealing with bizarre licensing/version issues feels normal; that's the Java talking.)

Post reply on HN