One day while sitting in Starbucks reading a good programming book Code Complete - version 2, I was asked by a Computer Science student, "what would be the best way to get started coding in the least amount of time?".
The easiest way would be to search one of the many source code sites such as CodePlex or SourceForge for a project that most closely matches yours, download it, and start hacking it to fit your needs.
If you have no experience at all then you will need to get yourself upto speed with how programs are constructed with construction terminology such as: Classes, Constructs, Constructors, Interfaces, Inheritance, Methods, Overloading, Overriding, Namespaces, Members, Variables, Data Types, Delegates, Events, Event Handling, Encapsulation, Polymorphism, Design Patterns, and so on.
The good news is that most languages and their Integrated Development Environments or IDE's are free in some form or another. Here are some of the most popular choices:
- Microsofts Visual Studio (Express) - Comes with several programming languages such as C# (Java like), Visual Basic (falling out of favor), C++, SQL Server Express Database, and so on.
- Eclipse - Comes in many flavors such as Java for Android, Java, C++, Ruby, PHP, and so on.
- Ruby-On-Rails - An MVC framework to help write web applications quickly.
- LAMP - At one time more then half the web is/was powered by Linux, Apachi, MySQL, and PHP or LAMP: An open source bundle of software to build and host web applications.
Once you have chosen the camp you want to pitch your tent in you can get well grounded by first reading some beginner books and watching some of the free or fairly free videos that are readily available.
Some good video sites are:
- ASP.NET - Great short videos that are all free.
- Pluralsight - May have a 30 day free trial.
- Learndevnow - Create Learning to program series, very inexpensive.
You will find the Microsoft goes to great lengths in courting developers by offering local user groups, free events, free software, and free training. However, open source options also have many user groups and you never have to worry about paying for the software.
Programming is an ever changing field to such a degree that it is almost better to be a "Newbie". A newbie is more likely to search the web for the best way to do something. There are studies now that show experienced professionals (Talent is overrated) are often worse then someone who is green. However, this may be more the case in management then in programming but it is still an important point to remember.
That does not mean you will be able to do it better than a pro would but with the American attitude of "Get it Done", you can indeed. However, after a little bit of time passes, your application will become very brittle. When you try to add a new feature it will more often than not create several new bugs. If your application is successful enough you will hire a professional. Expect them to want to rewrite it because your code will be unmanagable, filled with: copy and past bloat, hard coded values, incomprehensable names, no documentation or comments, global everything, and so on. You probably even have procedures named after yourself.
To avoid this trap it will soon become apparent that you need to do a few of the following:
- Find a good coding convention and strictly follow it.
- Strictly follow a good design pattern such as MVC or MMVC.
- Use frameworks such as Microsoft's MVC3 Visual Studio projects or Ruby On Rails.
- Use a code control tool such as Subversion or GitHub both free.
- Use a project tracking tool to keep track of stories (new features) such as Pivotal Tracker (free).
- Use an automated testing tool such as Selenium and Fitness both free.
- Use an automated continuous build tool such TeamCity or CruiseControl both have free versions.
- Use scripting tools for running automated tasks and installations such as WIX and Nant both free.
- Keep a Wiki (ScrewTurnWiki) updated with everything that you might forget about your application.
- Have a firm GRASP (also a design pattern) of CRUD operations and TSQL.
- Stick to one language such as Ruby, C#, or JAVA. There is not enough time to be a guru in more than one.
- Write some unit tests (nunit) against critical methods.
- Create a mock database or mock object to run test scenarios quickly.
- Have someone else assist in Collaborative Inspection.
- Have someone else assist in doing QA.
- Have a beta release cycle. A large beta testing group finds the most defects.
- Refactor parts or rewrite the entire application.
Read, Write, and Read some more. To be good at anything it takes at least 10,000 hours of work (Outliers). That means 10,000 hours of reading or writing code! Meetings and long lunches do not count. Bill Gates had at least 10,000 hours of computer time before starting Microsoft, only a handful of people had that at that time. Keep in mind that finding and using code will do little to help you gain experience only reading code, collaborative inspections or code reviews, along with writing code on your own every day will make you a true expert.
Some good books in anyone's programming tool kit should be:
- Code Complete - version 2 availabe at Amazon
- Microsoft's patterns & practices Application Architecture Guide 2.0 you can download from CodePlex for free.
You can also access online most language references and design patterns for free. Good luck and remember to always have fun with it. Like anything else it is a balance of knowing when to be very serious and knowing when to just relax and find the right zone.