TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Finish your stuff

406 pointsby cjgalmost 10 years ago

39 comments

wainsteadalmost 10 years ago
I thought the Unix philosophy embraced the idea of &quot;small tools that do one thing really well.&quot;<p>&gt; Please join me in my effort and do finish your projects.<p>Hear, hear. A friend and I hosted a &quot;Finish it! Weekend&quot; once (as opposed to a &quot;Startup Weekend&quot;). The idea was to get people together for one weekend and finish that last 10% or whatever of a project. Sadly we were the only two to show up. (And we both finished our projects, which suggests this might be a good kind of hackathon to host every six months or so).
评论 #9838984 未加载
评论 #9838690 未加载
评论 #9838914 未加载
评论 #9838494 未加载
评论 #9842188 未加载
评论 #9840311 未加载
评论 #9839795 未加载
评论 #9838822 未加载
netcraftalmost 10 years ago
Am I the only one that really hates the carpenter analogy? As someone who does woodworking on the side of my programming, there&#x27;s a million reasons why it&#x27;s a terrible way to think about software development. The chair doesn&#x27;t have supported platforms, new security issues, or the need to be updated so that people keep buying the same chair. Someone else isn&#x27;t going to have to come along later to maintain the chair and have to be knowledgeable about the specific tools that the chair was built with.
评论 #9838977 未加载
评论 #9841113 未加载
评论 #9839095 未加载
评论 #9842730 未加载
评论 #9839219 未加载
评论 #9838971 未加载
评论 #9839661 未加载
评论 #9853163 未加载
评论 #9838922 未加载
rlpbalmost 10 years ago
I find it irritating when people look at some of my projects on Github and consider then &quot;abandoned&quot; because they haven&#x27;t had any commits in a year or two. They&#x27;re not abandoned: they&#x27;re finished. They do what they&#x27;re designed to do, and I use them regularly.<p>Outstanding issues may exist for feature requests that I don&#x27;t need, or for minor bugs that won&#x27;t occur in anything but obscure edge cases that don&#x27;t apply to the primary use case. I welcome high quality patches but otherwise have no interest in pursuing them.
评论 #9840006 未加载
评论 #9840211 未加载
评论 #9839406 未加载
评论 #9842024 未加载
onion2kalmost 10 years ago
There&#x27;s a great list of project management advice by Jerry Madden of NASA that gets posted here occasionally[1]. One of the points is;<p>&quot;Rule #30: It is mainly the incompetent that don&#x27;t like to show off their work.&quot;<p>Madden&#x27;s remark is based on the specific environment he was involved in (NASA engineering); if you&#x27;re surrounded by people who are good at their jobs and who know how to criticise constructively then there aren&#x27;t many reasons to hide what you&#x27;re doing other than it being a bit rubbish. I don&#x27;t <i>entirely</i> agree with the idea that people who don&#x27;t show things off are necessarily incompetent, especially if showing off your work means putting it under general public scrutiny (who can be very nasty), but there&#x27;s a huge amount of value to be gained in getting feedback <i>from your peers</i> as early as possible.<p>[1] <a href="http:&#x2F;&#x2F;www.nasa.gov&#x2F;pdf&#x2F;293253main_62682main_jerry_madden_forum7.pdf" rel="nofollow">http:&#x2F;&#x2F;www.nasa.gov&#x2F;pdf&#x2F;293253main_62682main_jerry_madden_fo...</a> (Non-PDF version: <a href="http:&#x2F;&#x2F;www.altisinc.com&#x2F;resources&#x2F;rules&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.altisinc.com&#x2F;resources&#x2F;rules&#x2F;</a> )
评论 #9838329 未加载
评论 #9840418 未加载
评论 #9843137 未加载
评论 #9843138 未加载
mellingalmost 10 years ago
&quot;Real artists ship&quot;<p>&quot;if you are not embarrassed by the first version of your product, you&#x27;ve launched too late&quot;<p><a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Release_early,_release_often" rel="nofollow">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Release_early,_release_often</a><p>I&#x27;m sure there are many others, but these ones keep me shipping.
评论 #9838245 未加载
评论 #9839604 未加载
ameliusalmost 10 years ago
&gt; You bought a damned chair and you want it to remain a chair, not to find out that it&#x27;s some kind of protean piece of furniture that&#x27;s a chair today and partly a table tomorrow and, who knows, maybe you&#x27;ll be able to humidify your cigars in it next week.<p>This is exactly my problem with web-services (and software that auto-updates itself).
评论 #9838946 未加载
评论 #9838404 未加载
habermanalmost 10 years ago
The only way to &quot;finish&quot; software in the way the author describes is to find or invent an abstraction that is exceptionally powerful and well-designed. It has to give users what they want for a multitude of different use cases without requiring the library to grow to accommodate those use cases.<p>In practice, abstractions this powerful and flexible are almost impossible to create. For example:<p>- the Linux kernel is based around POSIX, which is a pretty good set of abstractions. But its API surface area is huge, and whenever users want to do something not in POSIX, the Linux developers have to invent a new syscall or stick more crap in &#x2F;proc.<p>- Lua is an exceptionally well-designed scripting language and implementation, that satisfies tons of use cases while staying small. But it keeps adding features to address pain points of existing users. For example, Lua 5.3 added integer support. Users wanted it.<p>- zlib is perhaps the closest I can think of to a library truly being &quot;done.&quot; And it gets away with this because it is perhaps one of the easiest abstractions to define and contain: a simple string-&gt;string streaming transformation that uses a roughly constant overhead of memory. That&#x27;s pretty much as good as it gets!
评论 #9842140 未加载
gedrapalmost 10 years ago
In my own experience, I found the following 2 things being the most important:<p>1) Keep it fun. Sometimes you start working on something and a week later you realize it&#x27;s not as great as you expected it to be. Maybe you are working on some game and you can see it won&#x27;t be as fun to play as you thought, etc. It&#x27;s fine, it&#x27;s ok to stop working on it. Forcing yourself to work on it won&#x27;t produce any good.<p>2) Start with well defined, small goals. Define v1.0 which would contain only the most critical features, ship it (even if it means simply tagging on git). There&#x27;s something hugely motivating about completing things, no matter how simple they are.<p>EDIT. One more thing I&#x27;d add, when working on a side project, don&#x27;t start thinking about how everyone will be using, how many thousands of github stars it will have, whatever. It doesn&#x27;t even have to be actually useful, as long as you have good time and learn something on the way. I&#x27;ve worked on a few projects that I&#x27;d say are totally useless (such as <a href="https:&#x2F;&#x2F;github.com&#x2F;GedRap&#x2F;xs-vm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;GedRap&#x2F;xs-vm</a> ) but at the same time I see them as successful because a) had great time b) learned something new, even if it&#x27;s some small details about a library or a language.
评论 #9838852 未加载
mironathetinalmost 10 years ago
&quot;Lately, after 30 years in the programming business, I&#x27;ve finally managed to cut down my projects to a reasonable size.&quot;<p>... long before those thirty years, someone who thinks he is a great manager may take over the steering wheel (he or she). And things are ready to start from the beginning.<p>Im my group, we have another flavour of not finishing things: managing by whatever is in front of the managers mind and declare it highest priority. This is the best way to work hard all the time and get nothing done at all. Well, we all read peopleware a long time ago, all except of the managers.<p>Anybody here, who has a good idea how to handle these traps?
评论 #9838780 未加载
ams6110almost 10 years ago
Just an aside on the carpenter metaphor, there&#x27;s sort of a running joke that a carpenter&#x27;s house is never finished. It&#x27;s not just the software profession that has this problem.
评论 #9839300 未加载
Walkmanalmost 10 years ago
I can&#x27;t think of a piece of software I wrote and feel finished, not because I abandoned them, but because I stop improving them when they are good enough for the task.<p>Maybe it&#x27;s just me but I never feel a software is finished. You can at least refactor it or add new funcionality, improve speed&#x2F;readability&#x2F;reliability until the end of time. It&#x27;s like writing a book. You can always rephrase, add new characters improve the story, but you have to stop writing it sometime.
评论 #9842007 未加载
pfortunyalmost 10 years ago
Oh, come on: software is usually much more than a table or a chair. It grows, it needs care, it is more like a plant than something static.<p>What does it even mean to &quot;finish&quot; a program like &#x27;ls&#x27; given the increasing complexity of filesystems with time?
评论 #9839325 未加载
评论 #9838742 未加载
qzncalmost 10 years ago
The point of the article is not &quot;Finish your stuff&quot;, but &quot;Tackle smaller problems&quot;.
评论 #9839656 未加载
rdtscalmost 10 years ago
Is nanomsg finished?<p>I found its Windows support rather broken -- failing test cases. Strange lockups.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;nanomsg&#x2F;nanomsg&#x2F;issues" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nanomsg&#x2F;nanomsg&#x2F;issues</a><p>I do not see Martin working much on those these days. Does anyone know how untangle those state machines besides him.
评论 #9839201 未加载
评论 #9839850 未加载
kazinatoralmost 10 years ago
The only software that gets truly finished is embedded firmware for small devices, which is done when it is debugged and covers all the conceivable use cases, and development stops. (The firmware may still generate new descendant code, but users have to get new hardware to get that code.)<p>For much software, being finished is actually a kiss of death, because it is expected to keep improving and putting out new revisions. So &quot;finished&quot; is regarded as a synonym for &quot;abandoned&quot;.<p>&quot;Finish your stuff&quot; for that kind of software is a poor directive. Rather, it should be, &quot;before each release, get your stuff into a state of completion whereby everything that is documented is implemented and vice versa, and the quality is good (bug-wise, etc)&quot;.
danvoellalmost 10 years ago
A couple times today, I found myself in the middle of something and came back to HN to procrastinate. I saw the Finish Your Stuff headline and left to finish what I was doing. I need to have a little banner on top of my computer that says &quot;finish your stuff&quot;
评论 #9842305 未加载
jsingletonalmost 10 years ago
The Zero MQ guys seem to have some pretty good wisdom to impart. Pieter Hintjens has a free book at <a href="http:&#x2F;&#x2F;cultureandempire.com" rel="nofollow">http:&#x2F;&#x2F;cultureandempire.com</a> which is worth a read.
评论 #9838704 未加载
评论 #9839906 未加载
sovaalmost 10 years ago
Some very practical, down-to-earth, solid advice.<p>Lines I found insightful: &quot;... make it functionally complete in the first place.<p>... If it can&#x27;t be made functionally complete it&#x27;s too big. You&#x27;ve tried to bite off a piece that&#x27;s bigger than you can swallow. Just get back to the drawing board and split off a piece that can be made functionally complete.&quot;<p>^_^<p>I really like the idea of splitting a project into phases. You might have Three phases, each one building on the last, but the very first complete phase should be a complete and usable thing in itself.<p>First the skateboard, then the scooter, then the bike, the motorcycle, and finally the car.
评论 #9838095 未加载
评论 #9838072 未加载
评论 #9838248 未加载
kefkaalmost 10 years ago
&gt; Imagine the carpenters were like programmers.<p>So, they do the work for free, and updates as long as people keep using it?<p>Terrible analogy.
rc4algorithmalmost 10 years ago
&gt; Except for some basic UNIX tools, like grep or make, it&#x27;s almost impossible to find anyting that&#x27;s truly finished, not simply abandoned.<p>Much of the stuff in the OpenBSD base.<p>thttpd also comes to mind.
emodendroketalmost 10 years ago
Now what if your home regularly changed in such a way that your old chairs didn&#x27;t sit upright anymore? There are limits to the carpentry analogy.
评论 #9839011 未加载
评论 #9839827 未加载
评论 #9838980 未加载
chilicuilalmost 10 years ago
Yeah, it&#x27;s hard to have a productive life with always moving targets.<p>With git, github and software managers pulling directly from it (although a decentralization way could be even better), I wish we get more often software by hash so we stop worrying less about copping with new changes and more about doing what matter to us.
shabbyrobealmost 10 years ago
What does this mean for the future of nanomsg&#x27;s development?
评论 #9838207 未加载
JustSomeNobodyalmost 10 years ago
A lot of people equate &quot;done&quot; as &quot;abandoned&quot;. Wasn&#x27;t there some ruffled feathers between Rob Conery and some user over Massive being &quot;done&quot;?<p>But, then, who wants those kinds of users, right?
splatyalmost 10 years ago
I&#x27;m 5 years into the programming business and my own projects are just starting to get into a usable state in a reasonable amount of time. Finishing things feels a bit further away still.<p>Thanks for the article.
chipsyalmost 10 years ago
I currently approach it from the &quot;cyclical&quot; time-management model. I&#x27;ll know that things are never finished, but what I can do is finish a sketch of a broad system, or a detailing of a smaller portion, and return to it later. Repeating that a few times gets very powerful results.<p>What never works is when I start building an eternal software edifice. My name is Ozymandias, king of kings...
raggiskulaalmost 10 years ago
Just leaving this here, side project comic strip <a href="http:&#x2F;&#x2F;www.commitstrip.com&#x2F;wp-content&#x2F;uploads&#x2F;2014&#x2F;11&#x2F;Strip-Side-project-650-finalenglish.jpg" rel="nofollow">http:&#x2F;&#x2F;www.commitstrip.com&#x2F;wp-content&#x2F;uploads&#x2F;2014&#x2F;11&#x2F;Strip-...</a>
hobarreraalmost 10 years ago
This is the sort of wisdom that&#x27;s really hard to pass on. I&#x27;ve learnt this from experience, and many other have. But when we try to pass this on to new programmers, the message never quite reaches them until they&#x27;ve learnt in by experience.
panadolkeyalmost 10 years ago
Run of the mill software exhibit life cycle patterns more like a small animal. It starts out all nimble and has to grow and change over time to become an adult of its kind; then it eventually dies.<p>Finishing your projects is good advice overall though.
euphemizealmost 10 years ago
I like this idea, but I&#x27;m not sure it&#x27;s realistic. Constraints change all the time, just like your users&#x27; needs. In principle this works, but I&#x27;m not convinced that everything should aim to be finished.
omousealmost 10 years ago
I&#x27;m at the last 10% of a screencast script; there&#x27;s two more phases after this but for some reason my productivity on the project has slowed to a crawl. I&#x27;m not sure how to overcome this feeling.
z3t4almost 10 years ago
If you think &quot;giving up&quot; on a project is easy. Try &quot;giving up&quot; on your &quot;dreams&quot;, those project you work on every day, even though you know you wont make it.
iambotalmost 10 years ago
But its so hard! :) my strategy is to have many 3-9 side projects on at any one time, each is really just practice and I judge the concepts based on how often revisit them.
halaylialmost 10 years ago
We share this problem with painters. It&#x27;s hard to know if it needs a final brush touch or it&#x27;s done.
linux_devilalmost 10 years ago
Very good read , particularly comparison of chair with product in first few lines was opener .
jblokalmost 10 years ago
&quot;Lately, after 30 years in the programming business, I&#x27;ve finally managed to cut down my projects to a reasonable size.&quot;<p>After 30 years of programming, you&#x27;d better be a pretty decent programmer. And maybe that&#x27;s why their projects take less time to complete.
评论 #9839838 未加载
Kenjialmost 10 years ago
Slightly OT, but<p><i>Except for some basic UNIX tools, like grep or make</i><p>Is make a basic tool? I&#x27;m often surprised when I find out new features of make that I was unaware of. I feel like it&#x27;s bigger than it appears to be.
评论 #9838326 未加载
评论 #9838188 未加载
评论 #9838315 未加载
curiousjorgealmost 10 years ago
I don&#x27;t know, lot of interviews I&#x27;ve been to in the past doesn&#x27;t seem to value the fact that I spent almost 4 years of my life working on a single project (which will never be finished but pretty damn good by now) or that I&#x27;ve been selling and supporting customers with it.<p>A basic memoization algorithm type questions or &#x27;tell me about a time when you...&#x27; and I choke every god damn time while a fresh graduate with a CS degree breezes through it.<p>I don&#x27;t spend time on any of that when I&#x27;m working on a problem, it&#x27;s important for me to build something that just works first in order to meet project deadline and then optimize afterwards but I guess this is not good for an employee point of view since they want someone who is more focused on producing code over product functionalities and features. At that point it would be useless if you&#x27;ve built something they can&#x27;t look at the code (why the hell should I reveal proprietary information?).<p>So basically I find myself with the ability to finish but unable to be hired as an engineer as I lack CS and experience writing code in an office environment. Contrary, finding freelance projects and landing work has always been far more easier, and I can maximize my value for my client and also myself, since it is tightly coupled to the ability to complete projects on time and solve problems. Pushing back deadlines because of disagreements over code formatting or technology choice is not how I want to spend my time.
评论 #9842096 未加载
jdimov9almost 10 years ago
This is absurd. A finished project is a dead project. If it isn&#x27;t improving, it&#x27;s dying.<p>Never finish your projects (unless you&#x27;re just doing homework). Software is a system. Systems of any non-trivial complexity are living things that must adapt and evolve. Constantly.<p>(Also, there is absolutely nothing wrong with abandoning a project. Gain as much as you can from your experience and quickly move on to something better &#x2F; more meaningful.)
评论 #9839428 未加载
评论 #9839358 未加载
评论 #9839383 未加载
评论 #9839790 未加载
评论 #9852825 未加载
评论 #9839229 未加载