

Ask HN: Help me become a hacker - kingly

I eventually want to become involved in web-based start-ups through personal projects or maybe something more serious.<p>Right now I’m at University (studying a non-related science) and I would like to have sufficient ability to take ideas from paper to prototype for when I leave in a couple of years time. I’m currently learning Ruby because I’ve been told it has a friendly syntax compared to PHP, Java etc. I already have knowledge of HTML, CSS and I’m aware of JavaScript.<p>Up until now it’s going great. I understand pretty much everything in “Learn to Program” (Chris Pine) and I’m having a lot of fun but I do have some questions at the same time:<p>On a whole, what are the hardest/most boring parts of building web based software? What are the easiest/most enjoyable parts?<p>How important is developing with efficiency and scalability in mind?<p>What should I dedicate most of my learning time to?<p>How do I know if I am producing spaghetti code? I can’t tell good code from bad code.<p>There are just some of the things from the top of my head for the moment. I know the questions are pretty broad so answer what you want. Don’t flame me please :D
======
mixmax
Here is my take at the questions you pose:

\- The hardest and most boring part of a startup is all the stuff that
businesses have to do, but that you don't personally find interesting. I hate
accounting and taxes, but I have to do it. Some people don't like marketing,
some don't like support, etc. But it has to be done. I'm sure you have
something that every business does that you find tremendously boring ;-)

\- The most enjoyable part (for me at least) is seeing an idea take shape and
become a real thing.

\- Don't worry about scalability at first. If it becomes a problem you can
consider yourself a success. Better to get something out the door as fast as
possible.

\- Don't dedicate you learning time to anything, start something instead!
Entrepreneurship is one of those things that you can only learn by doing. It's
like basketball: You can read loads of books about it but only playing the
game will make you a good player. It doesn't have to be youtube, just start
with something small. Do a small webapp, sell something online, sell t-shirts.
Doesn't matter. It will get you a feel for what it's like, and you'll learn a
bunch in the process.

\- Don't worry too much about spaghetti code at first. You can refactor it
later. This is a great learning experience as well. When you've written code
that looks tangled and that you can't quite follow, refactor. Messy code can
become clean over time.

Just my two cents :-)

------
noodle
> On a whole, what are the hardest/most boring parts of building web based
> software? What are the easiest/most enjoyable parts?

in general, for me, the best part is the problem solving and building out the
thing you created in your mind's eye. the hardest and most boring parts are
everything else.

> How important is developing with efficiency and scalability in mind?

depends on your goals and what you're building. for you, you should be more
concerned with building something that works, and learning about things in the
process.

> What should I dedicate most of my learning time to?

decide that you want to build something, and build it. take baby steps, build
a small version of your final goal, and add to it.

> How do I know if I am producing spaghetti code? I can’t tell good code from
> bad code.

spaghetti code is like art. its hard to define, but you know it when you see
it. in the past, it was used to refer to code that makes use of GOTO type
statements, where its tough to track the flow of the program. that still
exists, but its much less prevalent. now its more used to refer to "bad" code
in general.

~~~
kingly
Thanks for the comment. I think I'm going to read some more into some more
advanced material (Programming Ruby 1.9) and then get my teeth sunk into a
project.

------
SandB0x
For spaghetti code problems the classic book is Refactoring. He has a whole
chapter on "Code Smells" and most of the book is basically an extensive
catalogue of techniques you can use to eliminate these.

More modern languages like Ruby will allow even cleaner ways of doing things
than described in Refactoring (Java), but you can get a good sense for smells
common to all languages.

Some other thoughts:

What science are you studying? There's often scope to do something
computational for your thesis/project/dissertation - modelling some physical
or biological process.

Other ideas: Try and get an internship at a software company. Often a science
degree is sufficient and you'll be able to learn about working in teams, using
source control, and observe the kinds of things you like and dislike in a
workplace.

You could also do a CS conversion course once you've finished this degree.

~~~
kingly
Thanks for the book recommendation. I'm a biology undergrad. I'm glad you have
mentioned attempting something computational for my thesis. I'll look into it;
the prospect excites me. Same goes to the internship suggestion. Definitely
something to think about.

------
billclerico
I would just build and release something. You'll learn quickly what code is
good and what is bad from experience.

------
kingly
Thanks for the comments :)

