I suppose that it would help if everyone knew what TimeAgent is.
I'm writing time management software. Some people who have followed me on my previous blogs will remember me mentioning it before.
The Problem (that TimeAgent will solve):
I have worked with a few time management applications and methods of tracking my daily tasks before... with mixed results.
I have used Google Calendar with great results... when I would actually check it. It never became a habit, never caught on, so despite its great number of features and ease of use, it failed because I wasn't checking it often enough to be reminded.
I have used programs installed on my computer that pop up reminders at certain times, including Microsoft Outlook. After a couple of weeks, I'd either uninstall them or remove all of my tasks, because they were just too annoying; their reminders would pop up no matter how important the task, would interrupt my work flow, and cost me at least 15 minutes of quality development time, as I'd have to get myself un-distracted and back into the flow of programming.
I have also used no-tech solutions, such as pen and paper, even buying fancy day planners and such... and after a couple of weeks, I'd stop updating them because I'd get tired of writing the same things over and over again.
The "product" with the best results so far have been to-do list widgets on my iGoogle page... I check that page daily (it's my home page), and I have found lists that allow me to mark tasks as done without the task being deleted. However, these lists are always there, and they don't have any distinction between different days... if I leave a task marked completed one day, then it stays completed the next. If I have tasks that I only perform on days that I work, or on my days off, then the tasks will still appear on my list regardless. After a while, I tend to ignore the lists.
The Solution (that I hope TimeAgent provides)
So, what I want and need is a program that will be ever-present, but never annoying. It has to have as little tedium as possible, yet robust enough to know when to remind me of a scheduled task should be worked on.
I hope to achieve the ever-presence by having TimeAgent run primarily as a deskbar application... That is, it takes up an edge of the screen just like the Windows Task Bar does, or the Google Desktop application, if anyone has used that. When a task is scheduled, it will appear as a button on this bar, allowing me to take action on it.
To prevent the program from becoming annoying, it will not pop-up reminders (okay, maybe in a future version a few years down the road, high importance tasks might pop-up, if the user wants them to), it will not make any attention-grabbing sounds, it will just sit there either quietly congratulating the user on having completed all of their tasks, or silently displaying what tasks they still have to accomplish.
The lack of tedium will come by allowing people to create a schedule on when the task will appear again, so that once a task is added, it won't be deleted when you're done, or when the next day begins... schedules like daily (i.e., for cleaning your cat's litter box), hourly or minutely, or even at certain times throughout the day (i.e., for checking your email... for the neurotic, it can be set to every minute, every 15 minutes, every 90 minutes, or even every 27 minutes for the truly random... for the more laid-back, every 4 hours, or just after you wake up and just before you normally go to sleep), certain days of the week (i.e., monday-friday for getting your kids off to school, or tuesday nights for getting the trash cans out to the curb), certain days of the month (such as for paying bills), or even certain days of the year (for birthdays, anniversaries, or even multiple days of the year for quarterly reports or such activities).
For true robustness, though, I am adding in project scheduling, where individual tasks can have their own schedule, but the tasks are grouped together, and follow an even larger schedule... For instance, if you have team meetings at work every Monday at noon, but this Monday is a work holiday, then the task won't show up... since you won't be at work, and all, and nobody will be at the meeting no matter what the computer may say. This would be especially important for someone who has a rather... unpredictable work schedule (like me... monday-friday is vastly over-rated).
My Progress So Far (and a look at how it is designed)
Well, I'm pleased to announce that after a couple of years of slowly prototyping and tinkering, I'm entering a phase of real and earnest development. I have a solid plan on how the program is to act, what it is to look like, and how people will interact with it. I have completed my basic prototype which, while it is technically useless right now, it is a great place to start further development.
My next, most immediate step, is to create a development plan, complete with deadlines. That includes not just thinking about the features I want, but actually writing them down, organizing them, and making a plan for when and how to implement them.
The step after that will be to make a functional GUI... create panels to display detailed information about the tasks, open web pages in different browser windows, and create a way to actually make and schedule tasks without making users muck around with source code or cryptic data files. After that, create a file structure (probably XML) to save the tasks in... since until I actually have all of the features implemented in their final form, I have at best a great guess at exactly what data I'll need to save, and how to save it... and if I guess wrong, I don't want multiple versions of datafiles floating around to confuse and cripple my program... I don't want my first release to have to worry about backwards compatibility with the development versions.
Once all of that is finished, I'll start with some user-testing. Not quite beta-testing, because I won't be leaving the program out for people to intentionally break it... I'll be testing people's first looks at the program, as far as how easy it is to use each feature, i.e., add a new task, change a task's schedule, open a web page related to the task, etc. After all, I'm the developer... I have to assume that all of my assumptions about how easy the program is to use are completely wrong, since I'm the one who will have written the thing. For me, adding a task is as simple as clicking this menu item, selecting that panel, and entering the information... when the reality is that most people won't even know that the menu item exists, much less that there is a panel where information can be entered. (Honestly, if it weren't for the precedent set by Windows 95, who would know that the little circle with a flag in it, in Windows 7, is actually a system menu useful for shutting down the computer, running programs, or accessing the nuts and bolts of the machine?)
Then, my final step will be to call in a favor with a GUI artist, and make the program look clean and polished. I'm leaving that as the last step because I want the base program to be as rock-solid as possible, and I want as few major changes remaining as possible, before I worry about its shelf-appeal. I'll enlist the help of the artist as soon as I'm ready to release a beta product.
Then, I'll spend a few months chasing down bugs that appear in the beta version, put a little more spit and polish on the thing, and I'll finally have a released product that might... just maybe... be good enough to bring a little extra income. That last step is still quite far down the road... with an average of 20 hours per week of development time, if I'm lucky, I'm looking at least a year down the road, probably even two years.
Provisional timeline:
So, with that being said, I'm going to stick my neck out and make a guess on when TimeAgent will meet its milestones.
Now: Complete a plan (making this estimated guess obsolete, since I'll be basing my plan on researched data), finish in a couple of days. Enter "Core Development" phase where nothing actually works, but all of the pieces are being fit together.
1 month: Semi-useful GUI. I'll be able to add and remove tasks, and manage their schedules. The heart of core development.
3 months: "Complete" GUI. Adding and managing tasks will be old hat... I should have a very reliable scheduling system in place. Begin Alpha Testing.
6 months: Chase down most of the annoyances, begin user testing. Late Alpha phase.
7 months: Finish initial user testing, implement changes and incrementally engage in more user testing as each change is made.
9 months: Contact GUI artist, begin limited Beta testing among trusted developers.
11 months: Finish polishing look and feel, begin open Beta.
13 months: RTM (release to market).
14 months: After action review, begin collecting data for next version.
Now, none of this portrays my marketing... Honestly, that's the part that is the most daunting to me. I know that I'm going to be producing a product that fills a need... but if I tip my hand too early, I'm afraid that someone will steal my idea (you can't copyright ideas, only implementations)... Since I'm just one developer, and most of my time is spent on other projects, I can't compete with developers who already have a market base. If I start my marketing too late, then the launch will be slow, and I'll lose out on valuable beta testers, and major bugs might leak into my RTM version.
I could protect myself by making this open source, in which case nobody will steal the idea (why compete with that which is free?), and I'll get high quality testers... but I lose control over the code, I'll get burned out on the project, and nobody will pick it up... the idea dies. If, however, I keep it proprietary, I'll be able to focus on upgrades and fixes, and I'll have motivation to keep on producing it, as well as produce other, more ambitious software... hire employees and contribute to the economy, saving people time (which equates to money, especially if you have hourly employees), and improving everybody's standard of living by 0.0000000001%.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment