Bio Peter is Senior VP Engineering and Senior Fellow at General Assembly, a campus for technology, design, and entrepreneurship. Peter speaks at conferences around the world and is currently writing a book on managing software development for Pearson. He is an organizer of the CTO School http://www.ctoschool.org , the node.js meetup in NYC, and co-organizes the DDD and Grails meetups.
Software is changing the world; QCon aims to empower software development by facilitating the spread of knowledge and innovation in the enterprise software development community; to achieve this, QCon is organized as a practitioner-driven conference designed for people influencing innovation in their teams: team leads, architects, project managers, engineering directors.
Daniel, thank you very much for having me.
Sure; so at General Assembly I’m the senior VP of engineering; so we’ve built up a company very, very quickly, but it was literally built on WordPress and EventBrite and we had two engineers; my goal was to build that and we now have a team of 7 engineers and we’re building all of the line of business applications to scale the company, but also to say how can we take our offline learning and provide blended and online learning opportunities for people who want to learn more about technology, entrepreneurship, and design.
Well I’m certainly writing a book about some of those things; it’s called "Managing Software Development" for Pearson and the goal was originally I wanted to write a book called Agile Recipes because I see so many people trying something like Scrum and they seem to believe we need to take this metameme, this whole set of approaches and implement them at once; in practice that’s trying to do Agile rather than trying to be Agile and it’s much more important to understand; I have a presentation I give called Why Agile Works that looks at the specific reasons why you would approach anything from timeboxed iterations to any of the elements, any of the common Agile practices, what specific problem each one is designed to solve and therefore the heuristics you can use to determine whether or not to use them in a given organization.
The challenge was, though, I decided there were so many great Agile books out there already, the world didn’t need another one for software developers; but then I started teaching a class called Managing Software Development at General Assembly and this is for entrepreneurs, business people, project managers who never had to write software before and now suddenly they’re tasked, part of their success is a function of how well the software is written; and they don’t know how to tell a good engineer from a bad engineer, how to persuade a good engineer to work with them or how to specify software effectively or manage the delivery process; so it’s an entire book looking at what are the best practices for managing and developing software.
4. It sounds in a lot of Agile books that people talk about tools and infrastructure and the fact that you have to do daily standups and manage the work items in a certain Agile backlog way but there isn’t much attention on the actual people that make that happen; is that something you address in what you write?
So, yes ,I think there are two really important elements of working with the people; the first element is to work with the great people, right; it’s the idea of you can either hire smart or manage hard; well firstly I don’t think managing hard ever works and secondly even if you tried it sounds like way too much work for me; I’m much more interested in hiring smart.
So for instance when I brought together the team at GA, if you look at the four most senior engineers between us, we’ve got a hundred years of development experience and that’s an absolutely amazing team; I’m just flying around presenting at conferences this week, they’re actually getting all the work done; so the first thing is to get great people and I think the second part is to understand that you need to make an ongoing commitment to those people and I see that my job as running a dev team is to provide an environment where people can achieve their personal goals in a way that’s supportive of the organizational objectives.
5. So that part of that environment it doesn’t go beyond, you know, ping pong tables and free drinks, what are those specific things you do to create a creative environment for an engineering team of around ten people?
So it’s interesting we actually don’t have the free drinks or the ping pong table, although maybe we can come down to Art.sy and use yours, what we do have though is it’s what Jurgen Appelo, I just interviewed him about his book Management 3.0 he was talking about the distinction between hygiene and motivators; hygiene are things that need to be good enough which is stuff like salary; the motivators are the things that once the salary is good enough, once the conditions are good enough, once your boss isn’t a complete pain in the ass to work with, the motivators are the thing that would then make you choice a fascinating project rather than an acceptable one.
One of the biggest things is having a meaningful vision; I was talking with Floyd from InfoQ and QCon a little earlier today and one of the things he’s really excited about is this idea of a purpose driven organization, of having clear and specific goals for the organization above and beyond just generating revenue; in the case of QCon, to provide education to technologists around the world; and luckily at GA for example we’ve got a very clear vision that excites most of our employees; most of the engineers teach classes or want to learn how to teach classes; so the first thing is to have a vision so that we’re building a cathedral rather than just pounding stones.
The second thing then is to take the time to help every person to understand where they are in their career, where they’d like to go and how the challenges at General Assembly can be shaped to help them to continue to progress; and it’s providing people with just enough challenge; if you provide them with too little challenge, you get boredom, too much you overwhelm people; so it’s finding just the right balance of challenges that again fit with your organizational goals but allow your developers to grow into the people they want to become.
6. And you mentioned some of the names, your previous answer you talked about Floyd Marinescu and Jurgen; it seems that you are one of those people that learns a lot from others; who are those people at QCon this year that you’re really looking forward to listening to and learning from?
So definitely I was really excited to get a chance to meet Jurgen Appelo because I’ve been a huge fan of his book Management 3.0 for ever since briefly after it came out; I think I came across that from Liz Keogh who I’m a huge fan of; unfortunately I don’t believe she’s here at QCon New York but I met her and Dan North at an OOPSLA a few years ago and I love following their blog entries and their thinking because they’re just doing amazing things over there.
I’m particularly excited if I had to pick just one name it would have to be Rich Hickey; I keep meaning to get myself to Clojure conferences and never quite managed it; I was speaking with Stu Halloway about Datomic and learning a little more about that and I’m just fascinated to actually get a chance to sit down with him and learn what he’s been thinking about and where he sees Datomic will take the future of databases.
Daniel'full question: This is really exciting; I’m looking forward to hearing that; yourself you’re giving a talk at QCon this year and it’s in a track called Java Still Alive and Well; you’re going to talk about Spring Data, NoSQL database stores and Java; I don’t know where to even begin with a track title like that; has Java really fallen out of love that far?
But secondly we get the JVM so that even if we choose to write code where Java might not be the optimal programming language we can leverage languages like Scala, Clojure, Groovy that all allow us to write different using different paradigms but still to deploy in a consistent well known way.
So I think that the future of the JVM is bright and I think Java still has a place where you have large numbers of engineers that need to collaborate and where the type system makes that easier than in a dynamically type language like Python or Ruby.
8. […] There’s notably a very long and interesting thread on StackEchange and its title is that Why Aren’t Startups Adopting Java; do you agree that that’s actually what’s happening and if you have seen that thread, do you agree with some of the ideas that are thrown around it?
Daniel'full question: So I’m starting to be very familiar with the large enterprises in New York specifically, the financial industry that’s mostly powered by Java and having worked on G&A I have a good idea of what that ecosystem looks like; but it seems that a startups aren’t so eager to adopt Java and even the JVM; there’s notably a very long and interesting thread on StackEchange and its title is that Why Aren’t Startups Adopting Java; do you agree that that’s actually what’s happening and if you have seen that thread, do you agree with some of the ideas that are thrown around it?
So I didn’t get a chance to read through the thread, but I see a lot of startup activity; I run something called CTO School in New York where people who are technologists who want to become VP of engineering or CTO at start-ups attend; I see a lot of deal flow through the classes that I teach in managing software development and also just being at General Assembly which in itself has a number of startups within our offices in New York; and there’s no question very few of the early stage startups are using Java and I think that’s perfectly appropriate.
For me, most of the value of Java comes in allowing larger numbers of developers, 20, 30, 40 developers to easily interact on a larger code base; and that’s not the problem you’re solving when you’re trying to do a startup; the problem with a startup is how can two people hack something and get the product market fit before you run out of the $300,000 seed money you started with.
What I’d say is though as those organizations develop over time, you then see them bringing in JVM technologies; they then start to decide they need some functional programming; they might – I mean I’ve been surprised to see some companies starting to use Haskell, which I think is great but they might use Erlang but these days Clojure is one of the functional languages people look seriously at because of its well-known deployment characteristics working on the JVM and the well-designed data structures for concurrent access.
Daniel'full question: So let me see if I understand it correctly; I think you are referring to companies like Twitter and those companies that started on Ruby on Rails and eventually had a large component that was ported to the JVM; basically once they hit some scale they are all saying that’s it Ruby on Rails out, JVM, Java, Scala and so on are in; so I work on a Ruby system on a daily basis and I think it will totally scale to billions of users; am I completely crazy and should I start polishing my 2012 JVM skills?
So there’s I guess two separate questions, one is whether you’re crazy and the other is whether you should actually use Ruby indefinitely; I’m going to take this latter question; I think that Ruby on Rails is a wonderful technology; I love the Ruby programming language and I’m a huge fan of Rails for building end to end web applications quickly and I think as a prototyping tool it’s amazing; when I hear all of this stuff about, oh but Rails doesn’t scale, look what happened to Twitter, I think that’s completely off base; I don’t think that any technology that could have been built in the timeframe that that application was built would have or should have elegantly handled the scaling challenges that Twitter had; the very nature of a startup is your goal is to hit product to market fit as quickly as possible and to iterate on the features; once you’ve done that then the problem becomes scaling and that’s a really high quality problem to have and I think it’s absolutely – it’s far too early in the system before you hit product market fit to decide what scaling technologies you’ll use.
One of the things I hear a lot of people talking about these days is the whole idea of polyglot programming too; when I give presentations to Java audiences, people often ask what’s the next Java going to be and I think for now the answer is there isn’t going to be a next Java; there isn’t going to be a next one language to rule them all; what we’re moving towards is a polyglot programming environment where each developer will have skills in multiple languages, you’ll probably have some functional skills, you’ll probably be comfortable with a dynamically typed glue language and then you’ll have some comfort with a C# or a Java so that you can work on the larger infrastructure style projects; and I think it’s important for a CTO especially to be comfortable with the strengths and weaknesses of all of those technologies with the understanding you can always bring in the right talent as your organization needs it for any given scaling step.
10. So are you advising people to just forget about the technology choices and create these animals with eight legs written in all kinds of languages; does language not matter in the early stage or what really matters in the early stage startup to deliver a product from the technology point of view?
I think what matters is a language and ideally a framework that don’t get in your way for the kinds of problems you’re solving, something that is sufficiently mature that you’re not going to spend all of your time trawling through the source code of the language to try and figure out why you’re getting these weird bugs that nobody can answer on StackOverflow; and to have something that’s sufficiently productive that as a team you can build the application and rebuild it in a small amount of time; in fact I would say around that testing really matters; I think one of the reasons that I like the Ruby community and the Rails community is there’s a really strong commitment both to open source software which is great, you get Gems, little pieces of reusable code that you can use to solve most problems quickly but also there’s a real commitment to testing; and it’s really those, the tests are the essential tools required to be able to keep changing the functionality out on a regular basis.
11. Sometimes I joke that testing with a Ruby project is something you have to do because otherwise nothing will work; does it mean we need to break Java a little bit and make it less robust or less reliable so that people start finally writing tests?
It’s interesting; I finally see people – I think that people are being dragged kicking and screaming into writing tests and I think what’s finally going to do it is some of the cool new ideas around things like Continuous Deployment a book by Jez Humble and Dave Farley, the things that Etsy are doing; it’s just simply not possible to commit to production and to push to production 20 or 30 times a day unless you have very sophisticated test suites and then you start looking at the whole application immune system ideas and business level metrics where you will roll back code if a business metric falls off a cliff after a commit.
But the absolute baseline hygiene requirement to be doing things like that are automated acceptance and unit tests and ideally test driven development where you write the test first; I always loved what Kent Beck says about that correctness - with test driven development - is a side effect; TDD is not actually about writing tests, it’s about improving the structure of your design; and I listened to Obie Fernandez in the Rails world who had said you don’t need tests for a startup; so I tried it, I got like a day into coding something without tests with complex model level logic and I realized it was going to take me a month to click through all of the parts; I threw the code away, wrote it test first, a day and a half and I was very happy I’d done so.
Daniel'full question: So you mentioned some of New York startup Etsy in this case which we all actually look up to in terms of continuous deployment and a lot of their day-to-day systems are fantastic example of how to go from a relatively small to a very, very large system; they have a lot to teach us and they’re actually speaking here at QCon; do you think that there are any differences in how technologists make engineering choices between here in New York or the east coast and Silicon Valley?
It’s a great question; I think there’s a real distinction between the cultures; Silicon Valley has a strong engineering culture and I would say until the last few years there really wasn’t that type of engineering and technical culture in New York; one of the things that I’d love to see over the last few years is the upselling of meet-ups for technologies and frameworks and NoSQL data stores and a real sense of technology community here; unfortunately, even just a couple of years ago, the first thing you'd do if you raised a $5M or $10M round is you go fly out to San Francisco, hire a CTO and bring him over here because there were very few candidates in town; now there’s still a lot of – demand is still outstripping the number of candidates but now we’re really building the next generation of technologists here and I think the main difference in the culture is it’s less – it might be less mature in terms of there’s not that deep seated engineering culture but what I think is interesting is that there’s much more of a practical day-to-day business focus; most of the companies in New York are solving problems in media or fashion or insurance or finance, domains where we have large businesses right here that are leading the world in those; so I think it’s great, an awesome place for technologists and in fact a friend just moved his company; he was going to open it in San Francisco but he decided there were more opportunities here to start it in New York; I’m hoping to see a lot more of that.
13. Do you have any advice for the many enterprise-grade, experienced engineers that work in large corporations in New York and who are looking to maybe learn something from the new startups which is kind of the area of expertise of General Assembly in many ways?
Daniel'full question: It’s definitely exciting to hear about the hundreds of startups that get created every day in New York; so do you have any advice for the many enterprise-grade, experienced engineers that work in large corporations in New York and who are looking to maybe learn something from the new startups which is kind of the area of expertise of General Assembly in many ways?
Absolutely; I think the best starting point is to read and this is a presentation I give to enterprise Java developers is Lean Startup for enterprise Java developers; so read Eric Reese’s book to get a sense of the manifesto and then read a book by Ash Maurya called Running Lean; between those two books, it gives you a really good sense of the kind of experiment driven, small risk taking, truly Agile work that’s being done in the best startups; so I think from a process perspective, the Lean startup movement is a really good starting point.
14. You’ve spoken to this idea of polyglot programming with all these technologies and all these languages and all these tools that one should know to be kind of a complete experienced programmer; when do we have time to do all of this working 24 hours a day for a giant corporation that is running at 200 miles an hour?
I think that’s a really good question; one of the things that I’m a huge fan of is sustainable pace and I was very clear when I joined GA and when I interviewed with a number of other companies that I was only going to work my team or myself at a sustainable pace so that we could continue to be creative to think of better ways of solving problems and to innovate and experiment and learn about new technologies to be comfortable with Mongo, Couch, Neo4J, Datomic, things like that; so I think it’s important to try to find the time to create that space where you can then start to learn; and I find that learning often pays off but sometimes it’s over a six or twelve-month period; so it’s worth investing in the learning because the more you invest in yourself, the easier it will be to get the kind of gigs where they’re not expecting you to work 70 hours a week, they’re expecting you to be the best programmer in the room for 45 hours a week.
15. And so do you subscribe to the Google models of 20% free time where you can do whatever you want or is there a way you can really work the kind of learning that you would like your team to experience in the day-to-day affairs?
I think so; certainly at GA we don’t have 20% time; we’ve talked about it but at least until now we’ve decided that we wanted to focus on the product team driving the priorities and us choosing interesting technical approaches to implement those with sufficient spaciousness in our timelines that we can do some experiments; we can try hacking something together as a Node server for a couple of days and see if that’s taking us the right way or if we’re going to have to rebuild too much of the world and it makes more sense to use Sinatra or something on the JVM or Django or something else.
So we try to build in learning into everything we build and I think there’s going to be an interesting time; we’re going to start doing some hackathons where I think we are going to invest a little more in surprise us, do something that GA might need but right now we’re not in a position to do that.
Daniel'full question: Well I think education is a very exciting area to be in and having had an office at GA for almost a year, I certainly can feel the energy of the space and the collaboration that small New York companies have between them; is GA very much a part of that collaboration themselves or do you guys see yourself as kind of the overlooking authority on those small startups that come in, succeed, and get out?
GA is all about helping people to do a better job of starting new companies and learning how to work for startups; so it’s called a campus for technology entrepreneurship and design so it’s a place where you go to learn frontend web development, data science, project management, product management or the skills required to be a great designer or a great entrepreneur; as part of that we are practitioners teaching everything so that it’s – we never want to have professional instructors because you need to be doing this day to day in the trenches to understand what the real requirements are; and also we have a great community of startups right there in the building.
So GA is a place that helps startups to succeed in a number of different levels and I’m just really excited that I get to be in a room with so many different startups trying so many different things so that we can all collaborate and learn from each other; before that I was at a space called Dog Patch Labs just funded by Polaris Ventures and on a smaller scale, I think that was also a wonderful experience; the most important thing and I think it comes to me from the Software Craftsmanship Manifesto, which was written just a couple of years back now was this idea of not just being professional developers but creating a community of professionals and that’s what GA and for that matter QCon and InfoQ do and it’s really exciting to be involved with both of them.
Daniel: Thank you; I certainly see a lot of parallels between InfoQ, QCon, and GA; GA that is now an international organization with offices in London, in New York and so on and so forth and I feel like soon we’re going to have GA and QCon in all the same cities so I’m looking forward to seeing these, both of the communities work together and evolve over time; thank you very much Peter; enjoyed talking to you and good luck with your talk at QCon.
Peter: Daniel, thank you very much for having me.