7 ms·
Ask HN: How to see a piece of hackage through from start to finish?
Hi there like-minded souls,
I taught myself to code in C at a young age. I am very much an auto-didact and everything I know about software development comes from learning on the job and through my own curiosity (I have Compilers ... by Aho et al. staring at from the bookshelf as we speak), not from a comp-sci higher level education. In fact, I have a degree in philosophy and mathematics.
I have a ton of ideas that I'd love to pursue. Ideas in electronic poetry, and idea for a wysiwig live web-page builder, an idea for a syntactically extensible functional programming language. An idea for an anti-social networking site. But I never get anywhere with them. I'm always tinkering but never crafting. I always find some excuse to drop one thing and start another. I've taught myself Ruby on Rails a few years ago because PHP was getting me down and though I've been keeping myself up to date with jQuery and now Rails 3 I have never completed a website in it!
I would love some advice. But moreover I think I just need to get this off my chest so thanks for listening.
How do I choose one set of technologies (and stick with them) and learn them inside and out? How do I choose a project that will reward me intellectually and financially? and most importantly how do I get myself to stick at one thing from start to finish?
Now where was that Haskell tutorial ...
- patio11 16y agoStop making excuses and ship something. Do arbitrary deadlines do it for you? A few of us are shooting for the end of November. Build a business this month, ship to customers at the end, support as required. Cut scope to the smallest thing worth money, but ship. Settle for a good implementation over a perfect one, but ship. Have regrets, but ship. Create technical debt, but ship. (You have 28 days or so left, which is the original schedule for BCC plus twenty days.)
- Tyrannosaurs 16y agoI agree. This question comes up in different forms time and time again and the answers are almost always the same: Just do it. The only thing stopping you doing it is you so stop procrastinating and get on with it or just admit you're actually not that bothered / committed / whatever.
- igravious 16y agoI've been following this site for a while and I've been paying attention. I haven't seen this specific question put in exactly this way. I'll have another root around though, thx! The whole thing kind of depresses me because at the moment I don't even have a job in IT, I've returned to university to get a master in humanities - digital culture studies in fact so it's not like I've left the tech world completely behind me. I couldn't succeed in the corporate world either as an employee or freelance. I would love to have some kind of part-time paying gig to supplement my income of 0 but my inability to do stuff for myself with just my dreams and desires as motivation is letting me down once again. I'm letting myself down once again. Don't get me wrong, this is not a Oh woe is me sob story, I'm doing okay, I know I could do better cuz I've got the smarts...
- noahc 16y agoMy father told me to be really smart. When I was a child I read volumes and volumes of histories of the united states, children's encyclopedias, regular encyclopedias, dictionaries, etc, etc. At some point the reading has to end. The learning has to end. You have to do it. Also, smarts don't matter. You can be the smartest person in the world, but until you do it. It doesn't matter, because you're just like the kid who hasn't read it all. Stop being a theorist and start being the guy in the arena[1]. [1] http://www.theodore-roosevelt.com/trsorbonnespeech.html http://www.theodore-roosevelt.com/trsorbonnespeech.html
- coliveira 16y agowell, these guys are giving the right advice. Doing it is the fastest way to succeed, even if it is a small step.
- igravious 16y agoI love the "ship it" mantra. Great idea to keep focus. One thing you mention though resonates. You mention perfection. What is it they say? Perfect is the enemy of the good? I really dislike the work of the dilettante or amateur, my ideals are set pretty high and I see myself failing to meet my own exacting standards and this cripples me productively. Also I am a very indecisive person, plagued with doubt. This is great in that I make up my own mind about a lot of things and I don't fall prey to herd-think but it again is a bit of a productivity killer as I flit from technology to technology and methodology to methodology. For instance I've gone from DOS/Windows to Linux fanboy to Mac owner and from C and C++ to the LAMP stack to Ruby on Rails and from nothing to SVN to Git. It's exciting but tiring and their isn't a project out there that I can call my own and there's a directory full of half-baked ideas and scraps of code in ~/Code
- 8ren 16y ago"Do the simplest thing that could possibly work" - then move on to the next thing. This is going to be painful for you to not stay to "perfect" it (it will take some courage) but bear in mind the following: It's surprising how often the extra bits you were worried about turn out to not actually occur, once you've learnt more from the initial version, you've understood it better and therefore designed a better approach. The first version is to understand the problem. The next version (a rewrite) is to understand the solution. Call them "exploratory drafts" if you like.
- vital101 16y agoI can't support the arbitrary deadlines trick enough. I've set a deadline for the end of November for the project I'm working on. Consequently, I've been getting up an hour earlier every day to work on it, and then working an hour after work on it as well. The feeling of a pressing deadline forces me to get something out, instead of nothing at all. It also helps me with pushing past the "should I use this tool or this tool" problems.
- joelg87 16y agoWho's going for the end of November? I'm building a new business right now and I'm aiming to ship it before the end of November. I have my MVP live already (landing page & pricing page), and I'm collecting some metrics which are showing promise so far, so now I'm working away on the actual product. I'll likely do a Show HN sometime soon to get some awesome feedback. Love the idea of sharing and aiming for this target with others, bringing in accountability. Let me know how I can get in touch.
- Poiesis 16y ago"Shipping is a feature. A really important feature. Your product must have it." http://www.joelonsoftware.com/items/2009/09/23.html http://www.joelonsoftware.com/items/2009/09/23.html
- prateekdayal 16y agoYou need to wear the project manager and developer hat but at different times. Using a tool like Pivotal tracker really helps. Let me explain why. For me the real problem is that when I am done with a task and don't know what to work on next, I tend to lose steam. If you have enough work lined up for a week, you will probably keep going. If you stop to think about what to do next after every small task, you will have a tough time keeping up the momentum.
- igravious 16y agoPivotal tracker. I'll check it out. Thanks. I've used Trac for different commercial projects and tried out BaseCamp. but I think you already need to be a bit organized to use these tools in the first place.
- dpapathanasiou 16y agoI have this problem, too: I get excited by new ideas and the early stages of implementing them are pure joy. Then, invariably, some of the details create unexpected problems, and I feel like I'm stuck on some tangential issue, far from the original concept. What works for me is to focus on one small, specific aspect of your code: it could be a function or feature, but forget about everything else and get it done. Do the same same for the next logical piece, and before long, you've gotten out of the rut. Good luck.
- igravious 16y ago> some of the details create unexpected problems I get stumped on issues that crop up along the way, can't figure them out, don't no how to ask for help. I think that my projects are too special to reveal details about even though I eventually would release the code for every single one of them. I get disheartened far too easily, put the task down saying that I'll come back to it and then six months goes by and I've forgotten the details and it takes me ages to get back up to speed.
- dpapathanasiou 16y agoThere are always places you can get help online: comp.lang.* is still pretty good (depending on the specific language), and sites like StackOverflow usually have good advice.
- 8ren 16y ago1. Try to express the problem as a question (sometimes that's enough to reveal the solution) 2. Google the question exactly as is (surprisingly often this works) 3. Ask your question at http://stackoverflow.com http://stackoverflow.com (actually, open an account right now, so it's ready for when you need it).
- ben1040 16y agoSame here, and another good motivator for me was also to be very, very sure to commit your changes very often. Sometimes when I get really overpowered by one of these problems I tend to throw that out the window and it adds to my frustration in the end. It's hard to tell yourself you didn't accomplish anything, when over the course of the evening you've got a couple dozen commits to show for it. Also it reduces any trepidation you have about getting in there and making a change, because you can easily roll back to where you were 5 or 10 minutes ago.
- jcdreads 16y agoGet a job at a small-to-medium sized startup. You will learn whatever technology you use ridiculously well, by necessity, because you're responsible for shipping the feature; and you will be forced to finish the hell out of whatever you're working on at that moment, by necessity, because it's a _small_ business; and you will need to understand the underlying code all the way through to the fancy polish and fixing of niggling minor bugs that QA finds, by necessity, because you're making a product. These things are all necessary because this is your job; that's your motivation to finish. If you're stuck tinkering it might be best to get a real job for a year or two so you can learn to finish. Then when you start a startup you won't have to learn that particular lesson the hard way. [Edit: reduce ambiguity]
- gaustin 16y agoMost smallish startups want to see a solid portfolio of projects and/or open source contributions. I have similar problems to the OP, and don't have much of a portfolio. What I do have is boring stuff from my day job (the small amount I can share). I desperately want to start my own venture or work for a small, early stage startup. And after seeing the HeyZap job ads yesterday, I got inspired. I planned out a small web app project for this weekend. I will have something launched by Monday morning, or else (I'm not sure what the `else` is, but it'll be bad).
- igravious 16y agoGood for you. (You're right about your initial assessment - coding for a monthly paycheck is not the issue here as being my own boss through the lean times and seeing stuff through from conception to the drawing board and beyond.)
- raganwald 16y agoMy brother is the Tuba chair with the Winnipeg Symphony. His rule is pure simplicity: "Pick up the instrument very day." Of course he devotes a lot of time to practicing, studying, he drives hundreds of miles to take master classes from expert teachers. But underlying it all... Pick up the instrument every day. I think Paul Graham made a similar point about startups failing: That success was built on the foundation of not dying, of not stopping. It's far better to have an organized plan, to use Pivotal Tracker, to have a clearly articulated question you are trying to answer... But if you do something every day, at least you won't come to a complete halt. So do something, no matter how small, every day.
- mdg 16y agoI have heard that same idea applied to the likes of Jordan or Jay-Z. Be out there taking shots from the foul line or write a 16 every day. I haven't figured out how to translate that to writing code or building a product. What would it be: Write a for-loop everyday on some code kata type stuff? Write down a business idea once a day?
- ericn 16y agoWork on the next feature every day.
- wingo 16y agoChoose tools that are part of the world you want to be in. Choose culture, not tech. You will help change the world in that direction. http://wingolog.org/archives/2008/07/10/how-to-choose-between-equivalent-options http://wingolog.org/archives/2008/07/10/how-to-choose-betwee...
- igravious 16y agoThis is very interesting, though somewhat tangential to the specific problem I am giving voice to. That being said, the master thesis I have set for myself is exploring the use of open source tools used by mathematicians so the blog post you have referred me to is surprisingly relevant to a different part of my life so _thank you_ :)
- handrake 16y agoI'm in exactly the same boat with you here. I always try something and keep asking myself if this is the right way to do it. And then I put it off for a couple days pondering over it and essentially never go back...
- igravious 16y agoI hear you and I'm sorry to hear that. A (naughty) little part of me is happy that I'm not alone in this boat, maybe the answer given here can help you as much as me? Chin up :)
- raffi 16y ago“Master your instrument, Master the music, and then forget all that bullshit and just play.” -- Charlie Parker
- zoomzoom 16y agoSounds like you love tools. Remember that if you don't want to become a tool yourself, you need to tie your identity up with shipping a product more than with using any particular toolset. EDIT: I do too! We can all use a reminder like this at some point or another....
- joshklein 16y agoWhile I do think "stop making excuses and just ship" is correct advice, I'm not sure how useful it is to you. You sound like you have a procrastination and/or executive function problem. I highly recommend reading a book called Procrastination [1]. The first step in changing your behavior is understanding why your behavior is the way it is. This is not a self-helpy book; it is written by two clinical psychologists relying on their lab work, patient work, and a wide breadth of historical research on the subject. From the product page: "Based on their workshops and counseling experience, psychologists Jane B. Burka and Lenora M. Yuen offer a probing, sensitive, and at times humorous look at a problem that affects everyone: students and scientists, secretaries and executives, homemakers and salespeople. Procrastination identifies the reasons we put off tasks—fears of failure, success, control, separation, and attachment—and their roots in our childhood and adult experiences. The authors offer a practical, tested program to overcome procrastination by achieving set goals, managing time, enlisting support, and handling stress. Burka and Yuen even provide tips on living and working with the procrastinators you may know. Wise, effective, and easy to use, this new edition shows why for 25 years Procrastination has been an immediate must-have for anyone who puts things off until tomorrow." [1] http://www.amazon.com/Procrastination-Why-You-What-About/dp/0738211702/ http://www.amazon.com/Procrastination-Why-You-What-About/dp/...
- igravious 16y ago> http://www.amazon.com/Procrastination-Why-You-What-About/dp/0738211702/ http://www.amazon.com/Procrastination-Why-You-What-About/dp/... Yeah that looks really great. I've bookmarked it. I'll check it out soon. Maybe tomorrow ...
- deleted 16y ago[deleted]
- deleted 16y ago[deleted]
- rwl 16y agoDear igravious, We're so much alike, it's scary. I, too, studied philosophy and math. I, too, am currently pursuing grad studies in the humanities (in my case, a philosophy PhD program). I, too, am a mostly self-taught programmer. And I, too, suffer from being unable to finish programming projects. (I say this because I don't have a whole lot of advice to offer, but I am glad you asked the question, and I will eagerly follow the answers that others post. I wonder how many others like us there are here on HN?) In addition to what others have said about setting arbitrary deadlines for yourself, here are a few ideas: 1) Get a job that has involves doing some programming. It doesn't have to be at a startup. Since you are in academia, a good place to look would be in labs. (I used to work in a psych lab, myself -- psychologists seem more willing to hire people with philosophy degrees.) I don't know what your research is on, but if there's a way you could connect it with empirical studies, there are probably many labs that would give you a chance to work on it in exchange for working in the lab. And labs always need better programmers. (My guess is that, if you have any sense of code aesthetics, you will be shocked and horrified by the code you find in any working lab. The effort involved in debugging it will be motivation enough to write your own, improved version.) 2) Become reliant on one or a few pieces of Free software. (For me, these are Emacs and Org Mode.) If they are totally indispensable to how you work, you'll notice problems more frequently, and you'll be motivated to fix those problems -- all the way to the end. Lots of people say, "if you want to learn to code, work on an open source project," but for me, that's hard advice to follow in the abstract. It's much easier to follow through when I know the fix will actually help me solve a problem.
- igravious 16y agoDear rwl, Wow. A clone of me floating in cyberspace. You know I used to get funny looks from my philosophy classmates when I answered their question, "so what's your other subject?" (you take two subjects at degree level where I'm from). Nearly everybody combines philosophy and literature or philosophy and sociology or philosophy psychology, you get the idea. But math? What has philosophy go to do with math? I dunno, ask Bertrand Russel. Ask Frege. Ask Descartes. Ask Leibniz. :) And then I'd tell them that I used to work in IT as a software tester and developer and they'd look at me as if I had two heads. In some parts of the world this is considered a lot stranger than other parts. In Spain (where I've had the good fortune to have lived) people think you are _really strange_ if you study one discipline and work at something else. You get less funny looks in northern Europe. I wonder what your PhD program is? I'm pursuing a Master (in Digital Culture as I mentioned elsewhere here) at the moment. For my thesis I'm combining my love of IT and math and philosophy by researching open source (free software I mean) mathematical tools. Like Richard Stallman I see free software as an ethical issue, which is how I rope philosophy into it :) For my Bachelor's degree I wrote a paper on the philosophy of the infinitesimal calculus and intuitionism! So I always manage to draw together the various intellectual pieces that make up the puzzle of ... whatever the puzzle is. Right now what gets me very excited is intuitionistic type theory and the Curry-Howard correspondence because again this area of logic/epistemology can be looked at through comp-sci glasses, philosophical glasses and mathematical glasses. I realize all this is totally unrelated to my original question - apologies to all for that but it's not everyday one meets one's clone in cyberspace.
- thinkingeric 16y agoYou are fighting a losing battle. Drive and focus are either an integral part of who you are, or they aren't. Enjoy tinkering around, but you should adjust your expectations on the outcome. I know and work with lots of 'dabblers'. They are nice people, but don't have any understanding of what goes into mastering something. Same holds true for musical instruments. Lots of people 'dream' of playing, but have no clue how many thousands of times you have to repeat hand movements and listening until you rise above that and can work on the 'music'. Countless hours, constant trade-offs, and arguably abnormal mental faculties are required.
- ericn 16y agoI definitely have this problem, but it is not intractable. My advice: plan more. Don't just jump in. I know "ship" sounds like you should just jump in. But it doesn't. It means plan, execute, and ship. Planning means thinking about what the smallest, simplest, easiest path from where you are now to shipment is. Execute means doing it according to plan. Shipping just means put it out there whether you like it or not. It's so easy to tinker and get lost in a project, especially if you like it. That always gets me. But when I plan it, I have focus. And I usually see that it's not that much work to just pull it all together. Sure, lots of features get left out, but I'll get to them when I have time. But at least I ship something in the meantime. To toot my own horn a little: http://www.lispcast.com/software-engineering/how-to-write-software/ http://www.lispcast.com/software-engineering/how-to-write-so...
- rikshot 16y agoMy problem always is that I care way too much about the quality of my code, and that wastes way too much time for me to get anything done. My other problem is that I need to write quality code, otherwise there is no point for me doing anything in software. I'm retarded, I know.
- mlLK 16y agoIf you have a ton of ideas and they're all, for the most part, general, vague, novel, and abstract, practice prototyping. Make it really dirty, don't over-think it, and keep a closed-mind while in the beginning stages of a project; IOW, don't pre-optimize your project by recursively worrying about other edge cases, write for a single case and get something on the screen. Given your background, I'd scratch all these "big picture" or "overly ambitious" ideas and return to a domain you're more confident in, pick something (axiom, rule, theorem, etc.) specific, and see if you can express or simulate an example of the "thing" in action.
- john2x 16y agoI'm on the same boat as you. One minute I'm working on my website, the next minute I'm doing Processing/Python/etc. tutorials. And soon after I'm designing other stuff.