

Ask HN: How do you make the leap to software development? - gxs

For a long time I've wanted to learn software development but don't really know where to begin.<p>I was a math major in college which I've found has been quite useful for programming (similar ways of thinking) and while I was in school did quite a bit of programming for numerical analysis and financial engineering classes.<p>In addition, when I take programming tutorials online they come easily and usually get through them pretty well. For example, I can get through the project Euler problems pretty easily (but again these are little programs that run int he console).<p>With all that said, how do I make the leap to learn about how different technologies come together to make software? Even though I feel like I've programmed a lot, I would have no idea where to start if I wanted to make a simple java app. When I load Eclipse for example, all the files and menus are a little overwhelming.<p>Similarly, I've finished a bunch of javascript books, but how do you piece everything together to build a website? Are there resources that anyone may be able to point me to?<p>Thanks for your help. I feel like I have some programming skills that are going to waste because I can't seem to close this gap.
======
metaphorm
don't use Eclipse. its designed as a professional tool with alot of features
for large teams working on Enterprise IT projects. its way more than you need
as an individual developer.

My recommendation is to start getting familiar with the tools and developing
environment that will be useful to you no matter what type of software
development you do. Start using Linux and get comfortable with the command
shell, and all the unix programs. Get familiar with some programming oriented
text editors like Vim or Sublime. Get familiar with the process of installing
libraries and other systems on your own machine so you can set up a
development environment that is usable. And most important of all. Learn how
to use a version control system like Git or Mercurial or SVN.

once you've got a good feel for these tools you'll be able to start writing
applications without shooting yourself in the foot. at this point you should
just pick a type of application and do one.

for example you mentioned that you were interested in building a website.
Javascript is a core technology for that but you'll also need to learn about
HTTP and how the client/server model works. you'll need to learn more about
the front-end technology stack (Javascript, HTML, CSS). you'll need to learn
about how to interface with a datastore of some kind (probably a relational
database like MySQL or PostgreSQL). you'll need to learn about server side
languages (almost anything works but PHP, Python, and Ruby are the most
popular right now) and will probably want to learn about a Web Framework
written in one of those languages (like Rails for Ruby or Django for Python).

it sounds like alot, and it is, but you don't have to swallow it all at once.
every application domain is going to be similarly complicated in its own
unique ways, but there are good beginner entry points into each of them. (for
example, the Django tutorial
<https://docs.djangoproject.com/en/dev/intro/tutorial01/>)

the important thing is to learn by doing. its not enough just to know the
basics of how to write small programs in one or more languages. the complexity
of application development comes at the integration level, where you are
trying to get many functional components to work together and do what you want
without bugs. there's no good way to learn this besides just practice. like
any knowledge domain, its large and complicated and you can study it for years
and still have just scratched the surface, but you've got to start somewhere
and you'll learn more and more with every passing day. don't feel overwhelmed.
just learn your tools and then start with a small project in your domain of
choice.

------
rajeshamara
I think you are getting confused between learning programming and learning
technology and language. I will say start with one language and learn
programming first. Once you learn programming than you should be able to code
in any other language once you master the concepts. using javascript you
mainly deal with web client side programming, where as when you say java app
it deals with so many (desktop, server side etc). You can download microsoft
visual express developer edition and start learning C#. Which will give you
all aspects of development. leaning any open source is much harder even though
you have tons of documentation available all over the web

------
logn
You make the leap one file and class at a time. Choose to build an
application. Think of the minimum viable product. Start small. Have a grander
vision and work toward that. I start almost every app with a "hello world",
usually in an index.htm or index.js or whatnot. Then I work forward.

Also part of the trick in transitioning to full-blown software engineering is
learning the tools: source versioning (SVN, git... and git is terrible if you
already feel overwhelmed), build tools, IDEs, databases, app servers, etc.

Also with Eclipse, you can focus on basically two menu options: File > New ...
and Run

