Eric Raymond clearly states that being a hacker is all about 'creating things'. You might consider my question naive, but how do you start creating things? We all see problems around us, see better solutions for existing technology, or come with our own ideas for the next 'killer app'. But how do you start working on your app or how do you keep working on it? What keeps you motivated throughout the whole development? What do you do when you run into dead ends, challenges beyond your hacking skills? What makes you believe that something a 20 year old, one man army will create will be better than experienced programmers working in multi million dollar corporations? I know it's largely a mind-set question, but I also want to know how you conquer problems beyond your skills? How do you hack your learning and creating process?<p>Thanks in advance.
Do what this guy did: <a href="http://news.ycombinator.com/item?id=438646" rel="nofollow">http://news.ycombinator.com/item?id=438646</a><p>I'm always most successful at getting something done when I: choose the smallest useful thing I can think of, choose something even smaller instead (which can be expanded later), develop a schedule for getting it done (e.g. 1 hour per day), keep a calendar showing whether or not I'm working as hard as I said I would (no slacking!) and timebox the whole thing (lack of time is the greatest motivator in the universe).<p><i>Update</i>: for fun, I actually just tested this. I tried to write a language interpreter in Arc that could execute the following function:<p><pre><code> (def fib (n)
(nth n (sequence s 0 1 (+ s.-1 s.-2))))
</code></pre>
which is written in a hypothetical Arc-like language I just invented. I gave myself 30 minutes. I didn't get it done, but I did pretty well. The language had a namespace, functions, macros and all the basic operators I needed. Unfortunately, I didn't quite finish the eval function. Another 10 minutes and I would have had something I could run (although I don't know how long it would have taken to fix all the bugs).
There's all sorts of roadblocks to making stuff, but I'll just pick one.<p>A lot of times, you think that the first thing you make will be the right one, the brilliant, the innovative, or the perfect one, so you want to spend time getting it right.<p>To those that build things I admire, I find that they spent lots of time building things that have already been built, mostly because they wanted to have their own. Through the process, they learned lots of stuff they needed for their opus later on.<p>Built behind every masterpiece are thousands of throwaway sketches you never see.<p>And oh. From the mouth of Robert Morris, keep your system simple enough, so it fits in your head.
<i>"... one man army ... will be better than ... multi million dollar corporations?"</i><p>This one is easy. No bullshit bureaucracy that sucks the soul out of you.
First off drop the "next 'killer app'" idea. I have as of yet never been killed by a computer application. It is marketing speak for over promise under deliver. Look at your OSS heros how many of them ever had a "killer app". As far as problems beyond your skills, how do you think you get better skills? Playing it safe isn't the answer.