I would like to know how can I set up a development environment at home. I'd like to make a kind of simulation to imitate a real software development firm. I am learning Ruby and Java, and I have the necessary tools for small projects on my laptop (compiler, interpreter, IDE etc). However I'd like to experiment with some other stuffs such as version control, automated build tools, and continuous integration. I have been searching the web for various resources and I am thinking about how can I dedicate my old PC to these tools. My biggest problem is that some tutorials and documentations sound like double Dutch and I know very little about networking. Can I achieve my goal, or maybe should I wait till I understand more?
i can't give you the answer you are looking for, but in my opinion there is no reason for you to wait unless youre not willing to start over again once you realized you messed up. with each attempt to make your development environment you will improve its design.
also, by trying to set up your development environment, you will be forced to learn new information.
Don't wait. Do.
Don't get hung up on concepts you don't understand. Steamroll right past them initially. I often found that just by trying to do things, even if I didn't fully understand them, I'd eventually figure it out, or learn something along the way that helped me figure it out later.
The worst thing to do is wait.
It might get REALLY painful, but persevere and you'll be much more experienced when you come out the other end. :)
"version control, automated build tools, and continuous integration"
Just start downloading. SVN is easy to install in Windows.
Automated build tools for Ruby and Rails isn't perfectly sensible. For Java, however, there are lots of tools. Look at this: http://en.wikipedia.org/wiki/Build_automation#Software_tools for some ideas. Pick one and download it.
Continuous Integration tools. http://en.wikipedia.org/wiki/Continuous_integration#Software There are just too many choices. Here's the chart: http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software
Star with Hudson. It's good enough to get started.
"...maybe should I wait till I understand more?" What would be the advantage of waiting? You'd be more likely to get more right on the first try, I guess, for whatever that's worth. But you'd be waiting and not learning as much in the interim. You'll learn far more from "doing" than from reading, and each mistake will be a valuable lesson learned, likely without any serious consequences. Just go for it.
You can absolutely achieve your goal.
Start with version control. If you're on Windows, VisualSVN is a super simple server, and TortoiseSVN is a super simple client. You'll be up and running within an hour.
I'd also recommend Hudson for continuous integration.
Also find some tools to do your own automated testing. I'll recommend both JUnit for Java and Selenium, if you're doing any kind of web development. Start practicing Test Driven Development!
Every good team uses some kind of issue tracking system. Here's a list to choose from: http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems
I am not associated with Atlassian in any way, but I would honestly suggest you to try the Dragon Slayer Quest.
Why?
Because with the Starter licenses, for 60 USD, you will get tools that are:
- Industry proven
- Fully integrated
- Fully supported
- Very well documented
- Highly extensible
What you will need is:
- A small connected server (something along the lines of a dual core with 2GB memory and enough hard disk space to store your files and attachments), could easily be that your old PC fits the role
- Ubuntu Server, SVN comes out of the box if I remember correctly if not, it's a package that is simple to install
- Work through the stages of the quest
You will get:
- JIRA: Issue Management
- GreenHopper: an add on for Agile development based on JIRA
- Confluence: Wiki (documentation, project support and knowledge exchange)
- Fisheye: Source Browsing on Steroids
- Bamboo: Continous integration tool
- Crowd: Full SSO support for the above tools
- and a T-shirt if you pull it through.
So don't wait, just go for it.
i don't know if people are still on this thread, but what nobody sees is the painstaking labor taken while spending your time alone learning any individual concept. in public, while socializing with other people in your field of work or study, it seems as if there are just some people who just "get it", but i promise you, unless you are another mozart, he or she has spent many hours trying to find answers to things that, regardless of their complexity, are just difficult to answer. It may be because of a lack of good information, or the concept doesn't click with your brain, either way, unless i am stupid myself (which i know im not, or else i wouldnt be on this site), all of us on this site have spent hours learning something that have a low intellectual complexity, and when it finally clicks (by finding the correct guide, or just trial and error), it is satisfying for all of us. it is this that sets us apart from the other people who consider themselves hobbyists (unless youre a hardcore hobbyist like stamp collectors :P)