Interview by Thomas Peham
May 18, 2015
Photos by Konstantin Hasse
PJ Hagerty travels the world speaking about programming and the next big thing in software.
PJ Hagerty is well-known for his talks and speeches at world-leading tech conferences. Although he drifted away from software engineering after finishing high school, he later on discovered his big passion for software again.
Share this interview:
PJ, can you tell us a bit about yourself?
Sure, so my name is PJ Hagerty. I work at Engine Yard, I am the Community Team Lead, which basically means that I am a developer who goes to a lot of events, conferences and meet a lot of people. I spend a lot of time working with people in the community to get the word out about various open source projects, mental health and tech, how to be a better developer.
I am also in-charge of logistics and making sure we have people and things in the right place. Put the right person in the right event.
I write a lot of blog posts about tools that are coming out that you can use to do different things. So now it's almost like being a developer support person. Like I support people being developers.
And I still continue to build applications on my own time.
Could you tell us a little bit about a typical day in your life?
Well it's hard to establish a typical day, mostly because everyday is a little bit different. So I go more from the week perspective. So every week I spend time looking at conference’s calls for papers, and different conferences that are coming up that are sending me emails to say "will you come speak," or "will you do this," or "will you do that."
And that's usually the first part of my week. Then there are check-in meetings to see what everybody's doing. Then I usually spend a day looking for what the hot, new thing is. Like what are people talking about. Like right now containers are really big. So I'll study up on containers and see how I can get involved with that from my perspective being a Ruby developer, and see if there's something that Rubies prefer a little more. Can I build a quick app and stick it into a container and make it work? And from that I'll generally spend another day or two writing a blog post about what I've found.
On other days I'm flying around the world to speak at conferences, and meet people, and go to meetups, and get meetups setup and stuff like that.
Can you tell us one thing that you really love about your current role as Community team lead?
The thing that I love most about my current job is that there are always new perspectives and fresh stuff going on.
It kind of goes along with the beauty of working in open-source.
The great thing about open source is that someone's going to come up with something that will blow your mind, all the time.
You just kind of have to be open and ready for it. That's what I like. And just exploring things, experimenting with them and seeing what fits best.
Going back to your childhood, can you share some insights which influenced your career path?
Oh, yeah! Absolutely! I'm the second child in my family, and when I was born my older brother was very upset that I wasn't his age, because he was already three.
So he spent a lot of time with me, and I owe a lot to him in the fact, that he spent a lot of time teaching me things that a lot of kids my age wouldn't know.
Like when I went into kindergarten I already knew math. I could do addition, subtraction, multiplication, division I knew all that and I was like four or five years old. And so I kinda had a jump-start. I liked doing math, because it always has the puzzle feel. And once you get out of basic arithmetic, there's more than one way to solve a problem; which I think is awesome.
So Later on I went to high school for science and math students. And there they started one of the first programming classes in New York state. It was TurboPascal 5.5. We were allowed to take laptops home. They were two colors and the weighted probably about 12 kilos a piece. It wasn't really even portable it didn't connect to anything. It had a 3.5 disk drive on the side, but we're allowed to take them home to work on our programs and run them. And that's when I started getting into developing and hacking a little bit and that kind of grew into doing more things with BBS systems and building forums; and some less legal things.
But just the knowledge that you can go and there's a whole world out there that you can connect through a phone line and start talking to people and building things, was a real eye opener.
Then for a while I drifted away from computers and programming because I was also a musician at that time. When I graduated high school I kind of drifted away and went on tour with a band and we were mildly successful but not that successful because I still had to work for a living.
Around the year 2000, I was getting married, I had my first kid on the way, and I was like "I'm going to go back to school and I'm going to go back to programming" because I really liked it.
And back then the model was more like you should go to a university for 4 years and get your degree because that's how you get jobs. There wasn't a lot of twelve week boot camps or no big, nerd ranch. So you went to school, you bought really expensive books, and you learned stuff that was already out of date by the time that class was over.
So from that I moved on to working for a few companies. For awhile I consulted and I built very basic PHP and HTML websites, for people who wanted to do eCommerce. And so I built those sites and that worked out pretty well.
And about 10 years ago I started at an academic software company. And this was interesting, because the challenges were so much more bigger than building a simple site. We were selling software to universities that had hundreds of thousands of students and they were using it to evaluate all of their courses.
So it was interesting but it was never like the “Silicon Valley-style”, like hot & sexy application stuff. And when I was working there we were using Microsoft technologies. After a while they decided to move to open source and start using Ruby because it worked really well with Postgres.
And that's when I became an open source developer; and I just absolutely loved it.
When you were using MS technologies back then, ten years ago, there wasn't really whole lot of interaction of people with other people. They didn't have big events, there was no meetups to go to. So when I started doing Ruby it really opened my eyes to the collaborative abilities with what you could do with people all over the world, and you don't even have to leave your home.
And that's when I came to Engine Yard and I worked on their support team. So I was a Ruby developer working on a team of sysadmins and my job was to troubleshot other people’s applications and say "hey listen this is why your stuff doesn't work."
And about a year and half ago, my role at Engine Yard changed. I always loved to go to conferences and I’d call myself a conference junkie. A guy who was part of the engineering team at Engine Yard told me that he’s starting a community team. And after he asked me to join, I jumped on the team right away.
And I was like "what do you need me to do?" He's like "basically I want you to fly all over the world and speak at conferences." And I'm like "well you don't have to twist my arm, okay." So after he left the company I became the team lead and that's pretty much where I'm at today.
That’s an awesome journey. You mentioned before that you basically went to university because of the thought that’s the thing to do to end up in a safe job. Do you see things differently nowadays?
Oh definitely. There's a huge shift going on about technology education. Technology is moving so fast as it is, and more and more people are realizing that we need to get a grip on it.
So I've always been an advocate of going to do the weekend rails bridge course just to challenge yourself and see if its something you're interested in. It’s much better than spending forty grand and finding out that you didn't really like it.
If the free education, the things that you can get online, all the resources that are readily available today, had been in place when I went to university, I probably would not have gone to university.
Because a lot of the things that I learned there were outmoded while I was there. Like we were using things like ASP3, although Microsoft had already switched to .Net. So it really seemed silly for me.
And open source was a thing that they wouldn't teach at all. Because that was for hippies. But even a lot of the theory in programming comes and goes.
I think that these new forms of education are more flexible. They can move with the times. They're not so embedded in a system.
Was it helpful for you to get the basic theory at university?
To a degree yeah. I think that you do need to have an idea of the concepts, but I'm pretty sure that I could have learned them outside of the classroom.
You mentioned that you’re speaking at some of the largest tech events in the world.
Yeah. I was at Web Summit in Dublin for the past two years. And then I was at their sister event Collision in Las Vegas a few weeks ago. They're very, very cool events.
There's lots of startups and ideas that are going on. So its great to see in that capacity how many people are doing things with technology.
What’s your passion for doing all this?
It always seemed to me that there were two types of programmers.
There were the ones that were doing it to make money and expand their knowledge but are doing it silently and by themselves. Kinda cowboy coders. And then there were people who were even more quiet and wouldn't even interact with anyone, just hacking away in their basements. And every once in awhile these same people would go to a conference and they're suddenly very social and maybe they have a few drinks, or maybe they don't.
But there's something to get people to interact; and it’s that interaction that sparks a lot of great ideas. And that's what I love about conferences and meetups.
As an attendee of an event you walk into the room and you have this idea of how this thing should work in my head. And then you realize other people have different ideas on how that same thing should go. And you're like "oh...boom” mind blown. And that's what I like about the way that people interact is really exciting to me.
Can you share some tools that you're sharing on a daily basis?
For developing I've been looking at a lot of things that are doing static site generation. So single page apps. So one of the things that I'm working on for a blog post right now is a tool called MiddleMan.
And it's a Ruby tool and it’s really easy to setup. And I think the best use for it is basically when you have a project or a feature that's coming out and you don't want to build a whole website, where have to hand-code everything. And I think that's a cool way to make pages and little things that you don't need a whole web-team to deal with.
Okay. Any other tools that you're currently using?
Yeah I got into using Mirah which is very similar to jRuby but it's like a port of Ruby and Java. And so I've been playing around with that and I think it's really neat. It runs very fast, and I think the goal of it is basically be able to build lightweight android applications.
I haven't finished an application yet. I'm working on something to basically rate conferences. Similar to the way that you go online to IMDb and rate movies.
Is there any advice you'd give yourself as a fourteen year old?
Don't stop, just don't stop. If you find something you have a passion for keep it going.
Don't let any other roadblocks get in your way. And try to just keep going as much as you can.
Looking in the future of software engineering, what do you think are the next upcoming challenges?
I think that when you look at software engineering today, one of the biggest problems people have when they build applications, is that they have to build one for the web, one for a different kind of device, one for a third kind of device.
At some point we're going to come up with a simple way to build an application that can be pushed to every device, whether it’s a web browser, a tablet, a phone, all of the new internet of things, the wearables that are coming out.
Like a way to push it and it'll realize what it is and you just have one repository to deal with. Right now you have to build a mobile app, which is separate from the web app, which is separate from the wearable app. And that's too difficult, because we're basically triplicating all of our work. So I think that someone at some point, and I don't know in what language (it could be Node, it could Ruby) is going to find a way.
One single repository, one single application to push to all devices. I think that that's the focus on how to deliver things to various hardware. I think that that's what we have to look at in the future.
Can you share some insights on how you handle software testing at the Engine Yard?
I can say a little bit about it. Because we don't give away all our secrets. One of the things that we are very espoused to is the idea of testing first. There is very little that goes into our products that go public without a high standard of testing. And I also think it’s great having continuous integration to run those tests and make sure that everything is working. Whether that is Travis Ci, or Codeship where they're looking over it for you. To make sure that everything is looking good. We're very big about tracking bugs. We have a QA team, we have all the code testing in place.
I don't think there is any way to make everything a hundred percent bug proof.
Can you share some resources you can recommend to others who want to get started in software engineering?
I think it depends on the generation. For the younger generation, who is old enough to read and they're old enough to type. They should start with things like kidsRuby or Ruby wizardry which is a book that just came out a little while ago. It teaches in a game format which makes it exciting for kids to get into programming, which I think is really important.
For someone in their teenagers to adult years, I’d recommend to look at more online resources. I think that StackOverflow is great if you're a developer and you know what you're doing, but I think it depends on what you want to do.
There are a lot of repositories out there that will walk you step by step to doing things.
And also boot camps are great for getting you started, but you should never go into a boot camp with the idea that you’re just going in boot camp for six weeks and then asking for 150,000 dollars from Facebook. It doesn't work that way.
But I think that a boot camp is a great way to get started and get your feet wet. Meetups are also a good way to meet people who will mentor you. And I think that that's the biggest resource. Things like Pair With Me where you can get a senior developer who can walk you through something that seems basic to you and then you eventually build up those skills and you give them back.
So Pair With Me, Rails Bridge, any kind of hackathon you can get into where there will be developers who will be willing to take the time to show you things.
Like I said before, you have to have that passion. The key is: Find what you want to do, look for those resources whether they be books, videos, railscasts, podcasts, whatever. And when it comes down to it don't be afraid to ask. I think that's the key, even for professional developers. If you get stuck on something ask someone.