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 :
- use a very lightweight MVVM lib, probably just my own simple implementation since everything more is overkill.
- Use AvalonDock for docking (http://avalondock.codeplex.com/ )
- find an undo/redo action-based framework ( http://blogs.msdn.com/b/kirillosenkov/archive/2009/06/29/new-codeplex-project-a-simple-undo-redo-framework.aspx for example )
- figure out a ‘standard’ serialization in C# / WPF or find a library ?
…
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 ?
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:
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:
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.