
Ask HN: Had an original idea for a start-up...but - netconnect
Hi, long time reader (I always save it to last when I'm reading through all my RSS feeds because it's my favourite), but first time poster. I am an eighteen year old Australian guy halfway through my first year of university, I am studying a bachelor of IT and Systems with a major in security (thinking of changing that, will see what happens). Because of my fairly poor background and current tight budget (university -&#62; eep.) I have become a very resourceful person with allot of time on my hands (can't afford to go out now much can I). Usually I spend it reading all sorts of ebooks and papers and trying to learn new skills.<p>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.<p>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<p>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.<p>Thanks for reading this.
======
jnovek
"Usually I spend it reading all sorts of ebooks and papers and trying to learn
new skills."

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.

~~~
tsally
I made this mistake for about a year. Ordered/downloaded tons of books, read
published papers, etc. I learned a fair bit, but honestly you don't really
learn until you start doing. Your return per hour spent coding is on average
far higher than your return from books and papers. You shouldn't stop reading,
it just has to be limited.

~~~
jnovek
My learning process usually works like this:

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.

~~~
MicahWedemeyer
Glad to see I'm not the only one that thinks like this. I sometimes feel like
a fraud because I haven't read the latest-greatest book on X. Sure, I use X
every day, but I don't understand every last teeny aspect about it.

------
jacquesm
PHP is pretty easy to get in to, I asked about js frameworks here a while ago
and pretty much unanimously got jquery back so that's what I'm using myself
now and so far it has been very easy to use and does what I want it to.

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.

------
rickharrison
I think the best way to learn this is to get into a framework and start
hacking with it. Go through the tutorials and re-develop what was done in
them. Then develop a small appliaction just for you. Maybe it could catalogue
movies if your a collector, or document your exercises etc. Just something
that would be useful and a learning experience.

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.

~~~
neovive
I would also recommend using KohanaPHP. It will take a little time to learn,
but will be well worth it when you start developing.

------
woodsier
I'm similar to you. Australian (Sydney), 21, Uni student, tight budget.
E-books are great, but as others have said, just start fiddling.

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

------
nailer
I'd try Python. There's less syntax to type, and examples are more consistent
due to the general flexibility of th language. Django and the Python Facebook
module would be a good start.

~~~
nailer
Replying to myself: I meant to say general inflexibility. I.e., one right way
to do it, rather than many.

------
pmichaud
Everyone in the thread so far has ignored a really important point: a business
is not a piece of software. Do you want to write a piece of software, or do
you want to start a business? They are two different skill sets.

------
thomanil
Javascript: Start with Douglas Crockfords "Javascript: The Good Parts".
Excellent, terse primer on safe Javascript development.

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!

~~~
djahng
You mean Paul Graham?

------
gorbachev
If you want to do it right, I think you should learn a couple of things.

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.

~~~
netconnect
I am hoping to be able to pull together code for this project, but a fair part
of it has no similar code that I can find allready around. Do you know any
resources/examples/guides for "gluing" other pieces of code together properly?

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.

~~~
gorbachev
Unfortunately I'm not that familiar with PHP based ones, so I can't point you
to specific resources.

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.

------
netconnect
Wow guys, this is why I love this community. I'm taking note of all of this,
going to print it out and put it on my wall when the comment activity stops so
I can always just look at it for that little bit of inspiration to keep going.

------
edw519
"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."

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...](http://www.amazon.com/JavaScript-Definitive-Guide-David-
Flanagan/dp/0596101996/ref=sr_1_1?ie=UTF8&s=books&qid=1248956496&sr=8-1)

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.

------
hwijaya
I am in Sydney. Feel free to drop me a line.

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.

------
mahmud
The best resource is a PARTNER.

Get a buddy, don't do it alone, mate.

~~~
netconnect
Should I develop my skills first? Maybe write up a bit of a plan to share with
possible partners?

And how did you guys find partners on your first projects?

------
djahng
I'd just search around for tutorials and stuff on what you're looking at (PHP,
JavaScript, etc). You really only need a basic understanding to get started.
And that's what you really need to do...just get started. Ultimately you don't
become an expert by reading books, you become an expert by doing. You'd be
amazed at how much you learn by figuring out why something's not working the
way thought it should.

------
nedwin
My advice is to meet as many like minded people as possible. Face-to-face
bandwidth is amazing :)

I'm based in Melbourne, feel free to drop me a line.

------
lee
First, no code. Sketch. Sketch using a magic marker on printer paper where the
other side has already been printed. Make these sketches quick and not-pretty.
Do many. You want to be able to throw these out without hesitation. Using
software to build pretty wireframes will invest you in how something looks.
Don't do it. Wireframe software is for presentations.

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 business partnerships. Who also serves the same audience but isn't a
competitor? For example, if you want to reach kids, you can partner with one
of those companies that takes the school pictures and has products like mugs
or t-shirts with the kid's picture printed on it. You can add a membership to
your site to their product catalog for no money down. See who is serving the
same market and who has already done their marketing homework and partner with
them for a percentage.

Lastly, remember that this is a marathon and not a sprint. Do not burn
yourself out. It's important. Once you have the site up and running, it's only
the beginning. I haven't mentioned hosting or other important details, but the
information is out there. If you can get a partner, life will be easier and
you can provide moral support for each other.

------
reg4c
Your university library might have a lot of books on these. Get a couple for
PHP and JS and read them through simultaneously. That way, even if one book
misses something you get it from the other one and the best part is, it does
not cost anything.

~~~
RyanMcGreal
_Your university library might have a lot of books on these._

You'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.

------
BeSublime
I was in the same boat about 2 years ago, so I'd like to share my story with
you FWIW... but it'll have to be after work! Just a heads up, my two cents are
on their way!

~~~
netconnect
I really look forward to it!

------
ErrantX
learn some low level php to get you familiar with it - then switch straight
into a framework.

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

------
iterationx
install xampp or lampp and start coding, you might want to do jobeet from
<http://www.symfony-project.org/jobeet/1_2/Doctrine/en/>

------
pclark
<http://binarycake.com/>

~~~
apgwoz
Binary Cake is probably a viable resource for the OP, so I'm unsure as to why
you were modded down. Can anyone comment on the quality of these casts? They'd
be good to point people at in the future if they are worth the money,
especially if the founders are news.yc people :)

~~~
pclark
<http://news.ycombinator.com/item?id=732133>

