Ask HN: Had an original idea for a start-up...but
I have always admired the people I read about on HN talking about their start-ups and ventures into exciting projects and business. Last night I had a fantastic idea, something I really believe would be worth my time to give it a shot, but I am totally inexperienced. It might be childish but I would rather not go into detail about my idea, just know it combines some e-commerce with some social networking concepts. I want to code the site using PHP and a bit of Java-script, but my skills with these are not exactly up to the job yet.
So I ask you HN, will you point me to-wards what you believe to be the best of the best resources for: PHP, Java-script, web hosting, texts on starting your first project, and e-commerce
I would also welcome any and all input from you guys, don't feel like you have to play nice, I am very open to you poking holes and learning about how the "real world" actually works.
Thanks for reading this.
38 comments
[ 2.9 ms ] story [ 80.1 ms ] threadYou've got to be careful here. The vast majority of books on Javascript are terrible and will actually make you a worse programmer if you follow them. Better to stick with Javascript: The Definitive Guide by David Flanagan, Javascript: The Good Parts by Douglas Crockford, and maybe Pro Javascript Techniques by John Resig, especially if you decide to use jQuery.
Build a small website or two using PHP and js before you go for your major idea, that will probably save you a rewrite later on. PHP is a strange platform to develop for, the language has its shortcomings which makes it very easy to make a mess of things but with some discipline and a good plan on how you intend to separate your business logic from your presentation layer you should come out well.
Have a look at templating as well, no point in reinventing the wheel there, at least not until high performance becomes a real issue (using a templating engine adds some overhead).
good luck !
And about keeping the idea secret: Before you execute do some really good searching around to see if it isn't already out there, also not sharing your idea with other - not neccesarily the HN crowd but in general - is an excellent way to get into 'island mode'. Get early feedback that way you can tweak your idea while it is still just pencil sketches. Later on that gets a lot more expensive.
Later you can pick-up Javascript. There are loads of resources for this, but learn PHP first.
Startups: Read content by people like Peter Graham, Joel Spolsky, Rob Walling, Guy Kawasaki, Bob Walsh, Andy Brice - just to mention a few of my personal faves. Skim around, there's lots of great free content out there on software startups!
I use KohanaPHP - kohanaphp.com (dont go with Code Igniter, not any more)
I've heard CakePHP is pretty good too but never actually tried it (have a play and see).
A really good "dip into" resource once your familiar with PHP a bit is the documentation pages on www.php.net
Then do the same thing with Javascript. Look at some tutorials. Re-develop them. Experiment with cool animations, ajax requests, things like that.
The frameworks I recommend are Kohana (www.kohanaphp.com) and CodeIgniter(www.codeigniter.com) for PHP.
And like most other people, I LOVE jQuery. (www.jquery). Feel free to email me (its in my profile) if you have any questions. I'd be glad to help.
You definitely WILL be surprised at how fast you can pick these frameworks up.
I suggest you switch gears and spend your free-time coding :-).
Pick some technology you think you want (you can change your mind later) and start doing side projects in it. Do up your personal home page. Make a google maps mashup. Some stuff to familiarize yourself with the technology.
There have already been lots of good suggestions on which technologies to use. Try a couple different ones.
1) Learn the syntax/guts of a tool by going through a book, tutorial and trying trivial examples.
2) Work until I run into a problem. (How do I make merb-auth work with a flash uploader?)
3) Find examples/read a book/look at API docs until I figure it out. (Ohhh, you write a Rake middleware to handle it!)
4) Goto 2.
So reading materials are important, but I usually use them to solve real problems. There's no part of this process that doesn't involve writing code.
I always skim the rest looking for an answer, but the point is that I will almost always get the best results just by diving in head first.
In a few months of this you'll learn 100x what you could learn by trying to learn generically. It's frustrating and difficult, which is exactly why you're brain will be primed to learn what you really need to learn.
At some point you'll know so much that you'll look at all your "demo" code and think- "man, this is crufty. I know enough now to do it right." That's when you build your first product (using pylons or something awesome that you've discovered out of necessity) that will be used by hundreds of thousands of people and will bring you glory and riches.
Best of luck. Did you create the folder yet? Is your text editor open with the beginning and ending html tags yet? Is your browser open to a reference to those silly thing that you feel you should know but just can't remember yet? GET TO WORK! Oh, and you're grounded from RSS feeds for 1 month until you can prove you're learning. ;)
You must understand that you need to learn 2 separate things and you need to learn them well.
For javascript on the client you need nothing other than the browser you already have and the Rhino book:
http://www.amazon.com/JavaScript-Definitive-Guide-David-Flan...
Learn what's in this book! Go through all the exercises and tutorials. Build something. You can augment the book with tutorials you find on-line (ex. Webmonkey). Then you can View Source on any web page and understand what they did (and what they did wrong).
On the server you will have to find any common LAMP stack and load in onto your machine. The execises and tutorials for php, MySQL, and apache should be enough, although you can find more almost anywhere. Build something! Now that you already know javascript, you can include that in the pages you build as required.
Only after you have a solid understanding of the basics of these 2 technologies should you consider a framework. This can be tricky. If you adopt a framework too soon, you may run into a problem for which you don't understand enough about what's going on under the hood because you never learned it. If you adopt a framework too late, you'll be hand coding everything and will never get done.
Most importantly: you can only learn any of this by doing. Time consuming doing. Books and resources any necessary but hardly sufficient.
Do not fall into the trap of only learning at the surface and expecting to find someone else to do the coding. This does not work for a small software start-up. You must dig deep and learn well.
Thanks for finally posting. I hope you came to the right place. Get to work and keep us posted.
Get a buddy, don't do it alone, mate.
And how did you guys find partners on your first projects?
Learn PHP first. You don't have to become a guru at it, yet. Go through tutorials, buy a book or two, experiment. Try doing something small that you think you'd need to do for your project.
Once you're at least somewhat comfortable about using PHP, start looking into PHP web frameworks. There're MANY. Pick one. At this point it doesn't really matter which one it is. They all have similar concepts. If you learn one, it's much easier for you to learn the other ones afterwards.
You didn't say whether you'd be coding from scratch or using open source (or commercial) products/platforms/libraries. Typically these days, unless your idea is VERY unique, people tend to assemble rather than code. What that means that you pick products/platforms/libraries that do what they do best, then "glue" them together with your custom code. I'm not sure whether that applies to your idea, but I would assume so. If so, look around for products/platforms/libraries that provide most of what you want and are "battle tested", and extensible (if that's what you need). Play around with them, figure out how to use them, and if they don't work for you, take what works in them and re-implement the rest.
As for JavaScript...jQuery is VERY popular. There are others, but that does seem to be emerging as a defacto standard of sorts. Still, learn the basics of JavaScript first (if you don't know it already).
You also didn't mention what your background and expertise in databases is. You're gonna need some sort of database for this thing, almost certainly. If you don't know SQL, you need to learn that, too.
Once you actually start building your idea, be open minded (and smart about designing it) about replacing any part of the application stack, if after you become familiar with the parts you find out they really aren't that great for what you're trying to achieve.
As for database skills, one of my units for this half of the year is a database course based heavily on SQL, but I have already had a few experiences.
Thank you.
I usually Google: "PHP <whateverthehelliwant>" Works reasonably well.
If there are PHP user groups near you, that'd probably be another great resource to leverage.
I'm based in Melbourne, feel free to drop me a line.
I won't tell you what to do, because I'm still quite inexperienced and other advice in this thread will likely be far more valuable, but what I've done is purchased a cheap slice @ slicehost.com. I taught myself to work with Unix, setup apache/nginx, php, mysql, perl, python, ruby and so forth, fiddle with the internal settings. Then you start learning how these things interact with each other.
I then suggest installing something like Kohana, which is a fantastic PHP framework. By working inside a framework you are forced into good habits.
PHP, HTML and CSS should come first, in my opinion. Once you have the basics of these there, start implementing some fun Jquery and making a small site that's database-driven. All of a sudden you're using 5+ technologies, and from hereon out you'll learn things as you go.
*Edit: feel free to drop me a line if you want to chat some more! woodsier at gmail
Our startups actually work in some of the area that you described (haven't launched yet).
But, i agree with other comments, research around ...most of the time, it won't be unique. But, you'll learn more and more as you do more iteration of releases.
Think about the flow of the majority of users. Can you engineer it so that 80% can do what they need to do in the fewest clicks possible? Remove functionality. You can always add it later. What are the core experiences you want your users to have? How lean can you make the experience and still have it do what you want it to do?
Spend the next couple of months sketching. Leave your house. Go sip espresso at a cafe on the Rocks. Think about those people. Now go to Paramatta. Think about those people. (I'm assuming you're in Sydney.) Go be in places where different people from different walks of life are and be with them. Really figure out who your audience is. Get to know your audience really really well. Focus on that audience. You are their servant. Show them random sketches and get them to tell you what they think about the layouts you're sketching. See if you can engineer four or five different ways to flow the same experiences and functionality.
My favorite framework for social networks with ecommerce is Drupal with Ubercart. I've built several social networking sites with ecommerce using it. The user system is already built. It's very flexible and just a little PHP can get you a long way. What's more, there's a very strong community built up around it with forums and several IRC chatrooms. There are meetups in Sydney, Melbourne and Brisbane. There are many themes available that can be customized with just a little tweaking. There's going to be a learning curve no matter what framework you use, but Drupal has the advantage that the need for Drupal developers and themers is growing exponentially. (Recession? What recession?)
The way that Drupal adds functionality is by adding modules. There's a central repository on Drupal.org with thousands of modules already written. Chances are that much of the functionality you're looking for can be built using combined Drupal modules. Drupal has a system of hook functions for users, content and just about anything else you can think of. You can search for pieces of functionality using google and add the word Drupal in front of it. When you land on an article or forum post, pay attention to which version you've landed on. It's important.
The thing that will really prove Drupal's worth is the community. It's very supportive, has its own security team, and when you build a site, and there's a security update, your site will email you and let you know. (It'll let you know whenever there's an upgrade, too.) Drupal's a gratifying playground for developers. (While the framework isn't object oriented, it's good to be up on objects and arrays.)
While you're in the sketching phase, build a couple sites for nonprofits in your area. Not only will this teach you how to build sites in whatever framework you choose, it'll teach you about working with clients, and you'll learn a lot about why you don't want clients. (Nonprofits are notoriously disorganized. There's something about the profit motive that focuses people.)
Expect this kind of schedule:
3 months of sketching layouts and workflows. Meanwhile, become part of the community and build small sites for yourself and nonprofits. 3 months hacking at whatever technology you want to learn. 3 months starting and throwing away Drupal sites. Start over as many times as you need. Use version control. (GIT or SVN) 3 months building your site. 2 weeks to 1 month theming your site. 3 weeks testing with friends and family (closed beta) 3 weeks extending closed beta 1-2 months open beta Launch when you have the marketing in place.
Marketing can be done for free in several stages. Very very often the free marketing is much more effective than the paid marketing.
Look at busine...