Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

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

Possible Duplicate:
What to plan before starting development on a project?

As a university project i am planning on implementing the SMTP protocol.

I wonder what is the best way to start with a project like this, and what are the steps i should do before writing any code


EDIT: What i meant by implementing the smtp protocol is: creating a basic server to handle smtp and a basic client program.

share|improve this question

marked as duplicate by Adam Oct 10 '11 at 16:19

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Get a comprehensive grasp of the requirements first.
  • Fully document the features required.
  • Estimate the time span to complete and ensure the project is viable.

Implementing the smtp protocol is rather vague.

share|improve this answer
What i meant by implementing the smtp protocol is: creating a basic server to handle smtp and a basic client program. – Doron Sinai Nov 17 '10 at 11:56
thank you for your answer – Doron Sinai Nov 17 '10 at 11:56
I wouldn't bother so much with making estimates or planning your time so thoroughly. Since this is just small (one-man?) university project, I'd simply list the tasks (maybe in excel) and give each one a priority. Then work through them and add ones as you need to. A lightweight, agile style is well suited to such a project. The first two bullets are correct though: make absoloutely sure you define very clear objectives and clear, tangible outputs, but that helps in any project. – rmx Nov 17 '10 at 12:57
@rmx: Time estimates are useful and easy. This is an opportunity to develop that habit and become more skilled at estimates. Regardless of the project size it's a university project. It's worth it and it's not a good idea to skip it. You don't want to allocate 30 hours, use those up and discover it'll take 20 more hours which you would've known at the beginning had you made the estimates. Bam, pick any or all of the following: social engagement down the toilet, project delivered late, cram time that impacts study in other subjects. Not fun. – doppelgreener Nov 17 '10 at 13:45
You should read the RFC at least once, but preferably more than once. That will let you get to grips with what you're trying to do. As for "test suite", there are many other SMTP implementations around which you can test against - try sending mail to them, or try receiving mail from them. If your stack conforms, you will be able to interoperate with those mail transfer agents. Those kinds of tests are probably called integration tests. – Frank Shearar Nov 19 '10 at 13:19

I'd start by sketching out your thoughts on how you're going to implement it, the structure of the application and so on. Either paper or electronically is fine. I'm not talking about a full specification, just an hour or so's thought up front before you code.

I'd personally then look at breaking it into chunks against which you can measure progress - basically Agile stories - and try and run it in that fashion. Even if it's just you it will give you an idea of where you're going, what progress you're making and give you a sense of satisfaction at completing things.

Once you've done that set up your version control, get your environment the way you want it, pick what you're working on first and get going.

share|improve this answer

Easy. Create a project on and start writing code.

share|improve this answer
No, don't just start writing code. Spend some time up front, even if it's just an hour or two, getting a skeleton prototype design down - it'll save time in the long run. – Michael K Nov 17 '10 at 13:20
Too much upfront design is a waste of time and leads to procrastination. People that usually "ship it" start by writing code. People that "never ship" tend to spend too much time on thinking about what they should do and how. – user2567 Nov 17 '10 at 15:18
@Pierre 303 I've never worked on a project where the first thing that was done was coding. Thats just plain wrong isn't it ? – NimChimpsky Nov 17 '10 at 16:07
@NimChimpsky: It's not what I'm saying. I say don't waste your time to plan everything upfront, work on a chunk at a time, or you may never release anything. – user2567 Nov 17 '10 at 16:14
@Pierre 303 I think if you never release something you have problems other than too much planning. And you answer is pretty clear cut - "easy start writing code". Well thats the one thing I would not do. – NimChimpsky Nov 17 '10 at 16:18

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