As members of theSpoke, I think it’s safe to assume that many, if not the majority, of you program in one language or another. (Just looking at all the discussions about Project Hoshimi confirms this suspicion.) I can also assume that most of you program for classes, and I would even wager that you program for the sheer joy of it. And now the tough question: How many of you program with a purpose in mind?
In other words, do you ever find yourself creating a program where the end result was fully defined? It can be to write your own version of a game that you saw somewhere, or to learn a specific skill, or to create a utility to help yourself or someone you know do something better. (Hey, it could even be for pay!) The point is, everyone out there who programs should know how to start with an idea and bring it to fruition, and should do this on a regular basis. It’s an amazing education to yourself, and a great way to hone your skills.
Recently, I was asked to help out the administration staff at my school with a problem they had. As with any business, records need to be kept of all the time off the faculty and staff takes over the course of a year, so that proper benefits accounting can be assigned, trends can be detected, etc. Apparently, this was done by hand for a long time with an Excel spreadsheet. Late last year, however, a trial-ware tool was found that streamlined the process. It kept track of who was out when and for what reason, and had a number of useful reports that could be generated. The admin staff quickly became enamored with it, and even though it didn’t exactly fit the bill, it was a far cry easier and more efficient than Excel. And then the trial period expired: the tool stopped accepting new data, and panic quickly ensued.
I was asked if I could create something that could help out. I evaluated the trial-ware tool, found out what it did, saw where it didn’t quite fit with what was needed, and interviewed the staff to find out what they wanted. With this, I was able to design the program, and I set to work. In about a day I had what I called the StopGap TimeKeeper, which would allow the staff to continue entering data. Then I set out to build their dream tool. The Alpha Version (meets minimal functional requirements) was done a week or so later, the Beta Version (all functional requirements coded, not guaranteed to be bug free) two weeks after that, and I just finished the final polish on the Release Candidate after about six weeks.
Now, six weeks may sound like a long time, but remember that I’m a teacher first; this was being done at home in the evenings. Also, being a tool that someone else was using, I had to both really stress test it myself (always a challenge, as programmers naturally avoid potential bugs because they know how the program works!) and follow-up with the customer users without being a pest in the process.
Anyway, the end result is something I’m quite proud of. It does the job, intuitively and efficiently. The staff isn’t afraid of breaking it, and they like the reports it creates (man, I love printing from Rich Text Boxes!). So far, everyone is happy. And my own skills got better in the process.
COMMENTS FROM theSpoke:
Always great when a plan comes together. 🙂
Do you write computer programs for fun? Many of the best teachers I have known “do what they teach” for…
I’m impressed 😉
I have 1 more semester to go before I graduate from RPI and I’m really looking forward to working in the industry after college. Although I really like learning new things about computers (right about now I’ve reached the point where I’m pretty sure I could program virtually anything given enough time), programming in school annoys me because every other week it’s something different… only one class in my 4 years here has had a continual focus on one project for the entire semester, and it was awesome.
I know there’s no way I’m going to be able to constrain myself to *only* a 40 hours/week programming job when I get out… either I’ll have to work for a medium/small company so I can take a major role in it, or I’ll have to start consulting or even start my own business on the side (who knows… the possibilities are endless).
I have to thank you, Mr. I., and Mr. T. as well because of how much you guys taught me and helped me in HS. None of this would have happened for me without you.
P.S. Just a couple of months ago I read an article rating Software Engineer as the #1 job in America =)