Westword: Tell us a little about your history as a freelance programmer. Joe Flores: I've been doing freelance programming since before I could legally drink, even when I've had other jobs. It's nice to work for yourself and not some suit in a corner office. I started out building and designing small websites, but quickly learned I should just focus on programming because I'm really not great at design. Eventually I branched out into application development because I find it more fun, and now it's my bread and butter.
WW: Why did you decide to start working as a programmer, and when did you know it was what you wanted to do? JF: I started programming in BASIC on my family's Apple II while I was still in elementary school, making pointless adventure games. Twenty-five years later, I own appliances with more computing power, but still insist on making absurd adventure games for myself. I was actually born the same year as the Apple II, and by high school, I was the weird kid who took more pride in his calculator than his car. I ended up going to college in the mid-90's, a time when everyone and everything wanted a webpage but seemingly few people knew how to build one, making my hobby infinitely more sought-after than I could have ever guessed in 1985. I guess I always knew I'd be a programmer, kind of like how some kids want to be firemen, except with less adventure, danger or fires.
WW: How would you recommend someone get started in your field? JF: The hardest part of freelance is finding your first job, because unless you are related to investors or marketing people, your family and friends are unlikely to be huge sources of decent programming jobs. At first I found jobs by picking up the scraps of other programmers, doing work they were too busy to accept. I eventually met the people who knew the investors and marketing people that constantly have work and the capital to pay for it. There are also a lot of small development houses that don't have the turnover to hire anyone full time but that farm out work to freelancers so they don't have to turn down jobs. If you don't know any developers or your friends can barely use the Google, you can always roll on down to a local users' group meeting and just start making friends with your friendly neighborhood beard-and-Jedi crew.
WW: Can you describe an average day? JF: I get up in the morning, never terribly early, swim through a deluge of emails and feed updates from overnight, sync my Subversion repositories, look through my tasks for the day, fire up an IDE and then sit in front of a screen for 6 to 18 hours.
WW: What's the best part about your job? JF: You would think I would say something like "Being able to call any time and place work", but actually I enjoy problem solving; troubleshooting some obscure bug until you finally test run your project and everything works like a charm. It is actually a lot like being a carpenter or a shipbuilder; instead of working with a hammer, I'm building something out of logical constructs, which makes me think I should break a bottle of Champagne over the next site I launch.
WW: What's the worst part? JF: The biggest disadvantage of working on your own is not having a technical sales staff, so it's up to me to effectively communicate to self-professed luddites how and why I'm going to have to rebuild their data adaptor without sounding like I'm talking down to them or getting frustrated.
WW: How about the biggest misconception? JF: That a complex and robust application or website can be built correctly by either a) some kid on Craigslist for $50, or b) by a team of farmed developers toiling in a code-mine somewhere offshore. I have seen the results of both, and they aren't pretty.
WW: Anything you're particularly proud or embarrassed of? JF: There is a lot to be proud of, but it is the mistakes and disasters that stick with me the most. I was once brought onto a project that was already over-budget and late, and after billing out 80+ hours of work I discovered that a huge, essential milestone of the application was never going to work because of the $20,000 worth of hardware this relatively small business bought to run it on. I should have seen it before I took the job, but overlooked it because I was too eager and cocky to read the whole project description before signing on. Those are the times you sit up at night and think "I'm an idiot."