Ask HN: How did you build your first real side project?

9 points by ironicaldiction ↗ HN
I'm looking for success stories on how you went from 0 to implemented, maintainable project to serve as fodder for my own project building.

In the past, I've read books on development (in C++, PHP, etc), but it doesn't seem to help all that much. I've started this time by using a book as a guide but diverging quickly to implement my own features. I'm a bit upset with my pace of development, as it has taken me about a week (with school) to roll my own auth/login/registration system in rails.

I feel scared to dive in as if I'll be in over my head, end up in dependency hell, or not be able to solve my own problems.

8 comments

[ 3.0 ms ] story [ 26.9 ms ] thread
Avoid analysis paralysis by just making the thing you want to make using the methods you already know.
I am currently building my first side project a android app which send users location based tweets alerts ( if user has subscribe for a particular location) and also let user location based tweets searching and following is mine schedule of day

8:00 AM - Get up from Bed and get ready for office 9:00 AM - 6:00 PM office timings 6:00 PM - 9:00 PM come back from office after dinner take rest a while 9:00 PM - 12:00 AM Side project work

Out of my hectic routine i only manage 3 hours + full Saturday & Sunday.

For you my suggestion would be to move to Ruby on Rails framework because it will save your time spent on auth/login/registration (donkey work) it only take take 5 minute on rails to configure Devise gem if you cannot move to Ruby on Rails move to Laravel ( php framework similar to rails) + you really need to stay motivated during 0 implementation till you get your production DONE Best of luck

Just start building. "The journey of a thousand miles begins with a single step" and all that. It sounds cliched, and maybe it is, but there's real truth there. Just start... write a line of code right now, even it is nothing more than

  public static void main( String[] args )
  {
    
    // TODO: implement the rest here...


    System.out.println( "done" );
  }
and just start adding to it. If you get to a point where you don't know how to solve a particular problem, stop, google, read, experiment, fail, learn, retry, until you figure it out. Move on to the next step.

Yes, progress will be slow at the beginning. As you alluded to, doing things like auth/login quickly get complicated, especially if you are dealing with things like OAuth, OpenID, etc, and you have to learn one 3rd party library after another... which probably won't be well documented, and which will require you to read source code, use StackOverflow, use trial-and-error, etc. That's OK, that's just the way this stuff goes sometimes.

Over time, it does get easier in a sense, like most things. You gain intuition for solving certain problems, rooted in your experience. And the more you understand about how things work "in the large" the better you get at solving certain kinds of problems. Unfortunately, you usually also wind up taking on progressively more challenging problems, so you always feel like you're struggling just the same, even if you are actually moving much faster.

When I first started mountain biking, an experienced rider told me "it never gets any easier, you just go faster". In many ways, programming is the same way. But, like mountain biking, it has the potential to be a total blast. And unlike MTB (for the most part) you can actually make money doing this.

If you're using rails, explore its libraries. Devise is an excellent gem for user auth/login/registration. On Rails, you should move fast to build MVP, and test the audience.
I was in Costa Rica, and conflicted between building the SaaS and...well, surfing, mostly.

I built the app. Took most of my spare time for about a month.

I have fond memories of Costa Rica, that month included.

Start with a really good spec. I started ProjectPulse.io by clearly defining the problem, and what the solution would look like. Then I dove into defining the needs of all the MVP features. From there, it wasn't hard for me to make wireframes and get awesome designs from a designer. Then, I also made a list of features I'm going to want to add, but not for the MVP, so they felt like they were on paper, but not the same as MVP features.

Once you have a list down of things that need to be built because you know the sum of those things is an MVP, put your head down and work until it's done. Don't question anything until you have an MVP. Stop second guessing the product or the market and just build it.

I'm leaving out the whole "research and learn from potential users" - that comes first, but that's not what we're talking about here.

TL;DR: Write a detailed spec for an MVP, then put your head down in code until you have an MVP.

Just find a problem you'd like to solve and start working on it. My problem is that I keep thinking of new features I want to add along the way. Right when I'm ready to release something I always feel like I really need to add just this one more feature for it to be good enough. The project I'm on now was supposed to take a month, I'm in my 6th month now. But I think I'm almost done haha.....

For my next projects I'm going to try to work on some smaller things I can hopefully finish in a weekend. I feel better about myself when I complete things, which motivates me to keep working/learning new things.

Good luck!