Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have been searching all over the internet for exact answer for my question. I am hoping you can help me out.

I wonder how professional programmers/coders planing their projects? Libraries, subpackages?

For example when creating a user system, how do you aproach it? How do you decide your classes, functions, requirements, database structure, depencies...

Here is a example of user system planning i tried. Am I doing it right?



  • User identity should be selectable (email, username etc.)
  • Passwords: use sha1. mixed with salt
  • email
  • user meta (a placeholder for user profile)
  • user group
  • user access (group based)
  • invitation
  • referer
  • register and last login dates
  • ....

Auth System


  • Required fields:

    • Username
    • email
    • password
  • First Check

    • Username, email, password fields are filled?


I am trying this aproach with planning. Is there a software to do a planning like this?

What should I ask myself? what is the important questions that guide me to the end?

Thank you for your advices that you will send.


migration rejected from stackoverflow.com Oct 1 '14 at 15:53

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by gnat, Dan Pichelman, Bart van Ingen Schenau, Kilian Foth, GlenH7 Oct 1 '14 at 15:53

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs. If this question can be reworded to fit the rules in the help center, please edit the question.

-1: "exact answer". There are no exact answers, since software is a modeling and design exercise. Lots of designs are acceptable. Please explain how "exact" your answer must be. What do you mean by "exact"? –  S.Lott May 9 '11 at 19:00

2 Answers 2

up vote 1 down vote accepted

There is no exact right or wrong answer.

However I would try and follow the usual models e.g Waterfall, Agile etc..

  • First create the basic high level requirements.
  • Then do some high level designs (eg diagrams of the system/sub-systems).
  • Once you have this, you can then describe each "sub-systems" in detail.
  • You may want to do some process flows (eg UML diagrams) that show how each sub-system relates to each other
  • Then you can start designing the database (pen and paper, design the schema)
  • After this perhaps a low-fidelity prototype (could even be a power point slide that shows each process)
  • Once the above is done you should be in a good position to start coding.

For authentication, I'd use third party libraries and authentication systems, such as OpenID, that would do this for me. Mostly to avoid storing passwords in case anyone decides to hack the website.

And if you need to add customization and anything else, try to get inspired by the third party libraries on how they do it.

There are many ways to arrange your own library and in php (among what I've seen) do it pretty much ad hoc, i.e. making it up as they go.

If you want to do it the right way the questions you should ask yourself is what development process to use. There are several to go from such as TDD/BDD, Agile, etc. And even then the class creation is still a black arts (hopefully knowing some Design Patterns should help), but you should always base your decisions from a requirements specification. It should tell you what should be done with the terminology you need, and stick to that terminology as closely as you can.

you got me wrong. I want to know a class creating proccess. what is right questions I should ask myself first before creating a library, class, a web-site. Is there a pattern for this? –  Gokhan Ozturk May 9 '11 at 13:54

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