I'm currently doing my masterthesis in computer science. The project is about the design and development of a software editor in the cloud (a bit like c9.io)

As I started this project I made some choices like which programming language or technologies should I take.

I have to produce some documents a bit like a software engineer should do (not sure if PMSE is the right place to ask this question...). Documents like architecture, class diagram, database diagram ...

I made some important choices before I started to code the project, like programming languages. Obviously they affect the software design. But I'm not sure if thoses choices belongs to the design phases of a software project or to the implementation phase.

Otherwise lots of libraries I needed was chosen during the implementation and does not really affect the design of my software.

Sorry if my question is not clear, I'm not a native English speaker.

  • Hi Charles, please provide more detail in your question. It's not quite clear what you're asking, and this site works better when questions are super specific. Please edit your question to add more details, background, what the project is about, what you're confused about, etc. Thank you, and welcome to PMSE! – jmort253 Jun 4 '12 at 18:11
  • Hi Charles, I'm closing your question for now. This is just a temporary state until you have a chance to edit your question. Once edited, go ahead and flag it and we can look at reopening it. For help, see tips for writing great questions and How to ask. Good luck ;) – jmort253 Jun 4 '12 at 18:28
  • Thanks for making your edits. I've reopened your question. It is borderline on-topic, so we'll see if your question gets attention from our community. If not, we'll help you get it to the right place ;) Thanks again, and welcome to PMSE! – jmort253 Jun 4 '12 at 19:56
  • He already made the choices. It is unclear as to why it is relevant whether those are categorized as belonging to the design phase or implementation phase. – Mark Phillips Jul 5 '12 at 4:10

The whole question/answer depends on your definition of design. If it means, user interface design, or high level concept with use cases, or high level architectural design, then you can choose a programming language during implementation phase.

In the other cases, the programming language depends on the design. For example, if you need something fast, you can use C, or C++, or you need something portable, you can use Java, or you need something asynchronous you can use Javascript/node.js. First you must design your application and check, which programming language is the best for your needs. Of course, it can happen that your design was wrong and have to redo the whole stuff with a different design or with a different language.

My suggestion is to have a basic idea what you would like to do, and implement a couple of prototypes, maybe using different languages. This kind of experimentation can give you a better overview and understanding on your design and possibilities.


Since you asked on a PM site, and you've already picked the language, we'll focus on the pm side of things -

From a strictly pm perspective, for your project you selected the language during the "Planning" phase. The first phase (Initiate) was developing the idea, and getting approval). Then came Planning, where you decided how to progress, and selected the various tools to use (to most ensure success). After that you'll move to 'Implementation' using the tools you selected in 'Planning' (language).


Let the techies choose the tech. Insist they make the case, but don't prevent them from making the choice, and encourage the use of technologies they can get into and out of cheaply.

Product management has a lot more to do with what, when, how much, and not that much to do with how the code is written.

Consider minimal design, evolutionary design, minimal marketable features, and low-feature/high-quality frequent releases. If you do continual (or darned frequent) release, then you don't worry about phases. The team is continually analyzing, designing, testing, developing. It takes a lot of stress out of the process, and lets you show results much more often.

Remember: a system that works is invariably found to have been grown from a simple system that works.

  • Hi Tim! I noticed you mentioned "product management" in the 2nd paragraph of your answer. Since the op referred to this as a "project", do you think that project management also has to do with what, when, and how like it does with product management? Does your answer apply to both fields or were you thinking strictly from a product management perspective? Thank you. – jmort253 Jun 5 '12 at 5:11

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