JavaScript Jabber

JavaScript Jabber is a weekly discussion about JavaScript, front-end development, community, careers, and frameworks.

Subscribe

Get episodes automatically

055j

055 JSJ Web Developer Skills


Use this link and code JAVAJAB to get 20% off your registration for FluentConf 2013!

Panel

Discussion

00:57 – What does it mean to be a “web developer”

  • “T-shaped skills”

11:01 – Minumum level entry skills you need to become a web developer

19:39 – CSS

24:24 – Mid-Senior level skills you need to become a web developer

Picks

Next Week

Marionette.js with Derick Bailey

This episode is sponsored by

comments powered by Disqus

TRANSCRIPT

[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.] [This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.] JAMISONHey guys and welcome to JavaScript Jabber. I’m your guest host today, Jamison Dance. Chuck is at Mount West Ruby Conference today and we have a bunch of panelists today. The first one is AJ O’Neal. AJ:  Yo! Yo! Yo! Coming at you as live as I can from Provo, Utah. JAMISON:  We’ve got Merrick Christensen. MERRICK:  What’s up? JAMISON:  And we’ve got Joe Eames. JOE:  Hey, how’s it going? JAMISON:  Today, we’re talking about just general web development skill sets, like what do you need to know to be a web developer? We should probably start off and define what a web developer is first because I think that it’s a really overloaded term. What do you guys think it means to be a ‘web developer’? I’m doing air quotes right now. JOE:  Merrick and I have had some conversations about this and it’s like I feel like his opinion of what a web developer is, is slightly different than mine. And maybe I’m coming more in line with what his definition is. So, I want to hear his first. MERRICK:  My definition? JOE:  Yeah, go. MERRICK:  So, one of the things that I see a lot of people saying as a web developer is people who come from traditional software engineering backgrounds and they come thinking that they can avoid HTML and CSS altogether. I think that’s a really dangerous approach because then you end up moving too much into JavaScript. And then, you have the opposite problem where people just don’t understand programming well and they end up with sort of jQuery spaghetti code. Which I think is okay for a lot of the brochure style sites, a lot of the maybe WordPress or content driven sites you can get by with just being really solid at HTML/CSS and then below average with JavaScript. But I think if you want to be a web application developer, you’re going to have to be solid on all three of those technologies, CSS, HTML, JavaScript and depending on the app that may include CSS preprocessors et cetera. JOE:  You said web application developer, right? MERRICK:  Yeah. I think there’s a difference. JOE:  Yeah, okay. For mine, one of the things that I feel like is I’m weak with CSS, right? And so, I kind of have this disdain about people that are like, “Oh, you don’t know CSS, huh? Well, that’s a problem.” And I want to say, “Well, yeah I’m not great with CSS.” I can tread water. But I can’t take a screen shot that some designer puts together in Illustrator and then turn it into a web page and feel like I’m doing it right. I always want to turn to an expert and say, “Hey, what do you think of this layout?” There might be a few things I’d be really struggling with about getting some pixels perfect. So, I’ve always been kind of this disdainful like, “I’m a web programmer. I know how to program really well with JavaScript. I understand HTML and CSS well enough to maintain them and deal with them but I don’t feel like I’m an expert at that.” Merrick’s always been giving me a hard time. MERRICK:  Yeah. I still think it’s a safe approach. It just doesn’t sit right with me. JOE:  So, I’m coming around to his point of view that if you’re going to be a web developer, you’ve got to know HTML, CSS, JavaScript equally as well. MERRICK:  Yeah. That’s definitely my point of view. JAMISON:  So, I assume you guys aren’t talking about the server side stuff. You guys are talking solely about the browser. JOE:  Yes, we haven’t even mentioned server side. JAMISON:  Unless you’re doing Firebase or one of those hosted, do all your backend stuff for you, you need a server. Do you think that should be the same person that’s doing all the server stuff and doing all the frontend stuff? MERRICK:  I think it’s important to have T-shaped skills, right? Like you should know enough about how the server works, about how to pull things out of a database, how to send those down to the client, how the client renders them. But I think if you spread yourself too thin in trying to be the master of all of these things, you’re going to end up not being terrific at any one of them. JOE:  So, did we avoid the question about what is a web developer? JAMISON:  Yeah, we kind of did. MERRICK:  One who develops for the web? [Laughter] JOE:  We’re specifically saying… JAMISON:  You can’t use the word in the definitions. JOE:  That could be mobile web apps but not like mobile development. MERRICK:  One who sends texts over HTTP through a browser? [Laughter] JOE:  I think probably the universal agreement would be you are not a website developer, right? So, you’re not just throwing together an informational static site. You’re actually doing like a real web application that requires JavaScript — it requires all three of those things, HTML, CSS, JavaScript, and a backend. MERRICK:  It’s hard though because you can throw together informational sites, really powerful informational sites without being really powerful at the backend because the tooling is so great. One thing I see is a lot of web developers who came from maybe like an Objective-C or Java world, and I’m not trying to be critical, ended up doing way more custom work on the backend than they have to because for a huge majority of the sites, something like WordPress can go such a long way. I know it’s like, “Ah, PHP is gross.” But the truth is that you’re doing a lot of work if you aren’t just accepting these kinds of solutions. JOE:  Right. MERRICK:  So in other words, you can get a terrific amount done by just understanding a little bit about the backend, building on top of some sort of platform or even a framework like Rails. Nothing against Rails or any of these other kinds of developers but they’re probably not as — well, Rails is… JAMISON:  It’s not that Rails is not as knowledgeable, it’s that you can be not as knowledgeable and still get a lot done. MERRICK:  Exactly. JAMISON:  You could be a super excellent Rails developer but you can also be a super noob and still get some stuff pumped out. JOE:  Yeah. And the same thing is true with like WordPress, or Kohana, or Cake, or Symphony, or Django, it doesn’t really matter, right? Like those frameworks are just built to get a lot of stuff done fast and they lower the barrier of entry to programming as well. Like I’m confident I never would have been able to get into development if it wasn’t for the web because the barriered entry for the web is small enough for me, someone who didn’t know anyone who could program was able to pick it up. If I were to try to do that with C, it would have been a much different story. JOE:  Right. So, I’ve been developing website applications since 2000. MERRICK:  Whoa bro! I was 10 years old. [Laughter] JOE:  You’re not allowed to say that on the podcast. MERRICK:  I was making PowerPoint stuff. JAMISON:  Joe, do you get that every day when you’re working with Merrick? Like, “I’ve been doing this since you were ten years old.” JOE:  I should do that more often. But I think that I would call myself a web developer definitely back then but what I knew about HTML and CSS and I was doing .NET, not from the very start but as soon as it came out, we started doing .NET. And what I understood about doing web development has radically changed. MERRICK:  Back then was a .NET, it was ASP, .NET which is basically like PHP. JOE:  I originally did ASP, .NET came out in like ’01, ’02. MERRICK:  I think it was ’04, wasn’t it? JAMISON:  Hey, you were 14 then Merrick. Come on! [Laughter] JOE:  So, I think a web developer from a very generic perspective is just like what Merrick said, anybody that develops for the web. But then, there’s like this kind of concept of frontend developer. MERRICK:  Well, the truth is that since then, the web has gotten significantly more complex. So, the expectation for what a web developer should be able to do is way higher because web applications are getting more and more significant. Like last week, we talked to Dave Herman about asm.js, basically just highly optimizable JavaScript code that allows people to target JavaScript from C or C++ or something that you can script in and then you can get the highly optimized code with ASM. Nowadays, to understand all of HTML and that platform, is a really difficult task. You have to understand, for example, Web Audio APIs, Web Workers, the File System APIs, Geolocation APIs, Web Notifications. The platform has grown so much which is awesome because it’s been able to stimulate a lot of innovation. But as such, web developers are a lot more disparate in their quality. JOE:  Yeah. We moved from the browser of being just a very, very, very thin rendering layer to now being almost the core. MERRICK:  Yeah. You can do so much in a browser these days and that’s a beautiful part of it. But that also means that when somebody applies for a web developer job, they could either mean, “I can build significant apps.” Or, “I’m a web brochure style developer.” So, it’s kind of you don’t know what you’re getting with that title which is why I’ve kind of adopted the web application developer mantra. AJ:  I like that distinguishment because there’s a lot of, to the lay person, and the lay person in a lot of cases means your employer, they don’t know what code is, like they don’t necessarily really know what the difference between JavaScript and HTML and CSS are, right? So, one of the things that bugs me is when people are like, “Oh, yeah! We have this great developer, dah…dah…dah…dah…” Like, “Okay. Yada…yada…” Well, you’re talking about it and then it turns out that they just do like HTML. Well, that’s not code, that’s not really a web developer. That’s just — I don’t know what you call it. And I’m sure they feel the same way about us because then there’s these people that just do the HTML and CSS type stuff and don’t really mix in with the JavaScript and they just kind of take the WordPress sites and edit the templates. Are they a web developer? Well, yeah. Really they are, they’re developing the web. They’re not coders but they’re still web developers. MERRICK:  The thing hat people need to realize though is you can do 80% of what’s on the web with being decent at WordPress and pretty decent at HTML and CSS. Huge majority of resources on the web don’t require significant development capacity. AJ:  Right, because there are more pages. MERRICK:  Right, there are more pages, there are more resources. JAMISON:  If you go by the percentage of stuff that people use, I bet that’s not true. AJ:  Well, yeah, because YouTube is the number one site on the internet right now, isn’t it? JAMISON:  Probably. AJ:  I think that YouTube searches are now… [Crosstalk] MERRICK:  …Modern Pop brochure sites, I think you’re right in terms of usage. Like Facebook is getting a lot more usage. [Crosstalk] MERRICK:  But by just pure sites in existence, a huge majority of them are — I mean, they’re probably still even rocking Frontpage. JOE:  Alright. So, we talked about what a web developer is, let’s talk about what are the minimum skill sets to be an entry level web developer. JAMISON:  So, while you guys are talking about what a web developer is, I think this should be — you’re trying to talk about what a programmer is. It’s just so general. And I think the same thing’s going to happen with skill sets. There’s going to be so many different ones. I spend probably 80% of my time writing JavaScript on the server and the other 20% doing HTML, and CSS, and JavaScript in the browser. AJ:  Yeah. JOE:  Yeah, no doubt. JAMISON:  It’s very different with a very different skill sets. And I’m a lot stronger on the server than I am in the browser. I can find stuff in the browser but I think it’s kind of hard to nail down a skill set. MERRICK:  It is but that’s the thing that people have to realize, people who are learning to code look at whoever’s teaching them and have this expectation like, “I’m not going to be able to be hireable or whatever until I can match this person’s skill set.” But the truth is you can spend six months learning HTML and CSS and maybe just a dabble of PHP or Rails. And you can get hired and make pretty decent money on that skill set. I don’t know. JOE:  Alright. So, we were talking about the entry level jobs, entry levels into web developments. So, what are the entry level skills you need in order to become a web developer? JAMISON:  You’ve got to learn JavaScript, no matter what. [Crosstalk] JAMISON:  Even if you don’t do server stuff, you have to know JavaScript. JOE:  Not just talking about a layout designer on the web, not just a brochure builder. AJ:  So, I personally think that the most important skills you can have in terms of growth, not in terms of necessarily, like this directly corresponds to a dollar. But the most important things that you can do to start out with, is figure out how to make your life easier.  So, I think JSHint, Jade, Less.js, those are the first things to really make sure you have. That way, as you’re growing, you’re hitting the roadblocks with more error messages and more direction. MERRICK:  So, I’m going to counter that and say I agree. I subscribe to the opposite opinion. Browsers are merciful for a reason. AJ:  So that our lives can be living hell? [Laughter] MERRICK:  That becomes true as you need to maintain larger code bases. But for example, really what’s good in learning is to get feedback, preferably positive feedback. AJ:  That’s what I’m saying. Feedback would be like JSHint, Less.js, and Jade, they all give you feedback. If you do something wrong, you get feedback that you did something wrong as opposed to when you just shove it in the browser, you don’t get that feedback. MERRICK:  Well, it either looks like you wanted to or it doesn’t. So, I put an H1 tag, it looks like an H1 tag. With Jade and Less.js, JSHint I can see a better case for. But jumping straight to a preprocessor also means that you have a whole another barrier and you don’t know what you’re learning, whether you’re learning HTML or CSS. [Laughter] AJ:  I disagree having worked with two designers that did not work with HTML much before. And I got them on Jade right away and that was very helpful. MERRICK:  Which is interesting because Jade, I think that’s, nothing against the project but it’s just not for me, right? Like I try not to use Jade because I just don’t like it. It’s an abstraction layer and so is Less.js. And so, when you’re adding to abstraction layers, suddenly you have to understand — basically, you have to understand… [Crosstalk] AJ:  Listen, you won’t have the abstraction layer unless you use it. I don’t care if you use all the super cool features of Less.js in terms of the variables and all that, just I like that feedback of, “You’re missing a semicolon.” This won’t actually render correctly in a browser. JAMISON:  They are CSS Lint. AJ:  Yeah. That’s what I use Less.js for. And then, it’s nice to be able to just progressively enhance like, “Okay. Now, I want to throw in a variable.” So, you don’t have to start off with all the cool stuff. You can start off with just the feedback loop. MERRICK:  The trouble is you don’t know what you’re getting feedback on. You don’t know if it’s Less.js. AJ:  If there’s a missing semicolon, then you know that you’re getting feedback on a missing semicolon. MERRICK:  Yeah. But for example, say you get a syntax error in Jade, that’s a Jade syntax error not an HTML syntax error. JOE:  Okay. So, I disagree with both of you. MERRICK:  Jerry! Jerry! Jerry! [Laughter] JOE:  I think what you’re talking about is good stuff but I think it’s just level two. I don’t think that’s level one for a web developer. AJ:  Yeah. That’s what I’m saying. JOE:  Well, you were saying also that some of that stuff is like I don’t want the abstraction. I don’t want know what’s going on underneath which I agree that’s when you’re learning. [Crosstalk] JOE:  I think the learning with what’s going on underneath is level two as well, often. I mean, think about a lot of programmers who come in like Rails or something, you come in to Rails, you don’t know a lot of what’s going on. You’re using abstraction and you’re just learning to work within the abstraction, learning what’s going on. Okay, I was a .NET developer. I didn’t learn a lot about how .NET memory management worked until I hit like five years into doing .NET development. So, I relied on the abstractions. Now, that being said, I just think that the problem is where preprocessors are today, they’re harder to learn than plain CSS because there are just way more moving parts. Nobody yet has gotten together what basically what Visual Studio has done for .NET developers and say, “Here’s this thing and you only have to know a few little things to start building something with the web.” MERRICK:  And pay $10,000 to employ it. [Laughter] [Crosstalk] JOE:  It’s easier to learn just plain HTML, Plain CSS and for me, my one other requirement is JavaScript and jQuery. I’m going to throw jQuery down there. MERRICK:  jQuery? As a requirement? [Crosstalk] JOE:  Yes, requirement. You must know jQuery. MERRICK:  No! [Crosstalk] AJ:  I agree with the jQuery because jQuery takes pain away. It makes it so you don’t have to learn quite so much and you can get more work done quicker. MERRICK:  Wow! AJ:  I definitely think it’s valuable. [Crosstalk] MERRICK:  Yeah, that’s true. I wouldn’t call it a requirement though. AJ:  I think that jQuery is one of those things where if you’re going to be doing browser JavaScript, you need jQuery because otherwise, you’re going to be just wasting so much time reinventing the wheel wrong. JQuery does most of the stuff it does right. It just has weird names for its Ajax request things. JOE:  Level two can be taking out jQuery out of your skills or your tools. MERRICK:  I think it’s great to leave jQuery in. It just seems weird to make it a requirement but I can understand it. JOE:  There’s so much jQuery out there. It’s the number one most used web library that’s out there, JavaScript library that’s out there. So, if you don’t know it, you’re in a huge disadvantage. I mean, so many companies are like, “We use jQuery.” And you only have three skills and one of them is not jQuery. So, we’re not going of hire you because we think of your skills and you just don’t have… [Crosstalk] MERRICK:  But we’re talking about — I thought you said we’re talking about a web application developer. And a web application developer shouldn’t stop at jQuery. JOE:  No. Right, you’re right. MERRICK:  Whenever people ask me what it takes, I think less about like the specific technologies and more about the attributes. And I think that one of the most important attributes is just to not be afraid, like just be fearless. Because people get so discouraged. AJ:  Oh, definitely. Definitely. MERRICK:  People get so discouraged and they have this idea like developers are geniuses but it’s really not that way at all. It’s like if somebody had never read before and they’re trying to read, they would think everyone that can read is a genius. But that’s simply not true. It’s just that there’s this certain barrier that once you cross it, you realize that all of these things are really similar, they all have similar roots. And learning them is just an adventure. It’s not like something you have to be afraid of like, “Oh, I can’t believe I have to learn this thing.” That goes away and you have to have an attitude that that is not a problem. JOE:  I totally agree. Like, look at the people on this podcast, three of the four of us are actually pretty stupid. [Laughter] MERRICK:  Guilty! AJ:  So, wait! Was that a reference to you being the smart one or was that Jamison being the smart one? JAMISON:  So, the thing about that is Joe just proved he was the smart one because that compliment is ambiguous. So, everyone feels good about themselves. [Laughter] JOE:  Nice! JAMISON:  Yeah. Joe won. JOE:  Alright. I threw down, HTML/CSS, and jQuery are like the minimum barriers. That’s what I’m talking about. JAMISON:  Dude, I don’t even know CSS today. Like, what do you mean by ‘know CSS’? Know how to use it to make stuff out? Or know it holistically so that you can understand all the crazy interactions without having… [Crosstalk] AJ:  Know CSS as in don’t have it at all, just none of it. No CSS. [Laughter] MERRICK:  The question I ask is, if I give you a Photoshop document, can you lay it out with high fidelity? JOE:  I don’t think that’s — I wouldn’t put that as my minimum barrier to entry. MERRICK:  Oh, dude! I think that that’s like — there are kids in high school rocking that skill. [Crosstalk] AJ:  Here’s the deal, Merrick. So, remember how you said you just guess and check, right? So, you throw the thing in there, you see, does it look like what I expect or not? This is where I’m going to go back to the Jade argument. Because when you’re getting started and you’re missing an ending div tag, guessing and checking isn’t going to fix it. You have to have something to tell you like, “Hey, the computer should have done this for you. But for whatever reason, it wasn’t standardized that way. So, you have to go back and put this in the right place.” Like some of that, if you want to make picture perfect HTML/CSS combos, it’s not just guess and check. There’s a lot of research, there’s a lot of stuff that’s just completely unintuitive that you would only know. Like the whole — you have to create a relative div then you can put an absolute div inside of it. MERRICK:  People say that. But have you ever done actual drawing? Because once you’ve done actual drawing like old school, here’s the page, dirty certain pieces, repaint them, that is a significant increase of work than HTML/CSS. AJ:  Are you talking about drawing like in Java, like in College? MERRICK:  Yeah. Sure. AJ:  I would say that was actually a lot easier because the model that was used was more clear. MERRICK:  You like the more [inaudible] approach? AJ:  Well, I remember when I was doing one of those little games in Java at BYU, there was a grid layout that actually worked. I don’t remember what the system was called. I remember layering it, like it made sense. It wasn’t pretty. MERRICK:  That’s true. It’s just more work, right? AJ:  Well, it was less work to get it to behave the way that I wanted it to behave because the model was more clear. MERRICK:  But I just think that just speaks to your inexperience with CSS. AJ:  Okay. But I had no experience with Java at the time that I was using it and I had already used CSS several times. MERRICK:  I think you come from a more CS background, right? So, you’re more comfortable in the code layer anyhow. AJ:  Dude! I’m more comfortable with stuff that makes sense and CSS just isn’t logical. [Laughter] JAMISON:  Yeah. Merrick, you got to realize your biases. You came from a designer, right? JOE:  Yeah. MERRICK:  Yeah. JAMISON:  So, you’re saying everyone needs to know CSS in order to layout PDF pixel perfect. I mean, that’s what you did, that doesn’t mean that everyone needs that. I could probably do it. It would take me an inordinate amount of time though. AJ:  And as far as… JOE:  The majority of entry level jobs, you can get the majority of them without being able to layout a PowerPoint pixel perfect. I think you have to know the basics of CSS. If you know the basics of CSS, then you’re going to just… [Crosstalk] AJ:  What are the basics, though?  Like I would say the basics of CSS is maybe Twitter Bootstrap because that, you can at least rely on to get you somewhere. [Laughter] MERRICK:  Ahhh…I’m out, I’m going to leave. JAMISON:  We’re getting bogged down a little bit. I think we’ve agreed on something to do with CSS. Maybe we should move on to another topic. [Laughter] AJ:  Well, I’m just saying… [Crosstalk] JAMISON:  It’s in there somewhere. AJ:  I picked up Twitter Bootstrap the other day and spent like a good 45 minutes going through their site and everything. Maybe a little bit more. Maybe it was an hour and a half, I don’t know. But at the end of it, I felt happy about the world. [Laughter] JOE:  Alright. In order to keep the brevity up, we’re going to no-discussion. It’s just going to be list. What is your list, right? You can’t justify and nobody can disagree. What is your list of minimum skill sets for entry level web developers? I already gave mine. Merrick, yours is mine plus being able to layout with CSS. MERRICK:  Optimism. JOE:  And optimism, encouraged. AJ:  Jamison? JAMISON:  I’m going to add long walks on the beach to that. [Laughter] AJ:  No kidding! JAMISON:  I think you guys covered it. AJ:  Or at least long walks outside. JOE:  I think AJ’s covered his. His is more of the ‘learn the tools’. His is really start with those tools and don’t worry about the low level. So, let’s move on to what it is to be like a mid to senior level web developer. JAMISON:  Networking then. AJ:  Yeah. You got to know HTTP, Wireshark. JAMISON:  Yeah. You have to know what’s going on in those tubes that connect the Internet together. JOE:  Alright. So, you’ve got to understand the networking, the protocols. You’ve got to know all that. What else? AJ:  You’ve got to be able to lay it out pixel perfect without any flaw. JAMISON:  Crap! MERRICK:  I think having the tooling down, like understanding build systems. JAMISON:  I would argue. You need to be specialized in something. AJ:  Oh, definitely. [Crosstalk] JOE:  …in that T argument, you’ve got to be specialized in something? [Crosstalk] JOE:  Okay. So, you’ve got to be specialized in something but then you still, that T has that minimum set. The bottom of that T has got to be wider than it was when you were an entry level guy. So, what else is at the bottom of the T? JAMISON:  I think your T is upside down. It’s the top that’s wider. You have two L’s stuck together. [Laughter] AJ:  Well, that makes a really fat trunk then, doesn’t it? JOE:  It’s an upside down T, right? The bottom level is the wide part where you know a whole bunch of skills just not very well, and then the center part of the T sticks way up and that’s your specialization, you know that really well. JAMISON:  Okay. [Crosstalk] AJ:  All I can hear is we’re adding more verticals to our platform. I think we’re going to make millions of dollars right now. That’s what I’ll do. JAMISON:  So, if you’re still focused on something but you need to be at least passable in every layer. You need to be passable. If you’re a frontend specialist, you need to be able to just throw together a possibly crappy but at least some backend all by yourself. You need to be able to do the whole stack by yourself I think, even if some parts of it, you’re not very good at. And I don’t think you need to do that to be an entry level person. JOE:  So speaking of the backend, I would have normally just thrown out bit I think you’ve got to be conversant in relational databases and SQL. Does anybody disagree with that? JAMISON:  No. AJ:  You’ve got to have some sort of knowledge of what the data looks like on the other side. JOE:  Okay. So, conversant to that, you’ve got to know at least one if not two. At least one, I’m going to say one, you’ve got to know one server side technology well enough that you can tread water in that, right? AJ:  It might as well be Node because it’s super easy. JOE:  Well, there’s synergy going on. What about NoSQL? So, do you need to know NoSQL? AJ:  That’s such a broad category. That’s like saying, should you eat non-cereals for breakfast? I mean, there’s cereal and then there’s non-cereal. There’s a lot of stuff in non-cereal. There a lot of stuff in NoSQL. JOE:  I’m going to say NoSQL is not a requirement but you should at least understand what it is. AJ:  I don’t know what you mean. There is no understanding what NoSQL is because it means like a thousand different things. If you want to say like… [Laughter] JOE:  It’s non-relational. That’s what it is. You’ve got to understand that data can be put in non-relational format. AJ:  I would be a little more specific like say, playing with Mongo or play with CouchDB as opposed to NoSQL because they have different purposes. Like Couch does not serve the same purpose as a CSV does, or Mongo. JOE:  Alright. Anyway, so something to do with NoSQL is in there. Anything else on the server side that you should know? JAMISON:  I mean, it’s so broad at this point. I don’t know. It depends on what your specialty is. AJ:  I think Netcat. You’ve got to have played a little bit with Netcat. It goes back to the whole protocol thing. But if you can respond to your frontend from Netcat, just type out a couple line response. MERRICK:  What the fudge is Netcat? [Crosstalk] AJ:  Are you kidding me, Merrick? JOE:  What’s Netcat? AJ:  Oh, my goodness! JAMISON:  It’s a UNIX tool to do low level networking stuff. It basically lets you do… AJ:  It just opens up a TCP socket and you can like point your browser to it and then, you can just type back HTTP 200 OK. JAMISON:  So, it’s like a manual server, right? Instead of writing your application, you just run the little Netcat command and then you point, like AJ said, you point your browser to it and then when the browser makes the request, you tab over to your terminal and you type back the response. JOE:  Alright. MERRICK:  That explains why I’ve never been able to build anything ever on the web. Never done that. [Laughter] JOE:  I’m going to vote against that one. But let’s go to the client side. What do you got to know on the client side to be a mid to senior web developer? AJ:  Index DB. JAMISON:  I would say you have to be an expert in one of the MVC frameworks and you have to be conversant in more than one. JOE:  I wouldn’t agree with that. I would say you don’t have to be an expert in them but… MERRICK:  It’s so funny because everyone’s saying what their background is, right? And what’s been most helpful to them. Joe,… JAMISON:  It’s so true, dude. It’s so true. Good point. [Crosstalk] JOE:  That’s not extremely true. I mean, Knockout, I worked at Knockout four years ago. MERRRICK:  No, I’m mean about the backend MVC stuff. Were you not like just .NET, right? JOE:  Well, I did MVP and .NET for years and years and years. MERRRICK:  Okay. JOE:  I didn’t use ASP.NET MVC much. MERRRICK:  I’m sorry. I wasn’t trying to insult you. I was just saying it’s funny how I have this expectation because these are the things that have been most helpful in my career. Therefore, I think you should also do this. And you have that, and AJ. It’s just funny. AJ:  Well, don’t worry about him being all soft with you. I was trying to insult you. [Laughter] JOE:  I know you were.  JAMISON:  But it didn’t work. So, you did it poorly. AJ:  Screw you too, pal. JOE:  Jamison, you said an MVC framework. I’m not extremely sure I would agree with that but I would say preprocessors, you’ve got to know preprocessors. [Crosstalk] JAMISON:  …senior level person here? MERRRICK:  I’ve never seen mid level person here. JAMISON:  I don’t know if you’re writing a web app with zero MVC at all. It’s probably not a very large web app or you’re reinventing the wheel. [Crosstalk] JOE:  That’s not necessarily true. MERRICK:  Can we just call it MV*? JAMISON:  Yeah, whatever. Yeah, you call it that term. MERRICK:  If you’re doing ASP.NET postbacks, you don’t need… AJ:  What I’m hearing here is a framework that could be Backbone, that could be Angular, that could be Ember, that could be list of 10,000 items. That’s what I think I’m hearing. [Crosstalk] JAMISON:  Yeah. That’s a better way of saying it. [Crosstalk] MERRICK:  ….a web developer just being really good at Rails. It just depends on what side you specialize in. JAMISON:  That’s so true. JOE:  I kind of see — I mean, I wouldn’t necessarily disagree with you, Jamison. I’m just not necessarily sure I agree with you either. I love learning new MV* Frameworks for the [inaudible]. I started with Knockout and just fell in love with it, with what they could do over with jQuery. But I could do the same things with jQuery. It would be a pain in the butt. But maybe that is something that every web developer should know. Even if you’re doing a whole bunch of just a plain ASP.NET or Rails postbacks for delivering entire page every time you change your view. AJ:  I definitely think that you should have either used Rails or Django. [Laughter] JOE:  You’re such an elitist, which is funny because you’re using elite technologies. AJ:  No, no, no. I’m just saying so that you have experience with REST, so that you’ve seen a decent implementation. Maybe not the best implementation, but you’ve seen a decent implementation. JOE:  There are great implementations of REST of Java. MERRICK:  There’s so many great implementations all over the place. Other frameworks? AJ:  Sure, sure. Yeah, okay. Yeah, whatever. I just, I know that Django and Rails are easy to learn. They have a pretty low entry curve. And so, that’s why I throw those out there. JOE:  Alright. So then, we can agree on REST. You should know REST. AJ:  Yeah, that’s all I’m saying is that you should get that concept of how objects map to URLs. JOE:  Alright. Now, let’s go to the client side. AJ:  Do not use your freaking cookies to store which page you’re on. Have you guys run into any sites like that recently? JOE:  Alright. So, anything else? Any last thoughts on what you need to know to be a senior web developer? AJ:  How to write a Canvas implementation of the prime number finder. [Laughs] MERRICK:  Alright. We totally digress. JOE:  Yeah. JAMISON:  Yeah, right. It’s getting a little squirrely. JOE:  I suppose it’s time to wrap up. JAMISON:  So, anybody want to summarize what we’ve talked about? JOE:  I’m going to let you do that, Jamison. You’re the best at that. JAMISON:  We disagree. That’s my summary. But there’s stuff you need to know. I think the basics obviously are HTML, CSS, JavaScript. Then when you get mid or senior, then you need to specialize in something. You need to be able to be conversant in everything. That seems like what we kind of agree on. MERRICK:  The other thing that I think we all agree on is, don’t be afraid, development isn’t as hard as it looks from the outside. JOE:  My take away from today would be, whatever background you come from, if you come from the server and then you learn HTML/CSS and you don’t know CSS well, like me. I feel like I don’t do it well and you can’t do a layout, that’s something you really should learn. Like Merrick, the other day, said, “Hey, if you’re a web developer and you don’t know CSS 3 and the animations and transformations, then you’re really at a bad place because you’re going to be pushing stuff into JavaScript that doesn’t need to be there.” MERRICK:  The same thing’s true of layout properties though, right? Like, “Oh, I’m going to use JavaScript to make sure this thing’s full screen,” Or whatever. It’s like, “What? You’re just hanging that JavaScript.” JOE:  Right. You definitely, if you come from the server side, you just have to learn those better. If you come from the client side from a designer standpoint and you’ve moved into web development, you should know the servers better. You should know HTTP, protocols, back ends, and data storage better. That’s my take away. JAMISON:  Basically, there’s too much for any one person to know all of. That seems like the take away. [Crosstalk] AJ:  So, maybe a very key and important point would be to be a part of a user group and know people like Jamison who are ridiculously smart. JOE:  That’s a good point. AJ:  Or Joe, he’s ridiculously smart. JOE:  I became a developer when I met Jamison. That’s when I became a web developer. JAMISON:  [Laughs] Back in 2000. JOE:  Okay, should we go on to picks? JAMISON:  We totally should. AJ? AJ:  Yes. Oh, boy! Do I have things to pick for you? So, I was mentioning that Canvas prime implementation of finding prime numbers, that’s a real thing that Bret Little created and he shared at one of the Utah JS meetings. And I honestly thought it was the coolest thing ever. And so, I’m picking that. Also, even though Merrick was so quick to make assumptions about me and my past and who I am. Well Merrick, you don’t know me, okay? I used to make… MERRICK:  I’m sorry. I wasn’t trying to be rude. AJ:  [Laughs] MERRICK:  I’ve got nothing but love for you. AJ:  Thank you. I love you too in a very manly and appropriate way. So, I’ve done a bit of design in terms of like, flyers for school stuff or for user groups, for church things. So, I’ve messed with, mostly I did stuff in OpenOffice Draw. My first couple things were in Microsoft Publisher before I knew about OpenOffice Draw. But now, I’ve started using Illustrator and InDesign and I’m kind of falling in love because they are so smooth and refined. Obviously, not everybody wants to drop the 12 or 1500 or whatever it is to get it. If you’re a student right now, you definitely need to spend the $250 and invest in the suite so that you have it if you ever thing you’ll do anything with it. They’re such good tools. So, I’m going to plus one on Illustrator. And then, it seems like I had something else I wanted to pick but I’ll let somebody else go. I’ll come back around to it. MERRICK:  Sure. I can go. JAMISON:  Go for it, Merrick. MERRICK:  I’m going to pick Vagrant. It’s been pretty fun to learn and I really like the idea of isolated development environments that you can share without having people to set up their post machines a certain way. The other thing is Puppet and that’s a provisioning tool that I’ve really enjoyed working with. It’s kind of a declarative way to provision machines. And that is my picks. JAMISON:  Sweet. I’ll go next. I have two. Mountain West Ruby Conference is going on right now as we speak. That’s why Chuck’s not with us. And I’m going to pick it because it’s really good to have their live stream on. It’ll be over by the time you hear this. But they record all the videos and post them on Confreaks. And it’s one of the best regional Ruby conferences around. I think they had a DevOps day as well. So, if any of your interests lie in that area, you should check it out. My next pick is one that will not be over by the time this airs. It’s Texas JavaScript. It’s a JavaScript conference coming up April 15th and it’s also one of the best US JavaScript conferences. So, I’m really pumped for that. It looks really good and I think they’ll have the live stream in Confreaks as well. Those are my picks. So Joe, are you ready now? JOE:  Yeah, I’m ready. Alright. So, my first pick is going to be Breeze.js. It’s basically a data handling plug-in for JavaScript, takes over all your data handling. Works with, I know it works with Angular. I think it works with BackBone. My next pick is going to be Edge.js. That’s so I can node to .NET project. So, it lets you actually call into your .NET functions from your Node or call in your Node from .NET. So, that’s way cool. My last pick is going to be the show Arrested Development. They’re coming out with another Netflix exclusive season. So, Season 4. It’s releasing in May and the entire season is releasing all at once. I’m super excited about that because Arrested Development was, by far, the funniest show to ever be on Television. And so, I’m really excited for another season to come out of it. It’s going to be really weird, like all the episodes apparently are filmed or take place simultaneously but they all focus on one character. So, you can actually interactively be watching, see two characters interact, stop the episode, go to a different episode and watch that character’s episode up until that point and see them basically interact at the same point. So, it’s kind of crazy. AJ:  That sounds too cool. JOE:  Yeah, it’s like Meta, Meta TV. AJ:  Meta, there we go. That’s the word I wanted. That’s too Meta, man! JOE:  Yeah. Those are my picks. JAMISON:  Great! Thanks guys. Thanks for coming on the show. Next week, we have Derick Bailey talking about Marionette.js. So, he’ll be our guest if you guys want to read up and study up on that. You’ll be prepared for the knowledge bombs he’s going to drop. Any last words? AJ:  I did put some links to stuff on low level networking with Netcat and Node. MERRICK:  Cool. JAMISON:  Sweet! Yeah, I’ll put those in the show notes. Alright, thanks guys. We will see you next week.

x