Click here to Skip to main content
Click here to Skip to main content

The Life of a Project - Issue Tracking: Day 1

By , 10 Jun 2003
 

Read this first, please

This is the first in a series of articles that hopefully will be educational to novices and helpful to more advanced developers alike.  I hope to learn a lot from doing this also.  I am taking the approach of maintaining a journal of the day-to-day process of software development starting from a concept and going to a product.  I hope you enjoy this series of articles.

Introduction

I had surgery on Friday June 6 and as a result am stuck at home until at least the 16th.  I could be reading, watching TV or doing just about anything a person can do while sitting on his/her butt.  Being a programmer, I have decided to take this time to develop a software application.  I have no shortage of ideas for an application, but there is one that I have wanted to write for a long time.  One of the problems I have at work is keeping track of change requests, program changes, ideas, etc.  What I need is an issue tracking system.  Actually, I have an issue tracking package called DevTrack which is not bad and in fact has many great features, but for many reasons I do not use as I should.  The primary reason I do not use it is because I feel that it just adds work, instead of augmenting my work.  I have worked with a few other issue tracking systems and they all seem to have this same common problem.  For this reason, I have chosen to develop my own issue tracking system that I will be less of a burden and more of a benefit.  

What I want is a tool that is almost transparent which allows me to record issues, change requests, bugs, defects, ideas and to-do lists quickly or ideally automatically.  I don't really care if it is integrated with my development tool as much as I care that it is virtually transparent.  I want to be able to easily put data into this tool without jumping through hoops and I want to get it out just as easily.  I don't want a conventional MDI/SDI/whatever application, I want a service that I can call upon to take my requests and deal with them accordingly.  I want to be able to make changes to the system while making requests, instead of having to jump to some other application, do something, then come back and finish my request.  Basically, I want a system that can read my mind, do what I want, when I want and interfere with my life as little as possible while making my life simpler.  Sounds like what most users want, doesn't it.

I am creating a short series of articles entitled "The Life of a Project" to detail my journey from here to the end of this project.  I hope to use these articles as a means to teach some valuable programming techniques (and learn some for myself) as well as to deliver a product that others can use and benefit from.  This is the first in that series and so will probably be somewhat more verbose than most.  I hope you enjoy reading them.

My little diatribe

Somehow, when most applications are designed a process is followed that inevitably leads to one or more nice and neat application programs.  These may be Windows GUI applications, web apps, or whatever, but the scientist in us developers likes to see straight lines and nice and neat boundaries between systems with well defined lines of intersection, union or whatever.  Part of our job is to take what users (managers, bosses, etc) request and turn that into code.  Often this is very simple and we can fit all of the requests into a nice and neat package, but with more complex requests, we end up with more complex designs where the lines are not so neat and the boundaries not so clear.  The reason for this is obvious, computers don't talk human and humans don't talk computer.  Until this changes, there will always be a challenge in software development.  

Some people will argue that we are making real progress in this area because we are adding more and more layers of abstraction which make it easier for developers to make it appear that computers indeed do talk human.  They may be right, maybe abstraction is all that is needed, but we all know that all of this abstraction is adding risk to.  What happens when there is a serious flaw in an abstraction layer way below our applications?  The eternal constant (change) takes over and we are forced to either redesign our applications or pigeon-hole them to work with the underlying changes, or worse some abstraction layer below ours adjusts itself to accommodate the change which means either that later was pigeon-holed or redesigned, forcing more changes down the line.  Where does all of this end?  I guess you could say that we will reach a point where the abstractions will become so stable and standardized that change will not be an issue, but I doubt we are anywhere near that point now.

So where does that leave us?  Well, it leaves us right back where we started, we must take a set of requirements and design an application that leverages as many or as few of these shaky abstractions as we feel necessary to fulfill the requests while trying to balance the risks.  We can choose more control by using fewer abstractions, but this often forces us to either reduce the feature set, increase the amount of code we write, or invent our own abstractions to replace the ones we avoided earlier.  We could take the risks of increased abstractions and hopefully benefit from the productivity gains, code reduction and feature enhancements that these abstractions promise, but we must be careful to choose abstractions that we feel carry the least risk.

OR, maybe the pipe dream that is object oriented programming is just plain wrong.  Maybe it is a house of cards that will ultimately collapse upon its own weight.  OOP has been around a long time and has promised quite a bit, and in truth has delivered some of its promises, but I always have a nagging feeling in the back of my head that says "it just isn't right."  Maybe I misunderstand OOP and maybe all of these abstractions are just illusions any my concerns are misplaced, but I doubt this too.  How can we have a system dependent on so many chances of failure?  How can we have a system that relies on a lack of change when we know that change is not only inevitable, but a daily occurrence?

Then, a little voice in the back of my head says, "what about all those mainframe applications that have been running unchanged for 20 years?".  Hmmm...could it be that these systems prove that OOP is and always has been wrong?  Could it be that COBOL is indeed the language of kings?  Could it be that the evil empire (Microsoft) created OOP to drive sales of its software for the next 100 years?  I doubt it, I suspect that the only reason any of these applications continue to run is because they are batch-oriented systems with well defined inputs that for the most part don't change ever.  I suspect that the interactive portion of these applications has indeed changed quite a bit, that the portion that deals with communicating information (either receiving or sending) has been changed many times while only the core processing engine has remained unchanged.

So where does that leave us?  Well, it leaves us right back where we started, only more confused than before.  Should we use OOP techniques or should we use some other programming technique such as functional programming or structured programming or should we give up and find a nice easy career as an accountant? (Hmmm.  Maybe all of this is just the effect pain medicine has on a programmers mind?) 

I always hate reaching this point in the application design stage because its like walking on a treadmill, you can go a long way and never get anywhere.  The reality is that in today's world, to write an interactive application with any-kind of human usable interface, OOP is the only way to go.  We must accept a certain amount of risk, in-fact we must accept inevitable and uncontrolled change, and we must cope with at least some abstractions.  Our job here is to wisely choose the abstractions we rely upon.  

Getting started

Before we can choose what abstractions we want to use, we need to do a little requirements gathering, some specification writing and put on our creative hat.  We need to understand the project in detail, from the users perspective and from a business needs perspective.  Then we must create a design that takes into consideration all of these needs and solves all of the problems.  So, without further ado, lets take a look at our requirements.

Requirements 

The users of this system have been interrogated and here are their demands:

  • Want to record user change and feature requests
  • Want to record defects and track their progress
  • Want to record Ideas for existing projects, new projects, old projects, etc
  • Want to record to-do lists
  • Want to record change history for projects
  • Want to report on outstanding changes, features, defects
  • Want to update the contents of various items with ease
  • Want to hide old data, but be able to access it when needed
  • Want to report on past changes, defects, etc.
  • Want to organize items for personal ease of navigation
  • Will only use this app if it is dead-easy
  • Will only use this app if they can customize everything as needed, when needed

As usual, the users don't tell us everything we need to know.  There are questions that must be asked and answered.  Here are some of them:

  • Q: What information will be gathered for a change or feature request?
  • A: I told you, I want to customize everything.
     
  • Q: OK, What do you want the reports to look like?
  • A: I told you, I want to customize everything.
     
  • Q: That's great.  How do you see this information being entered?
  • A: I don't know, but I know I don't like any of the tools I have used so far.
     
  • Q: Define "dead-easy"?
  • A: I don't want to do anything, I just want it to do everything for me.
     
  • Q: OK, but obviously you will have to do something.  How much do you see yourself doing?
  • A: I see myself clicking a button, entering the information and clicking OK.
     
  • Q: Do you want to be notified by email when someone-else puts an issue in to the system?
  • A: What?  I don't want anyone but me to use this system.  Anyone else will screw it up.

That's about all we are going to get out of the users for now.  This may seem funny, but is not too far from the truth.  Users sometimes know what they want, but not what they want.  Specifics are hard to come by and sometimes can't be found without a little (lot) more research.  That does not mean that talking to the users was a bad idea, only that we now realize that users aren't software developers, and typically don't think the way we do.  Trying to get a user to decide between a tree control, a list control, or a group bar is like trying to get a 2 year old to pick what career he wants to take when he/she grows up.  It's not that they aren't smart or don't understand their needs, but the question is beyond their scope of understanding.

Requirements - Take 2

We have spoken with the users, asked our follow-up questions and come to the conclusion that we need to do a little more research.  We know that our requirements list is a little light on details so we need to fill it out a little with some educated guesses combined with some well placed research.  

First, lets take a few educated guesses and get them out of the way.

  • Lets assume that keeping track of when items are added/changed is important
  • Lets assume that keeping track of who adds or changes items is important
  • Lets assume that there is some kind of workflow process involved since most jobs have some workflow to them.  This workflow will probably start with opening and issue and end with closing the issue.
  • Lets assume that users should not be allowed to permanently delete anything.
  • Lets assume that a typical GUI application is not enough to satisfy this crowd.
  • Lets assume that certain fields are common such as Title, Comments, Date encountered and Status.
  • Lets assume that we can't assume what other fields the users will want.
  • Lets assume that getting data out will be important so we need to make reporting as powerful as possible with printable as well as viewable reports
  • Lets assume some form of logon is desired

Now, lets do a little research and see what we can come up with.  We are going to look at what the competition has to offer and try and glean some ideas from each of them.  Here is a list of the products we looked at.

We could have looked at many more, and it is clear that this is a market littered with applications.  There are several things we learned from doing this research.  Some of the things we learned are:

  • All of these take an application approach to the problem.  What I mean is that all of these is an application which a user must launch (either as a standalone program or a web app) in order to perform usual tasks.
  • Many are project based allowing for the creation of "projects" to help organize issues.
  • All provide a pre-defined set of fields with pre-defined value lists.
  • Most allow for a high level of field/value list customizations.
  • All provide some form of email notification of new issues/changed statuses.
  • All are clearly targeted at team development.
  • Priority is a common field
  • Attaching of files appears to be common
  • Embedding images is often possible
  • All provide some form of list-view based approach to listing issues.
  • Common statuses include Open, Closed, Under Review, Fixed - Awaiting Review, Cancelled, On-Hold

Requirements - Take 3

We are now armed with some more information on the subject as well as some solid ideas of what features users will really want and use (based on what other applications provide).  Lets go back to our users and examine their workflows and behaviors a bit.  We want to learn how they do their job so that we can best tailor the application to them.   We are going to look over their shoulders for a while to passively observe and we are going to share what we have learned with them to get some feedback from them.  Since I am the only developer available at this time, I am going to examine my own workflow and process.  

Some basic details:

  • I work in the R&D department of a market research firm
  • Most of my work is done in Visual C++ 6.0, though Visual Studio .NET is on the horizon
  • I support several web based (ASP) applications
  • I support several GUI applications
  • I support several Windows NT Services
  • I typically leave Outlook, Developer Studio and IE open at all times.
  • A large part of new code is done in C++.  The rest is ASP and HTML applications.
  • I use Visual Source Safe

How projects/issues/change requests arrive at my desk:

  • We sell a client something which we don't already posses and a sales person passes on that information to me through paper or email.
  • We come up with an idea and choose to build it.  This usually involves discussions over lunches, and during breaks.
  • We discover a problem in an existing application which usually occurs because I review a log and find an issue, or because someone else in the company encounters something and emails or calls me with the issue.
  • A client asks for a change in an existing system which is passed down to me usually through email.

How I currently manage issues, change requests, ideas, to-do lists:

  • I have a product (DevTrack) which I keep long-term issues in such as bugs I don't intend to fix soon, but I don't use it regularly.
  • Typically ideas are passed between myself and my boss through email.
  • When I finish a change, fix a bug, or whatever I put the change into production and notify appropriate people.

What can I tell you about the other issue tracking products that I looked at:

  • The "application" approach works for managing issues, but not recording them which is where I struggle most
  • Project based systems are fine, but I would like to be able to have issues that exist across projects and occasionally are assigned to No project
  • Different types of items require different fields (ie. A Change requests will require fields that a Feature request will not, and idea will require only a few fields, etc)
  • Priority is important, but difficult since everything is a high priority.  I would like a better way to assess the real priority of an item.
  • Attaching files and images is a must.
  • I will allow others to put issues in IF I can control what they can do and where it goes and WHEN I see it.

Vision

Having been through the requirements analysis up-to-this point, I have decided that I need an innovative solution to issue tracking if I (and other developers) are going to use it as an every day tool.  So, here is my vision for this tool.

I see a link on the Start menu (and a tray icon with a popup menu) with specific tasks I want to perform such as "Record change request", "Record bug", "Review open bug list", "Print bug list", "Close issue".

I see these same links available as toolbar icons in my favorite applications such as Developer Studio, Outlook and IE.

I see a dynamically generated form created for each type of task.  These forms should be customizable on-the-spot and I should be able to add new task-types on-the-spot.

I see a special email-recipient which I can forward emails to and have them automatically cataloged within this system.  I would like to have addresses like "issues@mycompany.com", "ideas@mycompany.com", etc" and I would like to be able to forward any email I get or send (or CC) to one or more of these addresses and have it inserted appropriately.

I want to be able to create logical groupings of issues which can overlap and I want to create my virtual email recipient addresses when defining these groupings.

I see an IE namespace extension where I can drag-drop files to that will automatically create entries and attach them to issues.

I see a journaling tool that runs in the background monitoring file changes to .cpp, .h and .asp files (and others) that records day-to-day changes and provides a way for me to comment these changes and to automatically extract comments from the source code itself.  These journaling entries should be part of my issues DB.

I see an application interface that allows for management of issues, but is not used much.

What's next?

Tomorrow, I will review where I am and begin to write a specification for this new application.  I may also create a simple prototype of some of the features, but I will wait and see how the specification goes first.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Matt Gullett
Web Developer
United States United States
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Generalgood first articlememberDonsw21 Feb '09 - 15:29 
good first article, can't wait to read the second.
 
cheers,
Donsw
My Recent Article : Optimistic Concurrency with C# using the IOC and DI Design Patterns

Generalcool articlememberCamilo Sánchez Herrera23 Nov '08 - 17:46 
These are the programming techniques that you don't consider when you are at school.
 
But when you have to do some real world job, you understand the importance of a previous and extensive software design.
 
The customer part was great that's exactly how things work.
 
Great article, though it's kind of large
GeneralIt is very helpful and interesting.memberGeorge Knightley14 Jul '08 - 2:42 
Thank you Matt
Roll eyes | :rolleyes:
GeneralGreat Article !memberAliAmjad5 Dec '06 - 2:40 
I just want to thank the Author for this Great Article !
 
-- AliAmjad --
Questionneed help regarding bug tracking systemmemberVanithaRashmi13 Aug '06 - 23:10 
hello, i am in need of ur help regarding the following. how to develop a bug tracking and reporting system. what is the main fuctionality, how to identifie bugs, which tests we have to do. give me a clear idea regarding this. thank u
 
g.sudhakar raju
GeneralexcellentmemberManipk25 May '06 - 21:08 
keep doing good work.
 
Asif Naeem
GeneralNice articlememberVasudevan Deepak Kumar14 Mar '06 - 4:02 
Nice Article
 
Vasudevan Deepak Kumar
Personal Web: http://www.lavanyadeepak.tk/
I Blog At:
http://www.dotnetjunkies.com/weblog/deepak/
http://deepakvasudevan.blogspot.com/
http://deepak.blogdrive.com/
Generalneed help regarding system designmemberasifbhura18 Jan '06 - 18:13 
Dear Sir,
 
I have some questions regarding system design.
 
Please have look below for my questions.
 
Waiting for reply.
 
Best regards,
ASIF
 
Question#1
Imagine we are a vending machine maker company. You are in charge to design the the software to control a vending machine. You can assume that you have any type of software interface to the hardware.
 
Describe some of the requirements and modules/object design you will use to make such a system.

Question#2
Imagine we are a Online English School. We already created client’s user interface for the teacher and the students to use. Now we need to create the server side. An online class with has teacher and multiple students. The teacher can lecture to the students and the students can ask questions to the teacher. Questions asked by a student are heard by all students and the teacher.
 
Describe some of the modules/object design you will use to make such a system.
 

 

GeneralSoftware engineeringmemberWillemM23 Sep '05 - 21:01 
This is a typical case of software engineering.
I love this article, you explain every step you have taken to get to the solution you want.
 
I myself am studying software engineering at the moment, I need to figure out whats a good way to setup and work on a project. This article has helped me a lot to get the first things clear.
 
You got my 5.
 
WM.

What about weapons of mass-construction?
GeneralCool articlememberotigli30 Aug '05 - 13:55 
I like how you explained the requirements phase. Funny and quite realistic Smile | :)
I'll check your other articles as well.

 
Thanks,
Ogun
GeneralThank you!memberdexoster28 Jun '05 - 6:55 
Very helpful article! I am developping a Project Management System and your article "The life of a project" was not like anything I've been read before.
GeneralUse Bt.Net.memberKoszyk16 Jun '05 - 21:34 
We had exactly the same problem in our software house. We are using successfully the Bt.Net project. I strongly suggest you to use this one. What makes in different from anything else is:
- this is ASP.Net based open source, so if you need to change anything from adding a picture on start page to make some serious refactoring you are free to do it
- this has very opend architecture and you can easily create different views using SQL language. This is how we created and maintain ToDo lists.
- this extendable; number of times we added and removed some customed fields
- this is not very fancy but in daily work for dev. team with is horse power and this really works great
I would fell like selling this staff, unless this is free in fact.
I am looking forward also for a new VS .Net 2005. There is going to be some bug tracking system as well. Wondering what kind of.

 
-------------------------
Adam Koszlajda

GeneralRe: Use Bt.Net.memberKareem Shaker26 Jul '05 - 0:42 
Hi Adam,
Could you please give a link for BT.NET ?
Regards
 
Kareem Shaker
GeneralRe: Use Bt.Net.memberKoszyk1 Aug '05 - 21:01 
http://btnet.sourceforge.net/bugtrackernet.html[^]
By the way I have also researched the number of the other options last time;
http://www.techexcel.com seems to be a great shot for development team - I was really impressed after watching number of their recorded demos, however unfortunatelly this is very expensive (for DevTracker, desktop version they charge you about 500$ per user Frown | :( )
 
-------------------------
Adam Koszlajda

GeneralRe: Use Bt.Net.memberGCONN316 Jul '07 - 4:18 
Another to add to the list is Gemini: http://www.countersoft.com. They give out a FREE 5 user license and free licenses to open source projects. Cool.
GeneralGood, engaging articlememberpaul heap9 May '05 - 7:21 
Enjoyed reading that. I too have developed issue tracking systems for the teams use, its now heading towards it 4th inception. Originally a GUI application (still in use today in another company), then went web based (again being used by another company though it looks horrible) when i learnt asp.net, then got a total revamp and got to be quite cool, but was missing things like a timer so we could track time. There are limits to a web client, limits to a windows clients, limits to all clients. I really see only a SOA working as the back end, then you can write all the clients you need to interface into wherever, probably dev environment/Windows app/sys tray/outlook even. Youre requirements list is very close to mine. I made my biggest mistake on the last version in trying to show too much information at once, i didnt realise how much data the users would put into it! And of course the users didnt use it the way it was supposed to be used, even though it is dead simple, especially after being shown. Another round of changes and it will be a really good application. Always seems to be just one release away from perfection...!
 
I also looked at commercial systems, and none of them blow me away, all pretty average, which is why i am considering releasing the last version at some point. But then... SOA beckons... i really believe this is the way to go. Best of luck and will be here watching from the sidelines.
 
One final comment; 5 years ago i had surgery and spent 6 months unable to walk at all. My company brought round my computer so i could continue programming and kindly gave me a project that i could do alone (counterpoint i love you). I ordered food online weekly from tesco and they even put it in the fridge for me. I bought a webcam, learnt to write flash and asp. To be honest it was not a great time in my life (leg covered in plaster and no showers for 6 months - go figure), but without the computer and something to focus on, it could have been a lot worse than that. Keep writing, you write well. Keep sane, and feel free to drop me a line to brainstorm anything, i am here on skype.
 
The architect concerns himself with the depth and not the surface, with the fruit and not the flower.
- Lao-Tsu, revisited by Philippe Kruchten

For cost effective internet solutions, get your free quote at ImageIntellect
Generalgood stuffmemberogrig10 Apr '05 - 19:17 
Nice stuff!
 
I really liked your article and I think it contains good advice that would be hard to argue against. It gets a 4 from me. I realize it's below your current ratting, but I don't see it as a bad mark.
 
There's only one thing that I think should have been made more clear: what you have here is a team of one writing an application for himself to avoid watching too much telly. Practicing good habits while doing this is great, but a "...process of software development starting from a concept and going to a product" implies quite a bit more than that.
 
In real life, with real products, there are a few things you cannot dismiss just like that. In no particular order these would be:
- your users (those who might end up using your creation)
- your clients (those who pay for the application, usually others than those using it)
- your managers (those who should manage the clients and their expectations better, so the whole development process can be less of an art and more of a process)
 
I just realized I wrote two paragraphs criticizing your article and only one of praise. Sorry about that, to even it out let me say it again: very good article and a great starting point.

 
OGR
GeneralThanksmemberreinux6 Apr '05 - 21:29 
I'm going to be meeting my first (real) customers tomorrow for the first "interrogation", so this article series is really encouraging.
 
Just felt like sharing since I'm a bit nervous. Thanks and wish me luck!
 
By the way... do programmers wear suits and ties to "interrogations"?
Generalsocket programmingmemberAlka759 Feb '05 - 0:02 
i am designing a client/server application. i am using v++. it is a dialog based application. i have buffer of 1024 bytes for receiving data but iam unable to send a file more than 100 bytes
 
kashyap
GeneralRe: socket programmingmemberlinhjob1 Aug '05 - 10:22 
I believe you need to sent chunk of bytes over the socket until you finish. Of course, you need to check your data for ending to stop getting data over the socket.
 
I hope this help.
Generalneed ur helpmemberSalarzai2 Dec '04 - 23:50 
Sir,
im a student, and do my final semester project.
I've to develop a project management tool.It will create teams and subteams in
org, and assign tasks to team members and allow the members to initiate new tasks
in a workflow based system.
Sir plz give me hints, how to start my work.
I will wait for ur response.
Regards.
Salarzai:
GeneralTips Visual StudiomemberMoyeen_VC++17 Nov '04 - 22:07 
I am not able to use various commands,macros, project settings and all other stuff of Visual Studio. Like yesterday i come to know TRACE is very usefule but yet not able to use it. Similiary many hidden. Do help me for proper use of Visual Studio.I developed aplication in VC++ using MFC and win32 API.
Thanks for kind help
 
Moyeen
Sr. Software Design Engineer
Generalbeginermemberdnqhung12 Jun '04 - 20:20 
Sir.
i have a created project and i want to add it into my own proect to use its funtion,or some way to use its funtion
please help me
thank you in advance
 
dnqhung
GeneralthanksmemberDavid Spain17 Jun '03 - 6:04 
Thanks, this will help those of us (or maybe it is just me!) that are less than organized, hopefully to become more rational in program design. Thanks for putting this together. I look forward to reading the rest of them. I have also had similar thoughts about object oriented programming - something about it just doesn't seem quite right.
 
David Spain
GeneralRe: thanksmemberMatt Gullett18 Jun '03 - 4:57 
You're welcome.
 
Matt Gullett
GeneralUbiquitymemberRobert Little12 Jun '03 - 11:08 
Great article. I have had many of the thoughts you have expressed. I agree that some applications just don't work well as applications. They need to be ubiquitous in your work environment. Writing can be so theraputic can't it.
 
How about instead of just a tray icon with a pop-up menu you have a dockable menu bar much like the one provided by windows that displays the active applications.
 
It could have an auto-hide feature so that it is out of the way when you don't need it. Instead of applications being displayed on it you would have a "systray" area that gives you one-click access to common features. Another are you would display the "priority" items with one-click access to opening the full item.
 


 
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln

GeneralRe: UbiquitymemberMatt Gullett12 Jun '03 - 11:36 
Thanks.
 
Ubiquity, Hadn't thought of using that word, but that pretty much sums it up.
 
Robert Little wrote:
How about instead of just a tray icon with a pop-up menu you have a dockable menu bar much like the one provided by windows that displays the active applications.
 
Are you suggesting a replacement for the task bar or an additional bar docked to one side of the screen?
GeneralRe: UbiquitymemberRobert Little12 Jun '03 - 12:24 
An additional one that would be your "workspace" or "control center" if you will for the system. One feature I can think of would be to drag an email from Outlook or even a Journal or Task entry from Outlook to the bar and have it automatically create an entry from that. Or drag it to one of the existing items on the bar and have it append it to that items journal.
 
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln

GeneralRe: UbiquitymemberMatt Gullett12 Jun '03 - 12:36 
I kinda like your idea, but I think I need to see it to fully appreciate it. I am invisioning an integrated "developer bar" which can be customized to have various icons. Each icon can do something like:
 
1) Popup a list of "open" issues or recent journaling changes
2) Display an issue entry form
3) Jump to a particular activity entry
4) Show a summary report
5) etc.
 
Is this what you are thinking? Usually I am not foud of bars in addition to the task bar (like the office shortcut bar), but it might work if we could find a way to make it work when needed, but be invisible when not. I can see how this could be better than the tray icon because it would provide even quicker access to desired functionality, but I still think I would have to see it to know if I would use it.
 
Maybe we just need to create a band on the task bar?
GeneralRe: UbiquitymemberRobert Little13 Jun '03 - 5:45 
This is what I am thinking. I kind of like the idea of just adding it as a band to the existing task bar now that you mention it. It would be an addition to a systray item really. And since you want it to be configurable the band and the systray item would be optional.
 
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln

GeneralRe: bloody hell....memberMatt Gullett12 Jun '03 - 5:13 
Thanks.
GeneralCP<sup>2</sup> project leadssitebuilderPaul Watson11 Jun '03 - 11:16 
I hope the CP2 project leads read this article. Good one, look forward to the next one.
 
Paul Watson
Bluegrass
Cape Town, South Africa
Chris Losinger wrote:
i hate needles so much i can't even imagine allowing one near The Little Programmer
GeneralRe: CP<sup>2</sup> project leadsmemberMatt Gullett11 Jun '03 - 12:16 
Thanks for the kind words.
GeneralRe: CP<sup>2</sup> project leadsmemberRoger Allen12 Jun '03 - 4:38 
Paul Watson wrote:
I hope the CP2 project leads read this article.
I have had a chance to skim it, and am taking home a printed version tonight. Looks quite promising, now if I can only get hime to do the requirements gathering and specs for me... Big Grin | :-D
 
Roger Allen
Sonork 100.10016
 
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003

GeneralExcellent!subeditorMarc Clifton11 Jun '03 - 7:05 
You outdid yourself, Matt! I find the same problems with photo-organizers, so for the same reasons, I'm writing my own. Definitely inspirational, and I think your gut feelings about OOP are dead-on, as are your comments about programs being closed, representing someone else's idea of what data should be managed, how, and where presented and your comments about wanting an application to read your mind. Absolutely! (Even figuratively, it's amazing how, as you said, apps often cause more work than not--like a manager, they should facilitate work, not hinder it)
 
It's high time for customizable entry forms, etc. There was a lot of work done in this area in the 80's, believe it or not, when the personal computer just started taking off. Sadly, none of it seemed to materialize, which begs the question "What went wrong with those ideas?" To take a stab at it, I'd say they tried to be *too* general, requiring the end user to be a sort of "macro" programmer, which is also not productive.
 
If, like in other industries, applications start catering to the service industry, then I see the future being models like yours that ship with a dozen or so different pre-configured templates, and companies hire technicians to make minor custom tweeks.
 
I see a dynamically generated form created for each type of task. These forms should be customizable on-the-spot and I should be able to add new task-types on-the-spot.
 
He he he. You need a, um, framework. Want some help? Big Grin | :-D
 
Marc

 
Help! I'm an AI running around in someone's f*cked up universe simulator.
Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus
Every line of code is a liability - Taka Muraoka
Microsoft deliberately adds arbitrary layers of complexity to make it difficult to deliver Windows features on non-Windows platforms--Microsoft's "Halloween files"

GeneralRe: Excellent!memberMatt Gullett11 Jun '03 - 8:09 
Thanks Marc. I always enjoy conversing with you.
 
The funny thing is that when I decided to start this article series over the weekend I knew that I wanted to develop an issue tracking system, but I didn't know the specifics of it. Until I sat down and wrote the article, throught about my work process, went through the motions, how I use my PC, etc did I realize what I really wanted and why.
 
I started this series of articles with the intent of exponding on my previously posted design pattern "The Entity Design Pattern"[^] as well as demonstrating why platforms (eg. frameworks) are critical to software development in todays world.
 
I haven't really fully formulated all the details of how I will implement this, but I believe that my vision is on the mark and deserves to see the light of day, so off I go.
 
Marc Clifton wrote:
Want some help?
 
Sure, if you're up for it. Send me a private email and we can discuss more details, if you are interested.
GeneralRe: Excellent!sussDharmesh Shah24 Jun '03 - 11:03 
Matt,
 
I've already done a lot of work in building a C++ framework that incorporates a lot of the thinking you have in "Entity Design Pattern". In fact, one of the current uses for this framework is building an issue tracking system for inhouse use within my company. Very co-incidental -- and very strange.
GeneralRe: Excellent!sussvextant5 Sep '05 - 23:14 
I echo everyone's sentiments, great idea for a piece of software. Need help developing it? lol.
 
Marc, where did you get this line...it's great!
 
Help! I'm an AI running around in someone's f*cked up universe simulator.
 
I've been thinking that for years, it's all some bad dream. Laugh | :laugh:
 
James
GeneralOutStandingmembersoloforce11 Jun '03 - 4:33 
All i can say is thankyou, this is going to be very interesting.....
 
BTW What launguage r u going to write this application in?;P
GeneralRe: OutStandingmemberMatt Gullett11 Jun '03 - 4:38 
Thanks.
 
soloforce wrote:
What launguage r u going to write this application in?
 
Good question. Keep your eyes out for the next set of articles and see what transpires.
GeneralRe: OutStandingmembersoloforce11 Jun '03 - 4:52 
If it was up to me i would write it C# for a number of reasons.... Dead | X|
GeneralRe: OutStandingmemberPFunky11 Jun '03 - 7:34 
I'm thinking Quick Basic myself. Big Grin | :-D
GeneralRe: OutStandingmemberwmzpc21 Jun '03 - 16:32 
Really good article - looking forward to the conclusions
GeneralExcellentmembermordejai11 Jun '03 - 2:28 
Matt, your article is awesome.
I really hope you write a lot more like this!
GeneralRe: ExcellentmemberMatt Gullett11 Jun '03 - 2:48 
Thanks.
GeneralOOPsussAnonymous Programmer11 Jun '03 - 2:03 
OR, maybe the pipe dream that is object oriented programming is just plain wrong. Maybe it is a house of cards that will ultimately collapse upon its own weight. OOP has been around a long time and has promised quite a bit, and in truth has delivered some of its promises, but I always have a nagging feeling in the back of my head that says "it just isn't right." Maybe I misunderstand OOP and maybe all of these abstractions are just illusions any my concerns are misplaced, but I doubt this too. How can we have a system dependent on so many chances of failure? How can we have a system that relies on a lack of change when we know that change is not only inevitable, but a daily occurrence?
 
I think OOP is great if you are building some general tools/systems (such as Dev Studio, Outlook, etc.). For internal projects, developers tend to go too far with OOP. They spent a lot of time on design (over and over again) eventually got a set of complicated classes that are supposed solve almost all the possible problems. However, these complicated systems rarely get reused. The next guy will likely want to start from scracth because either he doesn't like it or he doesn't understand it (the complexity is to blame), he can easily find many disadvantages of the current system to justify starting from scratch.
 
Great article, by the way.
 

GeneralRe: OOPmemberMatt Gullett11 Jun '03 - 2:48 
Thanks.
 
I partially agree with you on OOP. I don't really know where the line between wonderful and terrible is, but its out there somewhere.
 

GeneralRe: OOPmemberjterrell11 Jun '03 - 3:23 
I would have to say that it is not the OOP concept that is the problem, but how the average developer chooses to apply it. Far too often they overcomplicate their object models, and I really think that drives *non*-reuse. Personally, I think OOP is wonderful...when applied correctly...
GeneralRe: OOPmemberMatt Gullett11 Jun '03 - 3:34 
jterrell wrote:
Far too often they overcomplicate their object models, and I really think that drives *non*-reuse.
 
This is certainly true in many instances.
 
jterrell wrote:
I think OOP is wonderful...when applied correctly
 
Absolutely.
 
jterrell wrote:
I would have to say that it is not the OOP concept that is the problem
 
Not always true. OOP has its limits and its natural consequences just like anything else. It is these limits and consequenes that concern me. I feel that OOP has a place today (a huge place) and will possibly have forever, but I believe it has been overextended in the many layers of abstractions that we developers use in our daily lives. There are too many interdependent layers which are subject to change and the end-vision of computers, that being a truly adaptive and responsive computer-human interface, cannot be built on the layers we have today due to the lack of flexibility and stability. That is not to say that many of the common applications (ie. order entry, etc) will not remain forever, though.
 
This is really just my own personall "take" on OOP. I love OOP and can't imagine how I would do my job without it, but I don't see it as a panacea, or as the end. It is only some middle ground that we have for today.
GeneralRe: OOPsubeditorMarc Clifton11 Jun '03 - 7:29 
Matt Gullett wrote:
I don't really know where the line between wonderful and terrible is, but its out there somewhere.
 
After having seen some outrageous failures and very few successes, I've come to the conclusion that OOP is excellent when applied to very universal and/or very well thought out constructs, AND has very well thought out or very implicit relationships between objects. Constructs that are essentially "naturally occuring". Constructs that change slowly, if at all. And if they change, it is more in the arena of performance than in functionality. Constructs that are completely definable, or whose abstraction is 99.9% guaranteed to handle all unknowns.
 
Some examples:
 
GUI: The concept of a user interface is pretty universal and has well defined relationships.
 
Messages: a well understood structure of content, address, addressee.
 
Modem-type devices: very fixed hardware, easily abstracted concepts for "send" and "receive", very well defined protocols and relationships between machine and device.
 
Game engine: Highly abstractable, fixed and definable set of technologies, even though technologies are changing rapidly, they can be contained well in abstractions, relationships between player and NPG's are definable at a high level of abstraction/generalization.
 
Terrible OOP cases (taken from real life):
 
Satellite engineering: constantly shifting technologies, requirements, functionality. Engineering rules change as technology changes.
 
Elevator engineering: undefinable, technology/requirement changes, not universal, not well thought out, relationships are hard to abstract. Engineering rules change as technology changes.
 
Boat yard management: different workflow processes depending on department. Different requirements depending on department. Very undefined requirements. Prone to significant amounts of feature creep as technology is adopted.
 
---
 
In other words, OOP is good when:
 
1. concepts can be highly abstracted
2. concepts are very well defined
3. relationships between concepts are very well defined
4. concepts and their relationships are slow to change
5. most importantly, the concept is something that is, for lack of a better term, taken for granted knowledge about the concept and its relationships. The social understanding of something is critical in driving the technological and conceptual changes that take place. If a concept is engrained in society (or some piece of society) it is not very likely to change in dramatic ways.
 
Big Grin | :-D
 
Marc
 
Help! I'm an AI running around in someone's f*cked up universe simulator.
Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus
Every line of code is a liability - Taka Muraoka
Microsoft deliberately adds arbitrary layers of complexity to make it difficult to deliver Windows features on non-Windows platforms--Microsoft's "Halloween files"

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 11 Jun 2003
Article Copyright 2003 by Matt Gullett
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid