My 2 friends and I are preparing our senior project idea for next year. I need some of different ideas while deciding the base environment of the project, especially from software developers/engineers who worked in huge software product developments.

  • We have limited human resources (just us, 3 students), limited time and very limited fund.
  • The project aims to office environments like Outlook, Thunderbird.
  • It will run on the desktop, not web
  • GUI will be really rich with customized widgets/dialogs like Outlook
  • We want to start selling it and opening maybe a small company. So it is not just a senior project for us and we take it serious.
  • Even if we can't open a company, we want this project to be a good reference at our CV, especially for when searching jobs in USA.
  • Speed of the software is of course important, but realiability (crashes in a commercial software product is not acceptable for customers right?) and bringing the project to a usable state as fast as posible are more important.
  • It will be like MS Outlook, with many features in the single client. (More than Outlook actually if we count.)
  • Also we want this project to carry our practical skills to a better place
  • We use C++ and Java really good, but we never worked within a large project like this so we can't see how the environment effects our needs in the long term

We have two environments to choose from (Java Swing and C++ Qt) and we are proficient in those, but because of the factors I described above, we should decide which one is better.

What would be your advise for a project with those criterias?

Our fears for Java:

  • Slowing the software because it is really a big project.
  • Especially we are afraid of the GUI's speed.

Our fears for C++:

  • Developing time consuming
  • Definitely more bugs will occur
  • More time or money to develop and maintain (harder to find good C++ developers than Java developers right?)
  • Making that much customized GUI with Qt might be really hard
  • Libraries won't be reusable for a mobile web interface (at least easily)

PS: It is not an email client. It will be used in office environments like Outlook, but not as an email client. Outlook is a good picture to represent it.

  • 11
    With three relatively inexperienced people working for a year or two, you intend to produce an application with more features than Outlook, a very rich and configurable GUI, and industrial-strength reliability? I think you're getting overambitious. I'd pick one thing and do it well. Commented Mar 29, 2011 at 19:43
  • 2
    You're mentioning fears about speed because it's a "really big project" and are looking for experience from "huge software" developers - but that really isn't what this is. It's a school project developed by three people - not exactly enterprise level. You'll still need to watch out for a slow app due to bad code design, but you shouldn't simply rule out Java because of a "slow GUI". You won't have that kind of code bloat.
    – Jeffrey
    Commented Mar 29, 2011 at 19:46
  • Agree. Do not go for a full product. Go for a proof-of-concept implementation, and then decide if you can raise funding when you've got your grade
    – user1249
    Commented Mar 29, 2011 at 19:46
  • @David, I'm not saying we will finish them all. We made a priority list and those features will be implemented first. If customers like the software and buy it, surely there will be more people on the team because then we could pay for the work. After everything that we thought, analyzed, and gathered could be implemented, of course there may be changes. We may be students, we may be inexperienced, but we can measure our path as well. Commented Mar 29, 2011 at 19:51
  • @Jeffrey, you have your points. But everything has a starting point. No company built with enterprise level products at the beginning. I just want to choose the best path to reach the success. I know it's hard to achive our goal, it may be unlikely, but with the right steps I want to increase that chance and I'm willing to give it a try. I have nothing to lose, except gainig more experience. Commented Mar 29, 2011 at 19:58

5 Answers 5


Take the language you know best.

Java, C#, and C++/Qt are all well known choices for desktop applications. With each you can create a good-looking GUI and manage large projects. Performance of each is "good enough" as performance usually isn't a concern for desktop applications anyway.

There might be minor differences between the languagues on those points, as each has its own strengths and weaknesses. But those points are less important than your skill in using them!

Therefor my advice: pick the one you're the most proficient with. (Which rules out C# in your case)

  • 2
    "performance usually isn't a concern for desktop applications." What?
    – TheLQ
    Commented Mar 30, 2011 at 2:46
  • What most kids at this level perceive as "performance" is actually microoptimisations, which aren't generally a concern for any application.
    – jwenting
    Commented Mar 30, 2011 at 6:29

Our fears for Java:

  • Slowing the software because it is really a big project.
  • Especially we are afraid of the GUI's speed.

With some experience in Java GUIs, I can assure that it will be quite fast if you do it right. Plain Swing is snappy; it's doing unnecessary work in the EDT which will slow you down, but you shouldn't do that. Just learn how to use Executors or SwingWorker.

Even something as big as NetBeans is tolerable even though it's built on top of the NetBeans framework, which of course will slow down everything a bit (but brings other goodies, if you like framworks).

  • Is this the method which makes first loading screen and loads components before they being used in ides like Netbeans, Eclipse etc? Commented Apr 6, 2011 at 5:10
  • @Seregwethrin: What do you mean by "this"? Commented Apr 6, 2011 at 6:48

My advice is to forget performance for this project and pick the language that will allow you to build something useful with the least code. Both C++ and Java are fairly verbose. I would look at Ruby or Python with Qt or Tk. It wouldn't take you long to try one of those.


The time it will take you to learn a new language and/or framework will be greater that resolving any issues, or doing any sort of performance tuning you will need to do on a language and framework that you already know and have experience with. If you have something you know and understand well, and you are under time constraints the best solution is to stick with what you know and understand well, despite whatever perceived shortcomings it may have.

It sounds like you have the most confidence in your abilities to program in Java, so stick with that.


Take the Software Development framework you know best. I didn't say "programming language". Not just a compiler and a text editor.

  • I don't think that's the logic. The counterexample is then I'd like to choose the software development framework I know least to learn it more. Commented Mar 31, 2011 at 5:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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