This week I’m happy to welcome Shawn McCool to the Artisan Files interviews series. If you are not familiar with Shawn he runs the Laracon EU conference, former host of the Laravel podcast, and was a very early adopter of Laravel.
Can you tell us about yourself? How’d you get into programming?
I’m a 33 year old American software developer living in the Netherlands. I moved here 4 years ago on an adventure with my wife and two kids.
I started programming when I was 10 years old. I was already really into playing Oregon Trail on the school’s Apple IIe computers. Then, when I went to my friend Jeremy Cole’s (now a big-time database expert) house he showed me his family’s IBM PCjr and gwBASIC and that’s where it all started.
Eventually, his family bought a new computer and they sold my family the PCjr for $100. I got to keep the computer in my room and after 2 years of that I had built over 200 BASIC programs in various states. I had written everything from primitive games to primitive management applications.. Really.. I made whatever I could think of. It was an obsession.
Over the next years I found Turbo Pascal 7, then C and C++. Then, I got really into Linux when I was 14 or so, whenever SNES9x first got sound on Linux. Linux and I ended up becoming more or less inseparable.
I have few memories of times in my life when I wasn’t passionate about programming.
Are you working on anything interesting these days?
One of my favorite projects is Laracon EU. It’s the official European Laravel conference and I love it like it was my child. My partner and I work on it year-round and pour our hearts and souls into it. To us, it’s not just a tech conference. We want it to be a powerful experience for our attendees. After all, this is the time when we get to see the other community members and our chance to bring more people into the active community.
I’m really focused on education and I think that conferences are an excellent medium for that. I’m working on a few other conferences that, like Laravel, are about topics that are close to my heart. I hope to be able to talk about them soon.
When starting client projects, what is your typical project workflow?
Start a project is really difficult. In my mind, the hardest parts are learning the way that the client things, what they actually want / need, and managing their expectations.
I always deliver a barely functional version as a first “phase” of development. This way, we’re always delivering and it gets all of the setup out of the way. When the client comes in to see where we are, their brain starts churning and they often figure out more about what they actually wanted, which helps during the coming phases of development.
What are some of your must have “apps”?
Hmm… For me, must-have apps are:
- Sublime Text
I think that about covers everything.
How do you structure your day? Do you work a fixed schedule?
My wife works her PHD in Amsterdam. So, she wakes up at 6am to beat rush-hour on the trains. This means that it’s up to me to get the kids to school in the morning. Luckily, I’m 2 minutes away from the school that they both go to.
So, I wake up at 7am, prepare lunches, get them fed and ready, then I walk my four year old to school. After that, I’m more or less free. Typically, I go to a cafe, sit down, have a cappuccino, and catch up on my email. After that, I try to crunch out the hardest tasks that I have left so that I can relax later.
I find that if I don’t get time to relax in the afternoon; I can be quite grumpy when the kids show up. So, for me it’s a big deal to get that sorted. It’s really easy to do this when I focus on the stressful stuff early on.
What do you think are the best parts of being a programmer?
I think that the most compelling part of being a programmer is the way that you end up thinking. As I mentioned before, I’ve been obsessively programming since I was 10. So, 23 years later and you might wonder if my mind works the way it does because of the programming, or if I fell in love with programming because of the way my mind works.
Either way, programming taught me how to think. You learn how things ACTUALLY work. You learn that contexts change and what seemed like a good idea before, doesn’t seem like a good idea now. Being able to break down large problems into many small problems, then put together the many small solutions into a larger solution is a big deal.
Whether or not you’re a programmer, these skills make the world go around.
It’s no small deal to be able to make what you want. For example, I’m obsessive about customizing my user experience. My laptop can basically not be used by anyone else because I use a different keyboard layout than QWERTY and because I don’t use stacking window managers, and for other reasons.
I absolutely love thinking about ways to improve my interactions with my machines, and then trying them out.
What about the worst?
I don’t know that there are specifically bad parts about being a programmer. However, I can say that there are definitely bad parts about being in the software development industry. Software developers are often treated extremely poorly. They’re often not valued and not nurtured.
I think that part of this is because so many of us simply “walked in off the streets.” The job can be quite difficult for those who haven’t learned the 5000 lessons necessary to be at what is commonly referred to as the “senior” level.
But, it’s interesting to note how much more education is available. When I first started, we had to connect to BBSs to find other people’s source code. There usually weren’t manuals for how to do stuff (that we could find, as kids) and we had to sort of learn from what we could scrounge together. My buddy Jeremy and I were the only ones we knew that actually programmed in our school.
Now, education is bleeding from all of the internet’s many orifices. It’s truly a treasure trove and has changed the way that people live and learn.
If developers can stay passionate and have good taste on what to study, then they can have an extremely nice life. But, our industry is in its infancy and you can’t expect things to stay the way that they are for long. It’s important to keep up in order to reap the rewards. When I say, “keep up” I mean with paradigm shifts, not with tools.
How do you see web development changing over the next 5 or 10 years?
I think that web-development will be done much more with the functional paradigm and distributed computing. I think that we’ll utilize external services more often than we already do and much more emphasis will be put on technologies like event-sourcing.
Web-agencies that create simple bespoke applications will still probably be doing work similar to the way it’s being done now. However, we’ll have consistently better tools.
Developers will be using a less imperative approach in exchange for a more declarative one.
If you’d like to find out more about Shawn check out his personal blog or follow him on Twitter. Also if you enjoyed this interview you can download a pdf of all the other interviews that have performed here on Laravel News.