views:

64

answers:

2

Hi,

I know the title is really unclear, so give me a moment :) I'm a pro-coder doing cool stuff at work (console games), but I've got an idea for an app (for a couple of years now ;)) that I'd like to create at home.

With 15 years of experience, I don't want to fall in to the trap of wanting to do everything myself - I'd like to borrow or steal as much as I can for all the trivial stuff, so I can just focus on what I'd like to do. But I DO want an app that works like people expect it to, with all bells and whistles people are used to.

Which means I need to create an app with (in my case) something like a workspace-interface, and undo-redo system, persistence (serialization / loading&saving), and preferably a VisualStudio kind of dockable interface so users can decide what they want it to look like. (On the other hand, it's not an editor - think more like Mac's Quartz Composer !)

I know all of these things and how to write them from scratch, I just don't want to bother - I want to spend my time on writing my own cool thingie, not writing an undo-system or a docking system or whatever.

So I'd like to piece together my application, stealing what I can steal, focusing on what I want to create.

So far (not writing any code) I came to something like this :

...

The main question in the end is : if you're working on a hobby-project that needs to be semi-professional, but you just want to focus on the fun stuff... What is your approach ?

Can you recommend a framework, can you tell me how you did this before ?

How did you avoid spending time on stuff that's in the end completely unrelated to what you'd actually want to do ?

+2  A: 

With 15 yaers of experience, you probably know most of this already....but since you asked i'll mention it anyway. ;)

Part of being a professional (semi or not) is doing the boring, annoying parts and doing them well, with full conviction. That said, doing boring things on a hobby project can kill it. You'll lose interest and what once was a great idea is now an abandoned project on your disk.

When a library does not exactly provide what you want, professionally speaking you have two options:

  1. The missing features are critical to have: in this case you have to write at least some of it yourself.
  2. The missing features are not cricical: in this case use the library and accept any shortcomings it might have.

However since it's a hobby project you have to take one extra thing into account: what is the risk of you losing interest in the entire project if you choose option 1?

To decrease the risk i see some options:

  • You could begin with a simple implementation that takes little time, but will allow you to continue working on fun stuff. As your project takes shape and nears completion, you could be more motivated to improve "that last feature".
  • If possible, you could also release the app without the boring feature and let the users pressure you into making it. Getting instant gratitude for doing it might motivate you more.

As for doing unrelated stuff....if it's unrelated, then how did you end up doing it in the first place? Either it's fun and you're enjoying yourself, then i see no problem. Or it's not fun, and not relevant to the project. In that case just stop doing it.

Bubblewrap
A: 

I'd probably try to use existing frameworks as much as possible in order to maximize the amount of time spent on the "fun" stuff. That being the case, I'd say you'd want to use one of the existing light-weight mvvm frameworks such as:

Caliburn Micro
MVVM Light

Both of those frameworks are small and take a lot of the plumbing out of doing MVVM.

Daniel Auger