This is the third post in a series about how I earned my degree. The first is How I earned a computer science degree debt-free, with a job already in hand, and the second is How I earned a third of my degree by exam and portfolio.
In the summer of 2002 I had finished my community college classes and was planning a career in 3D animation. Then I spent most of a year as an apprentice at a small software studio, and by the end of it I knew I wanted to be a software developer. It was unpaid when I started. It was also the most valuable thing I did while earning my degree.
How it started
In 2002, RoleModel Software was a small studio in Holly Springs, North Carolina, run by Ken Auer. It did contract work for technology companies and trained new developers through apprenticeships. My Dad found it. I don’t remember exactly how. It may have been through a homeschool group, but more likely he came across it while searching online for apprenticeships for me.
Dad spoke with Ken at the end of May 2002. Ken invited me to lunch at the studio on June 10, with a couple of other young programmers, to see a demo of some 3D software. A few days later I asked whether I could start the following Monday, coming in after my summer calculus class at NC State. Ken told me to come on in and jump in on the bootcamp. On June 17, 2002, I did.
The bootcamp was something RoleModel ran from time to time to train new apprentices and programmers: a crash course in how the studio worked and the basic approaches it used. RoleModel kept training programmers this way for years. Today it runs a yearly training program called the Craftsmanship Academy.
What a day looked like
RoleModel practiced Extreme Programming (XP), an approach that was still fairly new then. Every line of code was written by two programmers working together.
A typical day started with planning on index cards. Each card was a small piece of a feature, and each pair decided which ones to work on. Then each pair sat down at a single computer with two monitors, two keyboards and two mice, so both of us could see everything. Only one person typed at a time. The other watched.
We worked test first. Often we played “ping-pong”: one of us wrote a test that failed, the other wrote the code to make it pass and then wrote the next failing test, and back and forth. That made it more fun, because it kept switching who was driving.
The goal was to get a minimal working version of each feature into the customer’s hands as soon as possible, so they could start using it and telling us what to change. Then we’d improve it from there.
My first project
Within a few days I was on a team working for CipherOptics, a network security startup in Cary. The team was two senior developers from RoleModel, Roy Miller and Duff O’Melia, another intern and me. We worked at CipherOptics’ office, in what we called “the mud pen.”
We used JRuby, a version of the Ruby language that runs on Java, and much of my work was automated testing for CipherOptics’ product. One week in September I billed four days to CipherOptics, and when Duff wrote up the test automation, he noted that I’d done a bunch of it. (Duff did at least as much as I did.)
The money
I’ve said elsewhere that the apprenticeship was unpaid. That’s true of how it started, but here’s the whole story.
At first I wasn’t paid at all. In July 2002 I wrote to a friend: “The only bad part about the job is that I’m not getting paid… yet.” In the same email I said the experience I was getting was “quite valuable,” and I meant it.
Later that summer RoleModel started paying me a stipend of $200 a month, which helped with gas. That fall I went on contract, paid for my work at CipherOptics and then for building RoleModel’s new website (more on that below). In October I billed 140 hours, for $1,000. That’s about $7 an hour, above the $5.15 minimum wage, and I was being paid to learn from experienced programmers.
Building RoleModel’s website
In late September CipherOptics put its outside contractors on hold until its next round of funding came in, and I moved to RoleModel’s own work: a new company website, built in PHP with Ken and another RoleModel developer. A lot of it was HTML and graphics I could do from home, which saved me some driving.
Ken reviewed my work closely. At one point I wrote that I had yet to show him the site without getting a criticism.
What I learned
Three lessons from Ken, Roy, Duff and the others have stayed with me for more than twenty years:
- Test your code. Good test coverage isn’t optional. It’s how you know your code works, and how you can change it later without breaking it.
- Ship early. Get something working in front of the customer as soon as you can, even if it’s rough, because their feedback is worth more than your guesses.
- Software is a craft. This was the most important one. At RoleModel, programming wasn’t just a job. It took skill and years to learn to do well, and the point was to do it well, not just quickly. Like a sculptor working on a statue, you take the time to make it something you’re proud of.
The apprenticeship also changed my plans. Programming stopped being a hobby, and I set animation aside for good.
The hard parts
The hardest part was the drive. I lived about an hour from the studio, so every day I went in meant two hours in the car.
The other hard part was being so young and inexperienced next to everyone else. Early on I often felt that my contributions didn’t really matter. That changed fairly quickly: as I got up to speed, I started making contributions the rest of the team noticed.
How it ended
By early 2003 the economy was down, and RoleModel had to cut staff. My apprenticeship ended in March.
I spent the next few months job hunting: more than 20 applications, four phone interviews, three in-person interviews and one interview by email. Ken wrote me a reference letter, and Roy gave me a reference too. In June 2003 SAS offered me a job as a paid student intern, and I started on July 1, while I finished my degree at Thomas Edison State College. SAS looked at my RoleModel experience, the websites I’d built and a referral from my Dad. Nobody asked about my grades.
Should you take an unpaid apprenticeship?
If it’s in a field you’re truly interested in, and one you can see becoming your career, yes. Look for a paid internship or apprenticeship first. Registered apprenticeships, overseen by the Department of Labor, pay a wage from day one, and you can search for them with its Apprenticeship Job Finder. But if you can’t find one that pays, working for free is better than spending that time on things that won’t build your experience or your resume. Mine turned into a stipend and then a contract, and it helped me land my first full-time job.
I’ve written more about the trade-offs in Think Before You Intern. In the next post in this series, I’ll tell how the SAS internship became a full-time job more than a year before I graduated.

Leave a Reply