
Where does a wannabe hacker begin? - Perry
Prior to coming across Paul's essays I had relegated myself to never being able to have a start up. I'm an Economics major in college right now, and I suppose I assumed a tech start up was for the comp sci guys.<p>Reading Paul's essays along with some other stuff -- like the fact that two of the founders of Auctomatic didn't know how to hack prior to starting it -- has been pretty empowering. In one of Paul's essays he mentioned that someone who's smart could probably pick up hacking within about 6 months to a year, which was definitely much shorter than I imagined.<p>All of it has really piqued my curiosity. I have some free time over the summer and I thought there's probably no better time to learn something new, but I can't even figure out where to begin!<p>So I come to you, the hackers of YC News! If you were completely new to programming and you hoped to some day try your hand at a web start up, what route would you take? What language would you learn? How would you learn it? If there's anything else you think is noteworthy, I'd be extremely grateful if you could share it!
======
mechanical_fish
Your first challenge: take a generic PC (or a Mac, for that matter). Install
Linux, Apache, MySQL, and PHP. Get Wordpress running and put up a simple blog.
Make a post or two. Smile.

Bonus points for using Drupal instead of Wordpress.

You might prefer to do this exercise using a webhost like Slicehost. They'll
hand you a VPS for $20 a month. The advantage here is that, when you're done,
you'll have a public website instead of just a local PC that nobody can visit.

Read up on basic security and set up a firewall on your web server. Read up on
DNS and get that working. Get a mail provider, like gmail, and wire up your
new domain's email.

This exercise is actually really easy, nowadays. But it's a start. It will
teach you a bunch of fundamentals, like how to use Google to solve all your
problems ;). You will learn how much you enjoy tinkering with web
technologies. And, for the purposes of many, many profitable online
businesses, you'll be almost done. :)

\----

When it comes to actually learning programming: Try Ruby or Python. Although I
still never find time to use it, I will once again plug Hackety Hack at
hacketyhack.net. Consider learning Rails by using Heroku: <http://heroku.com/>
.

If you want to impress folks around here with your earnestness, read SICP.
Just Google "SICP". You can even find free online lectures from the MIT class
that SICP is for. If you read it, you'll know Lisp, and you'll be well
launched on your career of bluffing your way through computer science. As an
economist, you might be enough of a math guy that you'll fall in love with
Lisp. It does happen.

Oh, and two key words: emacs. git. Buy and read _Learning emacs_ ; it's worth
it. And learn about version control -- I do recommend git, but it's still kind
of confusing to learn, despite the best efforts of the Peepcode screencast guy
and Randal Schwartz. You may find better intro material for Subversion: google
for "svn book".

~~~
illicium
Two more keywords: vim. mercurial.

;)

~~~
James_Johnson
Well, if he's going to learn to be a hacker he might as well learn about all
of the age-old flamewars too.

------
ericb
I'm self-taught. My recipe:

1 - Find something you _want_ to build

2 - Learn everything you need along the way

3 - ???? <!-- Lots of hard work -->

4 - Profit

I built a pop-up blocker and privacy suite this way (as a single founder) and
earned more than I was making at my day job, so I eventually quit.

I see a lot of "things you should know" in other posts, but in my experience,
they won't be interesting until you need them. You'll have to go step-by-step,
though. I'd probably start with HTML and work my way out if you're interested
in web apps.

~~~
ericb
Some tips:

To see how something works, break it and unbreak it in many different ways.
Sometimes the part you _think_ does something isn't it. You don't know code
well until you know how it acts when broken. Seeing what error messages mean
will help you recognize them in your own code. Hotkeys are good. Ctrl-Z (undo)
and Ctrl-Y (redo) are great for breaking/unbreaking code. Version control will
be useful at some point.

Change one thing at a time when fixing bugs, or you'll never know what fixed
it. Afterwards, explain what happened.

Do not make changes without a reason--that's a short path to cargo-culting.
Read the doc, then use the scientific method--hypothesize something, then
test. Rinse, lather, repeat. Otherwise, you're just guessing and will waste
infinite time, like a Shakespeare-typing monkey.

When borrowing code, understand it, or it will cost you in the long run.
Stripping code to the bare minimum or adapting it is a good way to know what
parts do what, even if you just use the original.

Remove lines you "think" you need in your solutions and see if they still
work. If a line of code isn't necessary, but is not hurting anything, remove
it anyway.

I have no idea how people coded before Google, and it scares the crap out of
me. Paste in your errors with variable names removed. Invest time to become a
Google search pro.

If you haven't tested it, it's best to consider it broken.

------
uruzseven
I think putting together a startup and becoming a hacker are completely
different things.

A hacker is someone who likes to play with the world around them. I don't even
know if it's possible to become a hacker. If you've never been inclined to
take apart your VCR or walkman then I'm not sure if hacking is for you.

If you just want to start something up, learn PHP and MySQL. It's easy and can
run on just about any hosting account. Actually depending on what you're
looking to do, a CMS like Drupal could work if your startup was just a news
and review site or something.

~~~
webframp
i agree. being a hacker is more of an attitude toward the world than any one
set of skills. skills can be learned easily, adjusting your entire outlook on
life takes alot more work.

------
cousin_it
If I were to lose all programming knowledge tomorrow, I'd send the following
to my future self:

0) If you feel confused at any step, use Google.

1) Make an HTML page with Hello World.

2) Add an image to the page.

3) Position the image on the page by adding a CSS style to it.

4) Add a JavaScript script to the page that creates another image element,
with another src URL, adds it to the page, and positions it.

5) Learn the principle behind the URLs of tiles at OpenStreetMap
(<http://openstreetmap.org>) by using "View Image Source" in the browser.
Hint: the numbers are zoomlevel/x/y.

6) Add a script in your page that creates some new image elements with OSM
tiles, sitting seamlessly next to each other.

7) Learn about event handlers in JavaScript
(onmousedown/onmousemove/onmouseup), and try to make the resulting map
draggable. In Firefox first, then IE.

Congratulations, you're now a passably good client-side webdev.

------
hello_moto
Perry, how do you know that the two of the founders actually do lots of
programming in Auctomatic?

They could've helped the team in other areas such as:

1) Strategy

2) Marketing (newsletter, beta invitation, etc)

3) UI design (but not UI coding)

4) Sys/Net/DB-admin

5) Legal issue

and let the Collison brothers do the actual programming without having to
worry of these stuffs. The Collisons are one of the kind. Prodigy is the right
word to describe them both.

If you look at their About page: <http://auctomatic.com/about> , there are 2
more people beside the 4. At least one of the two is of technical type.

Summer is 4 months long, I'm sure you can learn something. But I don't think
you'll be anywhere near the people in this website in terms of technical
ability.

The more you ask technical questions from News YC, the more you "dig" yourself
deeper in the technical side of the world and the less time you will focus on
your startup.

But don't be discourage, anyone can start anything at this day and age.

You can:

1) Learn PHP/MySQL/JavaScript/HTML/CSS and ignore advices

2) Learn Back-end (PHP/MySQL/AJAX) and outsource front-end

3) Outsource everything to India/China/Russia/East Europe

There are the News YCombinator kind of startups.

There are the Google, Microsoft, Amazon, Yahoo! kind of startups.

There are also the kind of iContact, "Ben Casanova", PlentyOfFish kind of
startups.

I wish you the best on whatever the path you chose.

------
Tichy
I am usually a Java developer, with years of experience, so my outlook might
be different. But I just started a Ruby On Rails project, and my impression is
that "Programming Ruby" and "Agile Web Development With Rails" should be
sufficient to get you going (OK, and maybe some HTML tutorial somewhere, don't
know which ones are good in english).

I think "Agile Web Development With Rails" has been dissed by the "rails
community", but my impression is good. It shows exactly the examples you'll
need (like how to create a login form).

------
laktek
Good read would be "How to become a Hacker" -
<http://catb.org/~esr/faqs/hacker-howto.html>

Anyway since most of the startups are built using Open Source software,
beginning to hacking with them would take you to the edge.

~~~
paul_reiners
Eric Raymond is an excellent writer and you can't go wrong reading this
article.

Also, learn how to do mathematical proofs. I don't know what the best way to
do this is. I learned from 10th-grade Euclidean geometry class. Maybe you can
pick up a good book on Euclidean geometry that has a lot of exercises in it.

Finally, pick up a good book on Lisp that has a lot of exercises in it and do
all the exercises in it. Winston and Horn is good. "The Little Lisper" is also
good.

------
astine
A fellow econ major?

I'll echo most of the advice already given here, but because your an econ
major, I'll add something else just for fun: Try to do a research project or
paper or whatever on some trend in the IT industry, like the history of the OS
market or even the respective market territories of different programming
languages. This won't teach you to hack, but it may help you set priorities as
you learn, and it will help you if you attempt a startup.

------
pauek
If you want to get a taste of the whole thing:

1\. Install Ubuntu.

2\. Start using emacs (maybe with "Learning Emacs", O'Reilly, as
mechanical_fish suggests).

3\. Learn some Python (maybe with "Learning Python", O'Reilly too).

4\. Use webpy (<http://webpy.org>) to develop a simple web application.

5\. Learn how to program SQLite (and thus basic SQL) using Python and make
your web application use a database.

6\. Make your application public (<http://vpslink.com> might be enough,
$7.95/month).

The 4th and 5th are "minimalistic" (for a web framework and a DB engine),
least "complication", because the goal should be (I think) completing a simple
project in a few months. From this you might get a glimpse of "the forest", or
"connect the dots" (of web programming).

After that, if you want more, you can now go learn all of what others have
very appropriately suggested: SICP, some system administration, PostgreSQL,
Ruby (+ on Rails), git (or Bazaar), Data Structures, Algorithms, Test Driven
Development, PHP, etc.

------
goodgoblin
The best way to do this, is whatever idea you have, try and build it using
Ruby on Rails. You may make some mistakes, but the best thing about Rails is
that many of the architectural decisions are made for you. You only really
need to worry about the syntax once you get the hang of it.

Lots of the other advice on here, about learning C, and SICP, and emacs and CS
fundamentals is nice but not necessary. Learning it will be very hard for an
absolute newbie to get anything out of. It could demoralize you.

Thats why I'd advise to actually start building whatever it is you have a
startup idea for. It will give you traction. You will definately struggle, but
at least you'll have something concrete to show for your efforts. And I'd use
Rails. If you run into problems you can always go the rubyonrails IRC channel
or even ruby-lang. You'll get the hang of it. If you are going to take this
route I'd recommend the Rails book by DHH.

------
rokhayakebe
Perry, i decided to learn how to program about a week ago. tuesday night i
started with HTML (dont laugh). i think it is important to know those basics
before you go on and learn server side scripting. i tried hackety hack before
and php, but the problem is you want instant gratification so you wont stop.
thursday night i stayed up an extra 3 hours past my normal time and created a
nice html document with my pictures linked from tumblr, added an email form,
comment form and submit buttons. off course the form did not submit anything
to the server, but now i am hoocked, and instead of pinging developers and
killing them with "what's the status" now i know within a few months i will be
able to start creating simple web apps. so start small, then once you got
html, xhtml and css locked, move to server side scripting.

------
csmajorfive
Once you start coding, start sitting in on some CS classes at your college to
get some fundamentals down.

Data Structures (bonus points if it's in a functional language), Algorithms,
Systems, and Architecture are all a must.

~~~
Perry
Great advice, thanks. I'll have to see what my school's policy is on that.

~~~
vegashacker
Or just do it, and ask for forgiveness later, as necessary. Your chance of
being "caught" in a medium-to-large lecture is pretty low.

~~~
Shooter
Most school charge roughly 50% of regular tuition rates to audit a course
(attend lectures without earning credits.) They will usually allow you to
complete all the coursework and get feedback as part of the auditing
arrangement. Getting caught attending lectures without being enrolled can have
implications beyond just being kicked out...you're essentially "stealing" an
education. They can charge you with theft or criminal trespass. As someone who
has a criminal record for trespassing, I'd advise you to just enroll in any
course you really want to attend ;-)

~~~
vegashacker
Interesting. I guess I shouldn't have been so flippant.

------
rpdillon
Learn a free Unix - like Linux or BSD. Really. A huge part of hacking IMHO is
taking an open system that is sometimes quite complex (like an OS), shedding
your fear of breaking things, and tinkering. When things do break, you will
learn so much from fixing them. =) It is a lot of fun, free, and will get your
feet wet with some of the other stuff that mechanical_fish mentioned.

I also recommend Emacs. I haven't worked with git just yet, but I use
Mercurial all the time (and I will eventually get around to using git). Avoid
CVS like the plague.

------
bratislava
At the same time you pick up a C++ book, go to <http://www.topcoder.com/tc>
and start up the arena (after reading the instructions, of course). Then
practice, both the language and some problems, for about 2-3 weeks. Once you
are able to solve the easiest (but not always trivial) problems regularly, you
will be more than ready to easily pick up a markup language like HTML or a
scripting language like Python. This will help you to be more comfortable with
programming in general and to get some problem solving skills. These skills
are useful when you develop software because it increases your productivity
and helps you to write better code. This is not the only place you can get
this kind of practice from, but everything is already set up so that you can
go ahead and get started. I believe things will be easier afterwards if you
get these skills first. It’s also a good idea to be able to think recursively,
but you can work on this later on, and when you do you can try SICP, which is
a very good resource. I hope this helps.

------
apathy
Start here:

<http://mitpress.mit.edu/sicp/>

No, seriously. If you've never programmed before, this will teach you far more
than you'll need, initially, but later on you'll realize that you picked up a
lot of really good habits and never needed to unlearn the bad ones.

Try it. If you like it, you won't look back. If not, perhaps a career in
finance isn't such a bad idea anyways.

~~~
gcv
If the OP is interested in learning to hack, in the sense of making computers
do great things, then this is the best resource suggested on this thread. In
addition, MIT published videos of the lectures by the authors of this book
([http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-
lec...](http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/)).
They are spectacular.

------
xenoterracide
<http://catb.org/~esr/faqs/hacker-howto.html>

If you want to be more of an Admin I recently wrote this:

to start do 4 os installs, centos, debian, gentoo, and freebsd in that order.
install apache, mysql, bind and postfix on each. set up joomla, drupal, and
word press on each. make sure all 4 systems will come up with all services
working on reboot. get a free subdomain from someone like dtdns.com. set bind
up to use it. make sure that you can view the web pages and send emails to the
machine from an external machine, doesn't have to be at a remote location, and
that it continues to work on reboot (without your intervention). drupal, word
press, and joomla must be working at the same time. by the time you are done
you will have an ok understanding of the the various _nix's and_ nix itself,
and the tasks common for a sys admin. if you need help you can probably ask
for it on the distributions forum/mailing list or the softwares forum/mailing
list.

it's a good start even if you want to be a programmer.

------
rcoder
If you're hoping to get into web development, then you'll need to learn quite
a lot of pieces of technology. For a professional, the minimum knowledge base
is TCP/IP networking, HTTP, HTML, Javascript, the DOM, SQL, a bit of UNIX
shell, and at least one general-purpose programming language like Python,
Ruby, or PHP.

As a hobbyist, you can start smaller than that, of course. Learning HTML and a
bit of Javascript is a great start -- if you can build simple client-side
dynamic apps, moving into server-side scripting is a lot easier. Configuring a
basic Linux server to host web applications (even if it's just a virtual
machine, or a spare PC under your desk) is a big step forward, too.

As an economist who _may_ want to do some web development, though, you might
gain as much from learning a general-purpose language like Python as you will
from web development. Being able to toss out a quick script to do your
simulations or mine an existing data set may prove substantially more valuable
to you than an in-depth understanding of PHP and Apache configuration.

------
maxwell
Regularly read Wikipedia articles on computer science, programming, logic, and
perhaps mathematics and/or linguistics topics. Get Firebug and inspect the
code of sites you like. Start building something with HTML, CSS, and
JavaScript. Constantly improve what you're working on, and don't be afraid to
ditch what you've got and start something new.

Focus on JavaScript. Watch the SICP lectures, read Doug Crockford, Raganwald,
John Resig, and pg's Arc source. Learn the ins and outs of emacs, vim,
TextMate, or Eclipse. Play with Lisp, Python, Ruby, and Io and read others'
code in those languages, then apply what you like to your style of writing
JavaScript. Try out the major JS frameworks (jQuery, Prototype, MochiKit) and
settle on one of them. Then rig up a server-side JavaScript solution (Jaxer,
Helma). Pick an interesting domain and learn about it until you find an
overlooked problem you can solve, then capitalize on it.

------
rmk
The 'C' Programming Language.

if you do not like C programming,

"How to Think Like a Computer Scientist: Learning with Python" to learn
python.

available for free on the net

~~~
mdakin
C is not the path of least resistance for the OP. He is neither trying to make
a career out of software engineering nor hack on a UNIX kernel.

He wants to be at the fringe of business and software and these days if that's
where you want to be you can "get by" knowing only a high-level language
really well and hiring/partnering with more specialized engineering talent as
needed if the business-side requires it.

Mastering the high-level language is arguably as difficult as mastering C but
the leverage you get from the high-level language is huge relative to C for
the sort of business/software problems that will be of interest to him.

~~~
rmk
Yes, I am in complete agreement with you. Which is why I suggested C.

You only realise the huge productivity jump when you first program a small
application in C and then do the same thing in Python / <your favourite
language here>.

Hence the C recommendation.

~~~
mdakin
We can't possibly be in complete agreement if we are drawing opposite
conclusions.

I think the difference might be that I assume the OP is heavily concerned with
_efficiency_.

Given his background and goals it is not efficient [1] for the OP to learn C
when in the same amount of time he could learn a high level language and then
directly accomplish his goals, and never _need_ to learn another language for
the rest of his life.

[1] achieving maximum productivity with minimum wasted effort or expense
(O.A.D.)

~~~
rmk
My personal experience has been that I am much more productive when
programming in python. More gets done easily, and the code is very readable.

However, I realised this only after I had spent order of magnitude more time
on doing the same thing in C, and burnt myself plenty of times during the
process. My point is that you find out how productive you can be in one
language when you have used another language to do the same thing - then a
comparison becomes somewhat meaningful. I had _read_ a lot about how python
makes you more productive, but I _experienced_ it only when I started coding
in python to achieve tasks that I used to code in C earlier.

The same goes for shell scripts that make my life easier. Shell scripting
became a hellish experience when I was using a solaris machine for some time -
but by writing a python script instead of a shell script, I could be pretty
sure that it would run in linux / solaris / any other *nix.

So, I still believe that we are essentially in agreement regarding
productivity. Efficiency is another matter though - inspite of psyco etc,
python tends to be slower in some tasks and it might be well worth the time to
code them in C.

~~~
mdakin
I think we're speaking different languages (despite the fact that it appears
we're both speaking English). :)

I know you can reduce development time using a high level language to solve
problems like this. So do you. And now so does he because we told him. No need
to have him waste time proving it for himself.

And to be 100% clear when I said "efficient" I mean efficient as relative to
life/goal achievement. I did not mean efficient as relative to CPU time or
memory usage. One of my assumptions is that if this guy implements something
successful in Python he'll be able to hire or partner with someone who has a
real engineering background and can make "it" go fast using every trick in the
book.

------
GavinB
Choose something that you want to make, even if it's just a clone of an
existing site or service. Then figure out what database, language, CMS etc you
need and start hacking it together. You'll be much more motivated with a goal
in mind than just trying to learn a language from a book.

------
merrick33
You can do it if you work hard. I did econ / accounting @ UCLA and took a
couple of C++ courses that was enough to get me hungry for building a web app
rather than a desktop app.

I am self taught and was stubborn enough to learn to setup a load balanced web
cluster in linux, a postfix mail server, and write the code for my web app.

The secret, like others have said, is to build out an idea you have. Once you
finished that project you will most likely have dozens of ideas you want to
work on. Right around that time read The Dip by Seth Godin so you learn to
know when to hold em and when to fold em.

------
jimbokun
Given your econ major, surely there must be some interesting problems you have
come across that you would like to attack by writing some programs?

Python is a great language to dive into. Easy to learn because it
intentionally left out most of the boiler-plate fluff from other languages and
lets you just express your solution in a direct, concise fashion.

If you get to the point where you need to crunch large number sets, check out
scipy and numpy (just google). Takes a slight effort to set up initially, but
then allows you to quickly process lots of numbers. Linear algebra,
optimization, etc.

------
thingsilearned
A lot of these descriptions are very specific. It doesn't matter what kind of
computer you have or what tools you use. You just need a computer, a text
editor, and to choose a language to start in. I highly recommend Python. Its a
really simple one to learn and is great for web dev.

Download it here: <http://code.enthought.com/download.shtml>

And here's a nice beginner's guide:
<http://wiki.python.org/moin/BeginnersGuide>

------
LostInTheWoods
Assuming knowledge of basic computing, I would say the progression for a
beginner is as follows: html, css, javascript, backend language of your choice
(php,asp,etc.), databases/SQL. You can stop here if all you want to do is
build a website, just keep in mind that web programming is only one branch on
the massive tree of computer programming.

It should also be noted that building a website is also an exercise in graphic
design, writing, and user interaction design. Anyone of those other facets can
be equally difficult to learn and master.

~~~
webframp
Not sure I agree with that order. I personally know people who have learned
SQL before php or other backend language. You make a good point about the
other elements in website building. It can be invaluable to have a good
designer/user interface expert type on your team. In my experience _most_
hacker types are weaker in those areas, myself included.

------
blender
Not everyone needs to code in a startup. It's good to have someone that is
more inclined to bizdev than hacking.

You should however be familiar with the hacker's arsenal of tools like Trac,
Subversion, Eclipse, etc.

The first order of business in a startup is to build something that people
want (after PG). More and more that something should solve some real business
problem - not just another me-too social network .

I'd think your economics background could be put to good use in today's
climate. Do feel that you have to be a coder - but find someone that can.
You'll have a good team.

Cheers

~~~
blender
s/Do/Don't

------
whalliburton
If I had a fledgling hacker under my wing I would show him how I develop,
which, for me, is the laziest and most productive way I have yet found.

gentoo, sbcl, emacs, slime, weblocks, ec2, git.

YMMV.

------
tzury
I would suggest you to start at the client side. this is where all server
technologies are willing to end up at. Therefore start in this order: 1)
(X)Html. 2) CSS. 3) JavaScript + toolkit library such as jQuery or Prototype.
4) Python. 5)SQL (and SQLite).

In between read about theories and patterns in software design (Wikipedia is a
great resource).

And do not ever be shy to ask whatever you do not understand.

good luck.

------
ddelony
I'm in the same boat. I'm a communication major, but I discovered Unix via Mac
OS X, and I was hooked. Like a lot of geeks, however, I programmed in BASIC as
a kid.

First, I'd start off with an open source Unix, probably Ubuntu if you don't
have one installed already. Just learning to work the shell will give you some
useful programming experience. Then I would start learning Python.

------
lani
<http://www.textfiles.com/hacking/statemind.txt> I feel this hits the
definition. There are differences at levels between 'hacker' and 'programmer'
and 'open source developer', but the universe is visible in a grain of sand.
Forget not to read dabblers and blowhards at www. idlewords.com

------
antirez
From your passions, try to do what you like at your best. The rest will follow
automagically :)

------
tiggyboo
If your goal is to become a surgeon, don't start by learning to cast your own
surgical instruments. Same principle applies here - hang with the econ, then
hire a guy with stains all over his shirt when you're ready.

~~~
apathy
Not a bad idea by any stretch, but it helps to know what you're looking for
when you do hire someone.

Plus, if you just have a little itch to scratch, it can be a lot less work to
implement the damn thing yourself, regardless of whether it's elegant or
scalable or perfect. Microsoft's original product was built on your model
(Gates farmed out the compiler IIRC) but he certainly had a good idea of what
qualities he was looking for in a programmer.

------
bprater
I recommend folks jump in with PHP. Rename a webpage .php and you are rocking-
and-rolling. Start with a project idea, buy a few books and start hacking!

------
eusman
why lose time? you are not going to learn programming in 1 day anyways,
neither in 1 month...except if thats the only thing you are doing...

it's better that you find an idea in your knowledge domain (economics that
is), find someone to do the hacking for you, (learn a few programming stuff
while starting up) and contribute to the company your knowledge...

------
yan
<http://norvig.com/21-days.html>

~~~
James_Johnson
I think that Norvig's point in this article is that to really learn to use a
language, along with all of its specific idioms and everything (so that you're
not just writing "Java in Python"), one needs to study and use it for far
longer than the learn-quick books would suggest.

I think you're misunderstanding what the OP is looking to do.

------
initself
Perl.

------
shiranaihito
Hello.

A lot of people here recommended emacs, but it might not be the most suitable
tool for you personally, or not the most suitable tool for a given task.

For example, if you want to code in Java, the best tool for that job is
IntelliJ IDEA.

If you want to code in Common Lisp, the best tool for that job is emacs -
mostly because it offers the best integration with Lisp (with an add-on).

Emacs and Vim both have their followers, and they have fought many religious
wars over their editors' merits.

The point is that your choice of an editor need not be between emacs and vim.
They just happen to be the preferred tools for most of "the big boys" around
these circles.

Since you're aiming for web-development in a business environment, in your
situation, you're probably more interested in making code appear on your
screen than hard-core editor wizardry.

Don't spend too much time worrying about emacs or vim.

If you do want to settle in one of those camps, choose after you've tried or
investigated both, and have a good idea of why you would prefer one of them
over the other.

As for a programming language, I'd say that Python should be a safe bet.

It's a relatively elegant, mature language, which should be useful for all
kinds of development.

One of the most popular web-frameworks, Django, also happens to be written in
(and for) Python. It looks like a sensible and practical tool, and I suggest
you check it out.

As a sidenote, PHP is not very highly regarded as a language by serious
programmers. Its merit is getting stuff happening quickly.

Just like others have said, you need to learn HTML, CSS, JavaScript, and SQL
too.

Using something like Slicehost would probably be a good idea too, so you'd get
accustomed to the maintenance side of things.

I wish you good luck! :)

------
ideas101
i don't want to discourage you because any technical learning will help you in
the future - but just in case if you find this things very technical or boring
or not interested then don't get disappointed (and dont give-up either)
because u can still become a webpreneur - a startup is about many things and
not only hacking, its about building a business from scratch it requires
skills, knowledge, experience of sales, marketing, finance, HR, market
research, project management etc.

Also if you have terrific idea then u dont have to wait to learn those
technical skills rather you start looking for hacker co-founder or hire a
hacker or outsource it to a freelancer - this is because there might be
someone who has the same idea and is planning a startup, so u better keep
balance between speed, gaining knowledge and time spent on learning hacking
ONLY.

