Hacker News new | comments | show | ask | jobs | submit login
Ask HN: How do you make the leap to software development?
2 points by gxs 1697 days ago | hide | past | web | 3 comments | favorite
For a long time I've wanted to learn software development but don't really know where to begin.

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.

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).

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.

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?

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.

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

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

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.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact