The transition from computer technician to software developer can be pretty rough. Not only does one have to give up the chic company car (and, of course, all the hot dates it guarantees), but he has to land that rare technician job that has just enough programming work to stretch his job title on a résumé to “programmer.” Garret was lucky enough to find that job at a small computer repair shop we’ll called “AAAA Computers”
Garret’s official title AAAA Computers was “Technical Office Manager,” which came with a job description of “ya know, just do whatever it takes to run the shop ‘n stuff.” Being that Garret was the only employee at that location, this involved everything from fielding phone calls to sweeping the floors at night.
The salary – a whopping $22,000 per year – was a bit less than Garret had hoped for, but the owner assured him that once annual revenue increased past the $20,000 mark, he’d definitely get a raise. The technician Technical Office Manager that Garret was replacing was not much of a multi-tasker and would often “get confused” if he had to work on more than one computer at a time, which lead to slow turnaround, which lead to dragging sales. For this reason, Garret was confident he’d be able to boost sales.
By utilizing all four spots on the technician bench, a few KVM switches, and some simple install scripts, Garret found himself with a lot of free time. The first thing he wanted to tackle was the custom work-order system they were using. Built by a contractor for a whopping $1,500, it had all sorts of “quirks” like crashing if a date text field was not entered correctly (and, of course, taking any unsaved work with it). Having worked with PHP in his free time, Garret convinced the owner to let him replace the work order system with something he’d write from scratch.
In about two months, Garret had built it and was very happy with how it turned out. Customers had Computers, Computers had Work Orders, Work Orders had Notes, and the Service Provided Type determined what Service Check List would print on the Work Order. The owner was definitely impressed.
Shortly after rolling out the work-order management system, the owner asked Garret if he could develop a new software application that he could sell to customers. The specs where, “ya know, the registry cleaner, privacy watcher, anti-spyware sort of thing.” Garret explained that this was a bit of a leap from a simple PHP/MySQL application, but the boss was convinced that Garret could do it. And he knew exactly how, too: by stealing other software vendor’s databases and programs.
Garret wasn’t very comfortable blatantly ripping off or trying to reverse engineer other software, but the owner told him that “it’s how everyone builds it.” While Garret wasn’t fully convinced, he knew this presented a good opportunity for more software development experience. So he figured out a way to take other program’s data in the least unscrupulous way possible: through the log files.
Whenever a computer came in to the shop for spyware removal, Garret ran a script that installed and executed SpyBot and AdAware. He simply modified his script to upload the programs’ log files to a PHP page, which would then parse the logs and add the removed items to the database. It was pure genius in Garret’s estimation, and within a few weeks, the database grew quickly.
The first version of the “AAAA Computer Cleaner” program was developed in MS Access. It took a few months to hack together and actually managed to work somewhat. The biggest problem, however, was distribution: users would need Access. While the owner had no qualms installing a “not fully licensed” copy of Access on customer computers, many already had different versions of Access already installed, and replacing it seemed like it might cause trouble. So Garret decided to upgrade to Visual Basic 6.
Going from Access to VB6 was pretty easy as most of the code was in VBA. However, the biggest hurdle that Garret faced with VB6 was installation: without InstallSheild or some other program, he just couldn’t figure out a way to build an installer that would take care of his program and the VB6 runtime. Having heard about a thing called “MSI,” he decided to investigate and learned that he’d have to use VB.NET instead. So he decided to cut his teeth on that, too.
After the owner provided Garret with a “not fully licensed copy” of VisualBasic.NET, he also added a small requirement: the program had to be finished within the next two months in order to be pressed to CD, packaged, and ready for the Christmas season. Garret worked day and night for the next several weeks to figure out how to do registry, hard drive, spyware cleaning, and – per the owner’s request – silently search for any AdAware or SpyBot logs and upload those, too.
It was rough, but Garret managed to hack something together that worked well enough to be sold to customers. Which, as you might imagine, was a pretty low bar to reach. Shortly thereafter, the owner delivered a bit of good news. AAAA Computers was now able to offer an entirely new service: custom software development services.
Garret was a bit wary of this venture, too, and expressed his concerns to the owner. After all, he really struggled building the first two applications and didn’t feel quite ready to develop other people’s software. Not that it mattered of course: the owner was already awarded a contract to build another company’s medical billing software.
As you might imagine, the project didn’t go so well. With no rules, no specs, no design documentation, no direction, and unreasonable deadlines, Garret and his newly-hired fellow technician/programmer delivered some horribly developed software that he’s ashamed of to this day. But the important part is that it brought in a boatload of cash: more than ten times Garret’s annual salary, all in two months.
Not too eager to start up another software project, Garret implored his boss to hire a senior developer, provide them with some classes, get them some books, or at least purchase a “fully licensed” version of VB.NET. The owner scoffed, telling Garret not to “ya know, not complicate things too much.”
A week later, when it came time for his one-year review, Garret asked for a little more than the average 3% raise. He was hoping that, because he was able to increase revenue almost twenty-fold with customer service and software development, he could get $30,000 salary the next year, and, if things continued to work well, $45,000 the year after that. His boss did not look too thrilled at that idea.
So, one year and a day after joining the company, Garret was let go. “Ya know,” as the owner put it, “you’re objecting to everything, you’re just overcomplicating everything, and now yer asking for all sorts of money. I can hire a whole team of complacent programmers for that kinda cash.”
While Garret isn’t too thrilled about the fact that he helped build a horrible anti-spyware program and helped launch a second-rate software outfit, at least he could now put “programmer” on his résumé.