Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

As an adjunct to my regular job (teaching) I have taken on the task of developing an appointment booking system to be deployed on the school's server (SQL Server 2008 R2 / IIS 7.5).

I have been writing and programming web pages since the very beginning, so I have a good knowledge of the client-side (including jQuery). I also have some knowledge and experience in database programming (Access and mySQL). For the last several months I have been been teaching myself server-side programming (mainly via the Apress books on MVC3, ASP.Net and C#, as well as through the tutorials on Pluralsight.) I shall be developing the system in Visual Studio 2010, and have written one or two basic practice solutions in MVC3 that work fine on my local development system.

My question: What is the single most important thing I should know or do as I embark on this project? (PS. I am committed to using MVC3, Entity Framework 4.1, C# and Visual Studio.)

share|improve this question

closed as not constructive by Oded, ChrisF Nov 6 '11 at 12:12

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

The single most important thing you should know is: there is no single most important thing.

Now that we have that out of the way, here are some things you should make sure you sort out/understand from the start:

  • Make sure you use some form of version control system, such as Git or SVN
    • This isn't just for code, but also at least for db schemas
  • Make sure you sort out a reliable backup strategy - both for your code and the eventual production system
  • NEVER make changes on a production system if it hasn't been tested on a development copy first
  • Test regularly. If you spend 2 weeks writing umpteen sections/features before you test what you have done, you WILL be overwhelmed when debugging
  • Remember: Shortcuts with hacks will cause you more trouble later than it was to do it cleanly the first time
  • Since you mentioned jQuery, make sure all validation of data is server-side.
    • Client-side is in addition to not in replacement of
  • Since it is an appointment system, think about time. What happens during daylight saving?
share|improve this answer

The single most important thing for non-professional programming is having the unwavering will to:

Program to a target and DELIVERING it.

All the technical stuff is secondary. The primary attribute you need to have is the will to slog it out when the going gets rough (and it WILL get rough :-P) considering this is your first project.

Scale it down to something you know you can manage and put in the missing bits later. Remember you need to bake the cake first before worrying about the icing.

Deploy early and often to get quick feedback, every "YES" that comes back will give you a morale boost, every "NO" helps you because you can fix it NOW instead of later when it starts becoming complex.

share|improve this answer
  1. Setup an issue tracking system and source version control. Bugzilla is a good choice for this type of thing. So is subversion (hosted might be a good idea).

  2. Invent as little as possible. Be sure that off-the-shelf software isn't already available that does the job (e.g. Microsoft SharePoint). It might just be cheaper to buy than build.

  3. Prepare for the project to take up way, way more of your time than you ever anticipated.

share|improve this answer

I second Dan McGrath: There is NO single most important thing

A quick list of points to remember (The Joel Test):

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

Since you are not programming professionally (and presumably aren't employing anyone), points 10 and 11 might not apply to you. If you answer YES to the remaining questions, you are in pretty good shape.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.