NOEL: I’m trying to figure out where the chat is in this stupid Skype interface.
JAMISON: Just imagine the worst place it could possibly be and that’s where it is.
[This episode is sponsored by ComponentOne, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to wijmo.com and check them out.]
[Hosting and bandwidth provided by The Blue Box Group. Check them out at bluebox.net]
JAMISON: Hey guys!
CHUCK: I’m Charles Max Wood from devchat.tv and this week, we have a special guest and that’s Noel Rappin!
NOEL: Hey everybody!
CHUCK: For the people who don’t know who you are, you want to introduce yourself, Noel?
CHUCK: Yeah that makes sense. So what’s the focus of your book then?
NOEL: Yeah. Self-published author has a what, a lack of cache?
CHUCK: It depends on the book. The quality of the book, and the topic, the elements, the audience and so…
NOEL: There’s actually been a lot of decent for various degrees of descent good self-published books and specifically the Backbone space there are couple that came out in the last year or so.
CHUCK: Yeah. I have to agree with that. But at the same time, I want some discretion, some screening to go on before I just let whoever come on the show.
NOEL: Yeah. That’s right.
CHUCK: And you’re training the developers, so new folks come in?
NOEL: Yeah. So, part of our new hire skills training and ongoing skills training.
JAMISON: So do you want to talk about some of the things that are the biggest “gotchas”?
NOEL: So, you’re saying that was your beginner mindset? Your introductory mindset, you were assuming just because they didn’t behave the way you expected, it was wrong?
JAMISON: Yeah. I was mad at it for being a different language than Ruby.
JAMISON: [laughs] That’s true.
NOEL: I think that there are —- to that and I think this is a general case; you can’t sort of “inject” experience into somebody. You can show them good experience, you can put them in a situation where they will fail if they don’t look at things the right way. You can put them in a situation where they have people who know what they are doing and are modeling a good way to do things. All of those thing sort of help but, people have to discover that for themselves. And there are a couple of roots to that. One of which, some people will be able to see a short example on a blog post and be able to put it into practice. And some people, that’s just not how they learn that kind of experience. They actually need to fail and they actually need to see the bad code first and then see the good code in order to be able to do it. One of the things that makes learning in general really complicated subject is it’s almost so hard to generalize one person’s experience to a general case.
JAMISON: I think I’m definitely in the second group. I have to fail something like 5 times before I really pick it up. Everything that I’m interested in and deeply involved in, I’ve bounced off of several times.
JAMISON: That’s a beautiful picture.
CHUCK: Yeah. Did you just have AJ join us?
AJ: Yeah, I’m here.
JAMISON: Hey AJ.
AJ: Coming at you live from the desktoposphere of Utah …
CHUCK: [laughs] Alright.
NOEL: Hi. I’m Noel.
CHUCK: So, are there any terrific resources or classes or anything like that you would recommend? I mean, other than your book, obviously, that people can go to learn more about this?
JAMISON: I’m just going to say Chuck totally teed you up right there.
NOEL: I already did that.
AJ: Sell, sell, sell.
CHUCK: Right. And so most people have expertise on some other language and then pick up the java script stuff.
CHUCK: So, as a trainer, how do you approach that?
JAMISON: And that’s the thing that happens once every few months? That’s not what every new hires go through?
JAMISON: So, I’m going to see if I can pick your brain about this a little bit. I mean Groupon is a gigantic company with a huge engineering department. Let’s say hypothetically, you worked at a small company that was still hiring new people.
NOEL: What’s hypothetic?
JAMISON: A very hypothetical, but not at all hypothetical. Anyways, at what point, because we don’t have the resources to devote to a full-time training person, right? So, how do you find the balance between getting people up-to-speed quickly but if you take away an engineer, that’s like an 8th of your engineering team taken away to train this person.
NOEL: So, I’m all in favor of moving this conversation out ways where I could conceivably get myself in trouble, so hypotheticals are fantastic.
NOEL: So, I was at, Obtiva a smaller consulting company before Groupon and typically, the mechanism there was a lot of mentoring and pairing. It’s sort of Obtiva like to have people like to have, at all kinds of various skill and experience levels, working together whenever possible. And one of the reasons for that was so that relative experts and relative novices would pair and not to be transferred that way as part of practice. And that would be really effective if your senior people buy into it.
JAMISON: So hypothetically, new hires would pair around with other people in different areas that they’re not as experienced in?
NOEL: I think that’s a good idea in general. If you’re bringing in new hires, and you got a small team and you want the new hire to learn as quickly as possible, I think having them to sort of pair around is a really good way to do that. And I think that that also tends to sort of get them a tour into the tools that people are using and the styles that people are using and allows them to contribute without having the pressure of having to learn everything by themselves immediately. It can be hard to put into practice I think, because in that place aren’t necessarily set-up for pairing like that, but to me, that’s exactly what I would do.
NOEL: Alright, it’s a way to focus that. It’s a very agile kind of approach. It’s Agile because …. but it’s also agile because it tends to be just in time and focus on what you’re trying to do.
CHUCK: Yep. So then what’s the advantage of doing like a day or two’s worth the training over doing a day or two’s worth of pair programming?
CHUCK: So, basically what I was saying is that, you know, if you sit down and do training, then you’re giving them a baseline that they can work from as far as just knowledge. And then, as opposed to in practice, you’re only going to be confronted by certain things at certain points and understanding some of the underlying concepts is going to enable you to do that much more, once you connect the dots through experience.
NOEL: Yeah, and it also allows you to kind of assume a certain level of knowledge on the part of your team.
CHUCK: Yeah, and that makes a lot of sense. What about book learning? I mean, you wrote a book.
AJ: Book learning’. You know how it’s pronounced?
NOEL: Learnin’. Book-learnin’. Yeah.
AJ: That being edu-macation.
NOEL: I think to some extent, depends on the person. Books have a couple of facts relative to learning. Like a book, you can handle it and take your own pace. And if the book has examples and they are good, which is hard to do, then you can take them at your own pace and you’re not tied to keeping up with the guy who is talking at the front of the room. That said, it’s hard to ask questions directly to a book. You know it’s kind of a trade-off. My experience is that some people really do click with books and particularly some books I guess, and some people really have trouble with that mode.
CHUCK: Right. I kind of like that approach too, where you basically said that you were reading code, talking to the people who wrote the code and then also writing code. Does code reading really play a huge role in learning to program a language?
NOEL: Well, if you have the, I think that one of the things that’s tricky about that is finding an example of the code level that’s really good to read into. It’s hard to jump in to looking at the framework code or a lot of the open source codes that are available; that I should say, that the open source code that’s available tends to be really heavy on frameworks and libraries and not quite as heavy on the kinds of tasks that most developers are using the frameworks and libraries for. And then, you get into looking at even blog posts and examples, things like that, and they tend to be a little bit simplistic. Just for the reasons it’s hard to write an example that’s not a little bit over simplified from the real world.
CHUCK: Yeah. That makes sense. Do you guys have any questions for Noel before I keep steaming on the head? [laughs]
NOEL: So, I think it has a strong case for it now. And that’s not something that I think I would’ve said a few years ago. I think the fact that it is really easy, it’s in the browser so that you don’t really need to go through complicated install features. And as a novice, you wouldn’t really care too much about the browser quirks. I think that’s really powerful. Like I said, the ability to teach it a novice in such a way that they can actually see what they’re doing, see the changes that they’re making even if you just started into the console and start to put something on the page, and start moving it around. That’s very, very powerful. I think the quirks, I don’t know. That argument would bother me more if I could think of a language that would be a first time program language that which didn’t have crazy quirks like…
JAMISON: Yeah I guess if it’s your 1st language, then you don’t know that they’re quirks. They’re just how things work.
NOEL: Well, I don’t know. I still think I’d recommend Ruby to somebody.
CHUCK: It really depends right? It depends on where they want to go with the programming. I mean, if they’re interested in just general, programming then yeah Ruby or Python or one of these. But if they want to just do the deep dark low-level programming then you may teach them C. Even though C is a little bit more challenging to completely understand.
AJ: My argument would be that it’s a lot easier if you’ve got some structure and then you learn to take something that has no structure out and make a structure out of it. So, you get like a model to build from.
CHUCK: Yeah. So, you said you might, under the right circumstances, choose CoffeeScript as a first language. Can you think of what those circumstances would be?
NOEL: Right. You don’t need to know what’s going on under the hood to get your job done.
CHUCK: What kind of a set up do you have because I’m assuming your doing in person training? What kind of a set-up do you have to do that?
NOEL: Like our physical set-up in the building?
CHUCK: Yes. Like, what is your classroom lay-out?
NOEL: The main office here right now has two rooms that we use for developer training. They’re not dedicated to developer training; they’re just training-style rooms that we sometimes get a chance to use.
CHUCK: Are they that kind of conference rooms then or they’re actually training rooms?
NOEL: …they look like training rooms. There have rows and there are big screens at the front and one case, also big screens that turn to the back that duplicate them and rows and chairs and things like that. Sometimes I would actually prefer, for smaller groups, more of a conference room style layout because I think that encourages people to interact more. But no, our actual physical layout is sort of what you would think of as being a training room. Its several rows of tables all looking up at screens at the front.
CHUCK: Uh-huh. And so you just hook your laptop to a projector?
CHUCK: and do the training there?
NOEL: Yeah. I have some course; basically a slide deck with some examples that I’ve developed. It’s a presentation punctuated by hands on exercises. That’s how we do it right now. I’m not going to defend that as being the best of all possible.
CHUCK: If you could change any part of that, what would you change then?
NOEL: Waterslides would be awesome. I always wind up wishing that I was more adept at balancing the lecture with the hands on stuff. I almost always walk out feeling like I’ve done one of the other too much.
CHUCK: Right. I think that’s one of those things that probably takes practice though. Have you done any online training?
NOEL: Like me leading online training or…?
CHUCK: Yeah, leading online training.
NOEL: I have not. Although I suspect it’s on my future.
CHUCK: [laughs] Do you have any guesses to how you would approach that? Assuming you have a tool like go to a meeting or something that will allow you to share a screen and you can talk into a microphone and it’ll get transmitted to the…
NOEL: Actually I’m starting to think about that to start it. To be able to better hit distributed sites. I don’t know. I think that, one of the things that I do like about the workshop is at least the ability or the activity for people to just ask questions. And you don’t want to like go to meeting stuff can quickly turn into when we broadcast. And one of the things that I think that I would probably do is not try to do everything in one shot and to break it up into smaller pieces and have people do exercises on their own in between them rather than try to do a 6-hour single shot. I think that you’re testing human endurance for like a 6-hour web meeting. So, that’s one way that I would change the structure a little bit.
CHUCK: Yeah. I can see that it’d be kind of hard to be strapped to your chair for 6-hours. The only problem I see there and it’s kind of what you said as far as the difference bet the in-person training and the online training is, that you can walk around and see what people are doing and provide feedback and help them out. There really isn’t a terrific online system for that, that allows you to kind of get a view into where they’re at and where they’re struggling because you can’t virtually wander through your room or lecture.
NOEL: Right. And you can’t really share screens. There isn’t really a set up to share screens with all that many people. I’m not necessarily sure that they would be effective. I mean it’s not actually something that I have to dig up but it’s something that I started to think about in terms of potentially leveraging existing tools. That’s one thing that I’m thinking about.
CHUCK: Right. That makes sense. I guess you can always have them commit code to GitHub or something. At least you have that much of visibility into how far they have gotten and where they have their struggles.
NOEL: Yeah. I haven’t played with that but it’s actually definitely on my list of things to look up.
CHUCK: Can you put a link to that? Oh, there you go. We’ll give the link on the show notes.
JAMISON: Yeah. It’s pretty amazing.
AJ: So what about “Code Academy”? Any thoughts on that one? I’ve heard some good things.
CHUCK: Aren’t they out on Chicago near you?
NOEL: The Chicago is not called that anymore.
CHUCK: Oh. So what are your thoughts on the kind of “Code academy” or online code school or in person code school arrangement?
NOEL: Chicago one is an in person school and I don’t know much about the San Francisco code… AJ put a link up for the one that I’m not from. So there’s a limit to how much I’m willing to say about things that… I just don’t know. [laughs]
CHUCK: It makes sense to me. I don’t know if that appeals to everybody. So, some people I think would really benefit from something like that, where they’re trying to make a career change whether it’d be to a different language or maybe a different area of expertise altogether, you know, from accounting to programming or something. if it’s worth it for them to go and sit through a course for however long 3 weeks, 6 weeks , 8 weeks, whatever, however long they go. That kind of thing that makes sense to me in the sense that, you kind of get this knowledge dumped all at once. I worry a little bit about people’s experience, but like you said Noel, I don’t have a lot of experience with them, so I don’t know exactly how effective they are.
NOEL: … calls itself the starter league; has a mix of course where normal course and it’s been a while since I’ve seen what their actual courses are. And they also pair people up with mentors which are people in the community locally, that the students can be with and show their code to and get some feedback on their ideas. So, that that can be a pretty powerful model. I think that there’s a limit to how much experience you can give somebody in that timeframe. I think it’s the mix of having sort of a traditional classroom with mentors that are available to help you out can be pretty powerful.
CHUCK: Yep. Yeah that makes sense. Alright. Well, one more question. And this is along the line with something you brought up a minute ago where you were talking about the start-up league or Starter league or whatever it is and you said that they pair people up with mentors? Is there a good way to find a mentor that you can work with? Most of the mentors have been people that I’ve actually been a co-worker to. Are there other good ways of finding folks that kind of get you on the right path?
NOEL: If you’re just sitting around looking for a mentor, it kind of depends on where you are. Like in Chicago, there are a lot of user groups in Chicago. And if you were relatively a novice, one of the pieces of advice that I can give to these novice developers is to go these meetings that have topics that you might be interested in and talk to people and try to find people who might be interested in helping you out. My experience is that, a lot, but certainly not all, but a lot of expert programmers tend to be pretty happy to share their expertise with people who are just coming up. I don’t think that’s universal, but I think a lot of people are. And that’s one way to find them if you’re not in an area that has that, then I think you need to try and find and I think the next thing to do is to look online and try and find online groups where experts or where people of some expertise just hang-out and see if you can get somebody, ask nicely, see if you can get somebody to look at something you’re doing and give you some feedback.
JAMISON: I think one of the keys too is demonstrating some kind of proactivity and interest so. If you’re hanging out in the IRC channel a lot and you’re asking good questions or you are asking questions on the mailing list, that’s a good way to show that you’re interested and motivated to learn. But, if you just find someone that you don’t know and have never interacted with, and just email them and say, “Hey, do you want to spend hours of your time helping me even, though we’ve never talked?” But they might still say yes, if they’re really nice but that’s a huge gamble for them.
NOEL: Yeah. I think you’d have a sense of proportion about what you’re actually asking people to do. Randomly emailing people you don’t know is not reliable to be the most effective way, but if you find an online community that shares your interest and you can start contributing to that community, then the other members on that community are going to be interested in, presumably interested in helping you out. But again, it starts from finding the community and being a part of that whether it’s online or not.
CHUCK: Yeah. I think another good approach that’s similar to this is, start writing your code and then ask questions that are related to the code that you’re writing. And that way, you can give them both context and a good way of reaching out and giving you a finite answer because its, “Well, I’m trying to do this and when I write this code, it does this”. And then people know where to guide you and how to help you fill in the gaps in your knowledge.
AJ: I would add, to try and be in a group that is smaller because you’re more likely to get more help there. Like if you’re go into the go community, you’ll probably find more people that are skilled, and enthusiastic and willing to help, than if you go into one of the larger communities, where… it seems like as a community grows it makes it hard and people become more jerks and their like “Oh, you’re an amateur? You don’t know this? You don’t know the basics? What an idiot.”
NOEL: I think that depends on the community that you’re in, but I think that again, it’s worth trying to be In a place where you can observe and try and get a sense of who’s going to be receptive to you or not. I’m just going to say that if your question’s focused enough, Stack Overflow is a good place to help by definition; people who are helping you there are volunteering and are interested in helping people out. But you need a pretty focused question to have that be fruitful.
CHUCK: Yeah. All right. Well, I think that we are at the end of our time, Jamison, what are your picks?
JAMISON: Alright. So, as per tradition, I have one music pick and a couple of other picks. My music pick is an album called “Shrines” by Purity Ring; it’s just beautiful, female vocals and pop stuff. It’s amazing. It’s pretty great. That’s been one of my soundtracks for the past week.
My other pick is an essay by Bret Victor. He’s the guy who had that amazing presentation about inventing on principle and just general all around brilliant thinker about teaching and communicating information. And it’s called “Learnable Programming”. It’s kind of a reaction to the Khan Academy Computer Science Teaching UI, but it just goes on to his ideas on how you make teaching programming easy for beginners. But the best way to communicate all of the knowledge that’s wrapped up in that kind of program, it’s really long and it has beautiful illustrations and visualizations and it’s a work of art in its presentation and in the content it contains. So, it’s great.
And then my last pick is another really long one called “Mob Software” by this guy named Richard Gabriel. He wrote that worst is better essay and he’s kind of famous. It’s about how good software comes out over lots of people doing lots of different things that they all find interesting, not about central command and control like higher people organizations. So, been doing a lot of thinking about deep thoughts. Those are my picks.
CHUCK: Awesome. AJ, what are your picks?
AJ: Okay. So, first off I would pick Monoprice because I love them. They have really nice thick cables for cheap and I was trying to hook-up my projector to my Wii and it’s like 35 feet across the room and I was just using that super cheap RCA cables and picture is kind of fuzzy. And today, the cable I ordered came in so I’m gonna go home and try it tonight and see if pictures are coming a lot clearer and I expect it will. But I love that for the price of cheap cable at Best Buy, you can get like excellent super monster size cable at Monoprice.
Also, I think I picked this before. I’m picking it again. Zreo which, I guess that’s how you might say it. It’s Z-R-E-O, Zelda Reorchestrated. I just love listening to music. Particularly the Wind Waker soundtrack they’ve put together.
CHUCK: Awesome. Alright. So I’m going to put in a few picks here. The first pick I have, I was using the Tweetbot beta for Mac OS, and my Mac OS was acting up on me. It turns out it was actually a power saving setting and the fact that the solid-state drive that I have Mac OS installed on, if you put it to sleep, it will not wake up again unless you reboot the computer. It took me a while to figure that out and I reinstalled the OS and I lost Tweetbot but I’ve been using the official Twitter app. and I really like it it’s a lot like Tweetbot. There are a few things that I like about Tweetbot better but for the most part, I’ve been pretty happy with the way this works. The official Twitter app for Mac OS is a pick.
And another pick, I’m not sure if we picked it on the show or not, I’m pretty sure not, but I’m just gonna pick it anyway, there’s an application out there for Mac it’s called “Fluid” and what fluid does is it basically encapsulates a webpage into an application. And so, you get an application .f file your applications folder and then you can run whatever you want. So I have like Google Calendar running in one. I’ve had a few other things running in it. The only downside is like, one of the things that I do with my email actually uses a Chrome plugin and so, for my email I actually have to use Chrome. So I can’t use fluid, or Mail plane or anything like that. But other than that, it’s been really, really nice. If you have a website that you visit a lot, you can just pull up and you want it in your own apps so that you can launch it from launch bar or whatever and that’s a good way to go. Noel, do you have some picks for us?
Well, so I’ll talk about a book pick, I was trying to think of a good book pick for this. I want to mention Charles Stross’ Laundry Series as being a series of books that tends to appeal to programmers. The main character is kind of an IT computer Hacker. And the book is a fantasy series about sort of Lovecraftian horrors, mixed with computer science.
JAMISON: Oh my gosh! I think this book was written for me.
NOEL: Many people have that reaction. So yeah, they start talking about in this universe’s various kinds of computations are actually how you summon demons. The first book, I think that has a reference to the suppressed 4th Knuth book, with all of the demon-summoning.
JAMISON: [laughs] It’s awesome.
NOEL: Yeah, it’s pretty awesome. And let’s see, one other thing that I wanted to bring up, a musical pick, sort of little off beat musical pick, it’s a band called “The Lisps” and an album called “Futurity”, which is actually a soundtrack to a musical that is sort of a steam-punk. I guess I’d have to describe it as a steam-punk computer musical. The main character is a civil war veteran who meets up with Ada Lovelace lovelies to build a steam-powered mechanical brain. And the music has certain… I don’t know, I like their music. It’s kind of indie, a little roots-ish. It’s songs about artificial intelligence. So, how can you go wrong with that?
CHUCK: Awesome. I have some family members whose intelligence must be artificial. But, anyway…
JAMISON: [laughs] Hope they’re not listening.
CHUCK: They never do.
AJ: [laughs] Because you are too kind Chuck.
CHUCK: Yeah. Anyway, awesome. Sounds good. Well let’s wrap this show up. Thanks for coming Noel.
CHUCK: Awesome. I don’t think we have any announcements, so we’ll just call it a podcast and we’ll catch you all next week.