Information and Links
Join the fray by commenting, tracking what others have to say, or linking to it from your blog.
Doing It Yourself (A Series on Self Sufficiency). Part One
INTRODUCTION:
In today’s computer world, a programmer (new comer or experienced) often finds himself or herself needing a specific tool. Sometimes, finding that tool is rather easy especially if one is willing to sacrifice feature to save himself the trouble of creating his own set of tools. On the other hand, when you really get down and do what you know you’ll need and can’t find anything that matches every feature you are looking for, creating them yourself can be one of the most rewarding projects you can get yourself into. Some of the main reasons why are:
1. You can give your application the look and feel you want, you’re in control.
2. You can make it work the way you want, if you like a certain way of working, nothing’s stopping you from making your project work exactly that way.
3. You can set your own standards for code, code quality, naming conventions making the work even more enjoyable based on how you like to work.
4. Best reason, there’s nothing quite as fun as programming on a project that you want to program on.
There are more reasons of course, the sheer reward of making your own tools in itself is quite rewarding. Depending on the tool or application you want to make yourself, some research might be in order if you’re not too familiar with the domain. That too can be very rewarding. Not to mention it can broaden your field of personal knowledge quite a bit.
ESTABLISHING YOUR OWN NEEDS:
I’m sure you’ve heard me at some point complain about windows, express how much I love DOS and text based programs, etc… That shouldn’t be a secret to many people reading this. So I decided to do something about it. I started taking notes, organizing the different aspects of the project. But before I go there, I want to let you know how I defined, so to speak, the needs of that project. Hence, how I got the inspiration to create Developer’s Desktop.
It all started when I wrote my Evolution Of GUIs article, looking at all these classic GUIs I came across Tandy’s Deskmate. Now sure it’s success wasn’t too long lived, but it did that certain something I liked about it. For instance, the ability to get windows of files. A visual window of files, where you could then view more than one directory at one time. I just liked that “see it all” aspect of it. Now, since I wrote that article, I’ve been juggling this concept in my head, trying to see if today, it was possible to make something like that, but better for today’s type of work. Hence was born the Developer’s Desktop project.
Here’s are 2 screenshots to give you an idea of what Developer’s Desktop will look like. This first screenshot is the desktop area itself. This is where it all starts.
This next screenshot is from one of the applications, this one is the project manager. The screenshot shows the project tasks on the left and their time lines on the “gantt view” representation on the right.

Basically, once I got the idea, a bunch of questions raised in my head. When you start asking your questions about a project (whatever the type of project) of course you’re trying to cover all the grounds that you can at least think of. This helps to determine things like how many things you’ll need to do, what you need to think about, etc… So then, Here are some of the questions I asked myself.
1. What will it look like?
In my case, I had my inspiration for the looks, I wanted, essentially, a text version of the Tandy DeskMate application. I wanted the file list windows, the calendar, to do list, calculator. All can be positioned wherever you want on the desktop. So I used the same color palette as Deskmate but in Text mode.
2. How will it work?
Once again, I aimed to offer the same type of functionality and organization that can be found in DeskMate. Although at a Text based level, I wanted to offer the same “features and functionalities” that could be found in DeskMate (and more). DeskMate is aimed at everybody. Developer’s Desktop is aimed at programmers. This mean that I wanted it to both be useful to as many people as possible. But, I also wanted to add enough features to give developers the flexibility to have Developer’s Desktop work like they do. This started to give me some serious design issues which I’ve overcome just by thinking about all the different ways people could/would use this system.
3. What can it do?
I know what DeskMate offers, and well I wanted to offer at least that much so it will do Text based word processing, spreadsheet, databases and everything else DeskMate offers. But on top of that, I also wanted to offer even more tools and programs to make DeskMate both more useful to everyone and more useful to programmers (of course). As such, home accounting, home inventory specific programs will be made, as well bank related programs (like you might find in Microsoft money) the best it can be done in a text based program. For developers, Project management, scheduling, planning will all be present, code editors that can call the compilers in just about any language will be there as well. Some analysis and text based visual design tools to help with the creation of objects and modules will also be present. And whatever else I can think of that the developer could make good use of.
Just from these three questions you can guess that I have a lot to do. And I’ve already covered a lot of aspects of what would be in Developer’s Desktop. I now have the start of a “to do” list that I’ll be able to follow. With this bunch of tools and applications planned to be implemented. You might wonder how it’s all going to fit together. Of course, since this is an environment, I’ll want things to look like they all fit together somehow. So basically, the idea to create a set of visual design rules, similar to those of DeskMate had to be. All the same visual aspects, locations, colors and sizes as needed are followed through in the design of any tool and application that will be part of this project. Add to that a keyboard standard where a given key combination performs the same action throughout all applications and you have yourself a good standard to follow throughout the development of all tools and applications.
SPECIAL NOTES:
What you’ve read so far was for my particular project. I had a set of needs that I want to build into a solution. Sure in my case, I want it to be as useful to as many people as possible. So I had to be open minded about how to design something that can be used so many different ways. Maybe in your case, you only need one specific way of doing things. Maybe my example inspired you to think about “different people working different ways” with your application. That’s all great. The important thing is to think about it for a sec and ask yourself the right questions to really put on paper what you need for what you are doing.
As far as keyboard standards, mouse standards and User Interface standards, well in my case they become important because if all the applications work the same way, I’ve cut down, considerably, the learning curve of all the applications making my project useful as soon as possible. If you’re making one program only, you can think about which keyboard shortcuts you want to use, but since it’s just one program, a standard is not as needed. The same goes for User Interface design. Making my programs all look the same helps the users visually find what they expect to find in the same place also helping with the learning curve.
Of course, if you’re project is a game, things can also be considered very differently. No matter what the project type is, I think that asking these three questions will at least put you on the right track to ask the right questions for the project. If you are doing a paint program or some kind of graphic editor, again you have to take the type of project into consideration when asking the questions and designing the look and feel. When you don’t have a clue about how a project should look and feel to the users, your best bet is to do some internet search for similar things. You might get some great ideas to get you started just by doing that. Typically, programs that have been around for a while have a reason to exist for so long, they must have done something right. So it can prove to be a great learning experience to take the time to do some research.
IN CONCLUSION:
Some people think that we’re created just about everything that can be created with a computer. There’s nothing new to create anymore. To that I answer we’ve been so busy making the computer do what we don’t want to do that we’ve forgotten that we haven’t even begun to create things with a computer. There’s so many things left to do it can’t be mentioned in a list because it doesn’t exist yet. Just think about it, aside games, the rest of the programs make computers do what we, as humans don’t want to do.
This brings this first part to an end. I think as far as “establishing the needs” we’ve covered most of what we need to know. Just remember that in the case of your project, things can be very different. It’s just important, especially in bigger projects, to sit down first and set things up on paper. It helps at the start and keeps on helping all the way to the finished project. For one thing, it doesn’t stop you from adding to that last after. It just gives you a good solid starting point from which to do your work.
In the next part, I’ll go more into details, the main idea is to document my project as I go along when the time comes to coding, I’ll also comment my source and basically explain what I’ve been through while I was making the project. This is a pretty big project and it should give me a chance to talk about a lot of experiences you might go through in your “bigger” projects too. The kind of thing that can happen, some situations, and basically walk you through my minding and thoughts as I face the situations see how I cope with them so you can get a glimpse at what you could be up against in your own programming projects. Feel free to comment or ask questions by emailing me or by leaving comments here on the insight website. Until the next installment happy planning and coding.