TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

A hierarchy of software engineering discourse

134 点作者 jfe超过 5 年前

16 条评论

jrochkind1超过 5 年前
&gt; I wonder if it would actually be better for software teams to build not the thing they want, but rather the thing that makes the thing they want.<p>Sounds so appealing to programmers, so much harder than it sounds. A dangerous fantasy many ships have broke upon.<p>The proposals of &quot;yagni&quot; and the &quot;mvp&quot; are in some sense a reaction to the danger.<p>On the other hand, when it works, it works. I&#x27;d say Rails is an example.
评论 #20886976 未加载
评论 #20886875 未加载
评论 #20887330 未加载
评论 #20889608 未加载
评论 #20888182 未加载
评论 #20887794 未加载
评论 #20887150 未加载
tboyd47超过 5 年前
&gt; &quot;1. Fixations... 2. Requirements&quot;<p>Brilliant!<p>But I would have condensed the last 3 into one point: &quot;Productivity.&quot;<p>Productivity - accomplishing more with less work - should be the #1 internal goal of every software team. Productivity means you have more hours of the day and more of your effort freed up. This means more time for testing; more time for enhancing your tooling; more time for spikes; more time for upgrades; more time to develop features. Even if no one <i>does</i> anything productive with the freed-up time, it still improves morale and emergency responsiveness.<p>You can of course go too far with it and ruin your <i>fingerspitzengefühl</i> by automating too much of your work.<p>Most teams have testers who are built-in advocates for requirements accuracy. But productivity has no built-in advocate. Developers themselves are the first to sabotage their own productivity in pursuit of - let&#x27;s all just face it - fixations.
pooktrain超过 5 年前
Seems like the spirit of this article is &quot;don&#x27;t debate test coverage, code design, etc. and just get the job done because meeting requirements is all that matters&quot; and that we should focus on making code shorter. No evidence is offered that shorter code is somehow better than code that adheres to &quot;best practices&quot; or has higher test coverage. Has anyone here fit an entire enterprise software system into half a page, thereby obviating the need for unit tests and clean, understandable code?<p>This feels like someone that just wants to throw whatever code they want over the wall without being bothered to design it well, write tests for it, and adhere to a team&#x27;s shared design guidelines. I can&#x27;t stand working with people like this. Just my two cents.<p>EDIT: I see that this isn&#x27;t the primary point of the article, and that maybe the author means we could rid ourselves of so much debate by creating more powerful tools and working at a higher level of abstraction. I think that some of these same things are being attempted, though, when someone suggests a design pattern or something within existing code that could raise the level of abstraction, and that it&#x27;s worthwhile to have that debate rather than label code design best practices as trivialities.
评论 #20887697 未加载
评论 #20887928 未加载
评论 #20887735 未加载
Kapura超过 5 年前
The idea of &quot;notation&quot; falling into this hierarchy is really fascinating to me. Typically, if starting a new project, I will select a language from those that I am already familiar with based on my comfort in the language and the performance characteristics of the problem.<p>The idea of the language you&#x27;re using to solve the problem being one of the things you&#x27;re developing is an exciting and scary thought. Exciting because you can immediately implement any ideas you have into the new language, scary because stack overflow won&#x27;t save you if you paint yourself into a corner.<p>In modern times, I can think of two languages that seem to have been built to provide solutions in specific problem domains: Go and Jai. Go is a fantastic language in certain problem domains, and I wish I had more excuses to use it. Jai isn&#x27;t available publicly yet, but the creator of the language builds games for a living, has built (and shipped) multiple successful games, and he&#x27;s building the language so that games can unchain themselves from C++.<p>I believe the article of the linked article is correct that this should be part of more engineers&#x27; toolkits. It may feel like it&#x27;s easier to just use keep using C++ (or whatever) but what feels easy now doesn&#x27;t protect you from the inevitable problems of the future.
评论 #20888195 未加载
评论 #20888734 未加载
评论 #20889226 未加载
评论 #20891449 未加载
greymalik超过 5 年前
Because the linked article inexplicably doesn&#x27;t link to the Paul Graham article it references, here it is: <a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;disagree.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;disagree.html</a>
bytematic超过 5 年前
I think that &quot;code style, naming conventions, source code and repository layout&quot; being commented on by younger devs makes sense since they likely don&#x27;t have the social power or knowledge to make these other suggestions. Also those suggestions can be important in the early stage of a project to set precedence
jshowa3超过 5 年前
I disagree with code style as a fixation. It&#x27;s much better to have a uniform style if it improves the readability of the code.<p>I think the most important thing is to not make a fixation a 20 hour discussion.
评论 #20889784 未加载
评论 #20889368 未加载
评论 #20891837 未加载
jimbokun超过 5 年前
I&#x27;m not sure the &quot;Environments&quot; he cites are good examples for most types of software development.<p>Mathematica, MATLAB, Lisp, Smalltalk, are all development environments where there are a lot of questions around how to best deploy the software after you have written it. Maybe in some cases you have enough control over the customer environment where you can tell them &quot;Just install MATLAB, then run this code we are giving you.&quot;<p>But what if the requirements are to deliver an iOS or Android app? What if you are building a web service? Or an embedded system? Or a game for a specific console?<p>Continuous integration and deployment are too very important problems that need to be carefully considered when deciding on or creating an Environment.
评论 #20888473 未加载
评论 #20888065 未加载
评论 #20889058 未加载
ken超过 5 年前
&quot;What we want is a vehicle for exploring that space -- something like an IDE for your problem domain. It&#x27;s been joked that any problem in computing can be solved with another level of indirection, but I wonder if it would actually be better for software teams to build not the thing they want, but rather the thing that makes the thing they want.&quot;<p>To this Lisp programmer, this sounds like plain old bottom-up design. I&#x27;m making primitives and syntax for The Thing I Want. My IDE essentially <i>is</i> an IDE for my problem domain.<p>It&#x27;s a bit harder in other languages, but still more or less feasible. I think many people would be surprised by how much of my software is written in itself.
m4gw4s超过 5 年前
Most of these levels are actually concerns of different professions, which are today together comprise the art form called programming. For example coding will only become a profession when there will be very restrictive, agreed upon rules ranging from what kind of objects do we have (like service, dto, testcase, etc), how they look like, how they are named, where they are in the source code (with reference to the design of software), what is their maximum complexity, etc. Remember: a profession is a type of activity which have rules, which minimizes the possibility of mistakes. Which means there are rigid rules, killing creativity.
a_c超过 5 年前
Software engineering is the blend of software, business and people. When the business is itself purely about software, and the sole team member is yourself, then I agree with the article.<p>The ultimate currency in software engineering is time. Time spent on ideation, time spent on requirement gathering, time spent on designing, time spent on communicating ideas, time spent on iterating features, time spent on maintaining existing codes.<p>If going through the hierarchy saves you time, by all means do it.
jones1618超过 5 年前
It&#x27;s odd that he incidentally refers to &quot;architecture&quot; a couple of times but doesn&#x27;t include that in the hierarchy. I&#x27;d put architecture above models because it defines not just how your models are partitioned and connected but how they communicate. Also, good architecture isn&#x27;t an answer to here-and-now requirements but anticipates how an entire system might need to adapt to _future_ requirements.
评论 #20889795 未加载
29athrowaway超过 5 年前
Architecture is a word used by many people in software.<p>I ask the author of this article: have you looked at the definition of software architecture?<p>ISO, IEC and IEEE agree on what software architecture means.<p>Quality, as in code quality, is an architectural concern. Good practices are an architectural concern.<p>If you downplay the role of good software engineering practices as unimportant bikeshedding you cannot call yourself an architect.
skybrian超过 5 年前
&quot;Requirements&quot; is an often-misleading word. The danger is putting the customers on a pedestal while at the same time not really listening or understanding.<p>Supposed &quot;requirements&quot; are sometimes merely design preferences. Customers will often trade them for other things they want more (time to delivery, higher priority features, alternative implementations) if given a chance. Unless you have a good relationship with the customer so you can negotiate these tradeoffs, you may build something that meets requirements but isn&#x27;t what they really want.
w_t_payne超过 5 年前
Very interesting.<p>I would have treated &quot;requirements&quot; differently - considering them as a mechanism to capture all levels in the hierarchy rather than a distinct level in their own right.
评论 #20887951 未加载
rhizome超过 5 年前
Where does &quot;coming up with new manifestos&quot; fit in? Because that&#x27;s a demonstrably integral part of software engineering, too.