![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
So I'm starting out on my 100 Things project and, you know, I thought I'd start small. With the most amibtious project on my list.
If I could pick one project that I'd really like to finish, this would be it. Not only would it teach me so much about computer science and how to build a large software project, I think that the finished result, if I got it the way I want it, would be really very useful to quite a few businesses.
So this project is small and nascent and it's probably one of those projects that I will need many, many stabs at before I get it right. Or even nearly-right.
The Preamble
I've spent most of my working life in customer service and admin jobs. Even when I'm not interacting with customers in a direct way, I've been handling customer data, and in most organisations that means using Customer Relationship Management software. (We won't even think about the organisations where that's not what they use.) And as any experienced customer service person can tell you, most CRM software is awful.
It's mostly enterprise software, which means it's often built fast, on a tight deadline, with as few resources as possible, and without much regard for what the end users actually need. It's often just as much of a nightmare for in-house IT teams to maintain and troubleshoot. It's often buggy, or just plain unstable, or it requires complicated workarounds to be able to do simple tasks that the front-line staff need to do on a regular basis.
In other words, most CRM software costs organisations time and money.
On the other hand, not using CRM software would cost those same organisations exponentially more time and money.
What they need is another solution.
The Project
So this is my project. In fact, this was one of the earliest ideas I had when, while working in one of these admin jobs, I finally started to see the scope and power of programming. Which I suppose makes this idea about ten months old.
The project, so far, is a list of wants.
I want CRM software that is lightweight, fast to respond at least 75% of the time, and quick to tell you when you've done something very stupid like try to search 500 million records for all people with the last name "Smith".
I want CRM software that makes it easy to find and remove duplicated records.
I want CRM software with a backend that's easy for IT teams to access, while still being secure enough that customer data is well-protected.
In an ideal world, it's modular or extensible, just like a modern browser. So if Organisation A needs advanced scheduling software for event-planning, it's available; but Organisation B, which doesn't need that functionality, isn't lumbered with the performance cost of supporting it. Perhaps some of these extensions are even customisable for different departments or even individual users.
It's got a customisable UI, maybe even a scriptable one, so that every user can see exactly the data they need to without being overwhelmed by data that's irrelevant. The default display is light and pared-down, and it's easy to see how to find the information you're looking for.
Obviously, it has excellent documentation and help files.
It supports customer service and admin staff with their workflow, management, finance and data support with their reporting. It's not full of "quirks" that actively make it difficult for the end user to do what they need to do. Exporting and importing data are smooth processes which run in the background, not locking you out of your whole session (or your whole computer!) while they eat your CPU.
Somehow, this feels very "I have a dream". I am dreaming of a world where software really does make people's working lives easier. I think that for some people who have worked with "enterprise software" forever, it's hard to believe that software like that exists. But I am certain that it can.
The Challenges
Well, this is an enormous project, and I think the biggest challenge so far is that I don't know what the challenges are yet. I'm a new programmer. I'm all fire and excitement and trying to parse HTML with string operations. I'm just starting to learn regular expressions. I have a long way to go, and the first thing that I really don't know is how long that journey is.
There may not be a working version of this project - not even a toy version, which might support a real charity with 100 donors - for five or ten years. The project is that large and daunting, and there is so much to decide.
I know I want to back it with a MySQL database, for ease of backend access, which means I need to learn SQL.
I need to learn so much about computer security, and I don't even know where to start studying. (I'm currently taking all the courses I can manage with Udacity, and I'm hoping they'll run a course on computer security at some point.) At this point, I don't even really know what I need to consider, what I need to protect my software against.
I need to decide whether I'll make the GUI part happen in a browser - which side-steps a lot of difficult problems, like how to support different operating systems, but creates a few of its own - or put it in its own desktop application.
I need to decide on languages, on structure, on core functionality, on basic features, on testing. I need to decide what this software needs to contain and how to contain it. I need to find out if I can piggy-back on the work Mozilla has done to build a module system that works, and to learn how to avoid a painful, buggy, prone-to-breaking module system like the one that Wordpress has. I need to learn more about databases, how they work on the inside and what they really do. I need to learn everything about computer science and apply it to this project.
And I need to know more about customer service. I need to gather information from more people, more departments, more industries, to know more about what's the real core functionality and what is optional. I need to decide which is my core userbase so that I can write something that will really work for them. I need to learn more about workflow and how to support it. How to write software that is accessible and understandable, interacts well with assistive software, supports different working styles and personalities. What makes good software, inside and out.
I'm starting to think that ten years is a lowball estimate.
My Progress
My progress is, not that shockingly, very small so far.
The project has its own Github repository and, as part of the repository, it has a Wiki.
I have not yet written any code. Nor have I logged any issues that suggest how I plan to begin tackling this enormous project. But I think my first step on this long road is going to be to start by making a smallish MySQL database and playing around with it to see how it all works.
After that... well, I guess we'll see.
If I could pick one project that I'd really like to finish, this would be it. Not only would it teach me so much about computer science and how to build a large software project, I think that the finished result, if I got it the way I want it, would be really very useful to quite a few businesses.
So this project is small and nascent and it's probably one of those projects that I will need many, many stabs at before I get it right. Or even nearly-right.
The Preamble
I've spent most of my working life in customer service and admin jobs. Even when I'm not interacting with customers in a direct way, I've been handling customer data, and in most organisations that means using Customer Relationship Management software. (We won't even think about the organisations where that's not what they use.) And as any experienced customer service person can tell you, most CRM software is awful.
It's mostly enterprise software, which means it's often built fast, on a tight deadline, with as few resources as possible, and without much regard for what the end users actually need. It's often just as much of a nightmare for in-house IT teams to maintain and troubleshoot. It's often buggy, or just plain unstable, or it requires complicated workarounds to be able to do simple tasks that the front-line staff need to do on a regular basis.
In other words, most CRM software costs organisations time and money.
On the other hand, not using CRM software would cost those same organisations exponentially more time and money.
What they need is another solution.
The Project
So this is my project. In fact, this was one of the earliest ideas I had when, while working in one of these admin jobs, I finally started to see the scope and power of programming. Which I suppose makes this idea about ten months old.
The project, so far, is a list of wants.
I want CRM software that is lightweight, fast to respond at least 75% of the time, and quick to tell you when you've done something very stupid like try to search 500 million records for all people with the last name "Smith".
I want CRM software that makes it easy to find and remove duplicated records.
I want CRM software with a backend that's easy for IT teams to access, while still being secure enough that customer data is well-protected.
In an ideal world, it's modular or extensible, just like a modern browser. So if Organisation A needs advanced scheduling software for event-planning, it's available; but Organisation B, which doesn't need that functionality, isn't lumbered with the performance cost of supporting it. Perhaps some of these extensions are even customisable for different departments or even individual users.
It's got a customisable UI, maybe even a scriptable one, so that every user can see exactly the data they need to without being overwhelmed by data that's irrelevant. The default display is light and pared-down, and it's easy to see how to find the information you're looking for.
Obviously, it has excellent documentation and help files.
It supports customer service and admin staff with their workflow, management, finance and data support with their reporting. It's not full of "quirks" that actively make it difficult for the end user to do what they need to do. Exporting and importing data are smooth processes which run in the background, not locking you out of your whole session (or your whole computer!) while they eat your CPU.
Somehow, this feels very "I have a dream". I am dreaming of a world where software really does make people's working lives easier. I think that for some people who have worked with "enterprise software" forever, it's hard to believe that software like that exists. But I am certain that it can.
The Challenges
Well, this is an enormous project, and I think the biggest challenge so far is that I don't know what the challenges are yet. I'm a new programmer. I'm all fire and excitement and trying to parse HTML with string operations. I'm just starting to learn regular expressions. I have a long way to go, and the first thing that I really don't know is how long that journey is.
There may not be a working version of this project - not even a toy version, which might support a real charity with 100 donors - for five or ten years. The project is that large and daunting, and there is so much to decide.
I know I want to back it with a MySQL database, for ease of backend access, which means I need to learn SQL.
I need to learn so much about computer security, and I don't even know where to start studying. (I'm currently taking all the courses I can manage with Udacity, and I'm hoping they'll run a course on computer security at some point.) At this point, I don't even really know what I need to consider, what I need to protect my software against.
I need to decide whether I'll make the GUI part happen in a browser - which side-steps a lot of difficult problems, like how to support different operating systems, but creates a few of its own - or put it in its own desktop application.
I need to decide on languages, on structure, on core functionality, on basic features, on testing. I need to decide what this software needs to contain and how to contain it. I need to find out if I can piggy-back on the work Mozilla has done to build a module system that works, and to learn how to avoid a painful, buggy, prone-to-breaking module system like the one that Wordpress has. I need to learn more about databases, how they work on the inside and what they really do. I need to learn everything about computer science and apply it to this project.
And I need to know more about customer service. I need to gather information from more people, more departments, more industries, to know more about what's the real core functionality and what is optional. I need to decide which is my core userbase so that I can write something that will really work for them. I need to learn more about workflow and how to support it. How to write software that is accessible and understandable, interacts well with assistive software, supports different working styles and personalities. What makes good software, inside and out.
I'm starting to think that ten years is a lowball estimate.
My Progress
My progress is, not that shockingly, very small so far.
The project has its own Github repository and, as part of the repository, it has a Wiki.
I have not yet written any code. Nor have I logged any issues that suggest how I plan to begin tackling this enormous project. But I think my first step on this long road is going to be to start by making a smallish MySQL database and playing around with it to see how it all works.
After that... well, I guess we'll see.
no subject
Date: 2012-04-22 08:45 am (UTC)no subject
Date: 2012-04-22 09:44 am (UTC)I'm not sure if someone not-logged-in can edit or add pages to the wiki, but if you can, and you have comments, feature requests, or bugbears about your existing CRM that you want to add, please feel free.
If it turns out you can't, and you still want to leave stuff, please drop them in a comment and I'll get them onto the wiki!
no subject
Date: 2012-04-22 09:55 am (UTC)