JOE:
Just the three of us. We can make it if we try, just the three of us. You and I and him.
CHUCK:
[Chuckles]
JAMISON:
Yeah, that’s not bad.
[This episode is sponsored by Frontend Masters. They have a terrific lineup of live courses you can attend either online or in person. They also have a terrific backlog of courses you can watch including JavaScript the Good Parts, Build Web Applications with Node.js, AngularJS In-Depth, and Advanced JavaScript. You can go check them out at FrontEndMasters.com.]
[This episode is sponsored by Codeship.io. Don’t you wish you could simply deploy your code every time your tests pass? Wouldn’t it be nice if it were tied into a nice continuous integration system? That’s Codeship. They run your code. If all your tests pass, they deploy your code automatically. For fuss-free continuous delivery, check them out at Codeship.io, continuous delivery made simple.]
[This episode is sponsored by WatchMeCode. Have you been looking for regular high-quality video screencasts on building JavaScript done by someone who really understands JavaScript? Derick Bailey’s videos cover many of the topics we talk about on JavaScript Jabber and are up on the latest tools and tricks you need to write great JavaScript. He also covers language fundamentals, so there’s plenty for everybody. Looking over the catalogue, I got really excited and I can’t wait to watch them all. Go check them out at JavaScriptJabber.com/WatchMeCode.]
[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.]
CHUCK:
Hey everybody and welcome to episode 118 of the JavaScript Jabber Show. This week on our panel, we have Jamison Dance.
JAMISON:
Hello friends.
CHUCK:
Joe Eames.
JOE:
Hey there.
CHUCK:
I’m Charles Max Wood from DevChat.TV. And this we’re going to be talking about what skills you need to be a competitive web developer. And to kick this off, this is something I’ve been thinking about for a while. And basically, I’m not sure exactly where it came from. I’ve been talking to a lot of beginner developers. And they ask me a lot of questions like, “What do I need to know?” or “Do I need to just understand one framework like Express or Ruby on Rails or do I need to know more than that?” And it’s interesting because to build the really simplistic apps, it seems like you can just get away with knowing how to install a database and then knowing one of these backend frameworks and some HTML and you’re okay. But it seems like more and more things are moving into the area where you have to understand in-depth things at different levels.
And just to give an example on this, when I got started with web development, I was in high school. I was playing with GeoCities at the time. And so, I was just writing HTML and CSS. And I’d copy and paste some JavaScript if I wanted something fancy on there. Then after I graduated from high school and got into college, I was just doing stuff with PHP and again just the occasional JavaScript thing. And it seemed to mostly be fine. And then I got into professional web development and I really had to then understand a little bit more about the database. I guess I had to understand some database with PHP. But I really had to come to understand the database. I had to understand the framework I was working in, which at that time was Ruby on Rails. I had to understand jQuery. I had to understand CSS and HTML to a higher degree so that I could make things look the way they needed to.
And now, we have this profusion of things. So, at the database level, we have PostgreSQL, MongoDB and Cassandra and all of these different NoSQL options that all do different things really well. And then you’ve got all kinds of frameworks on the backend. And you’ve got people saying you don’t need to know them and some people saying you do need to know them and some people saying you only need to minimally know them depending on how heavy your frontend framework is. And it seems like more apps are moving toward having a frontend framework you have to understand too. So you have whatever database, whatever backend framework, whatever frontend framework, and then you’ve got these frameworks for the look and feel and widgets and stuff like that, like Bootstrap and Foundation and things like that.
And so, there are all of these different layers that sit on top of each other, that make up the stack that you’re going to use to build your web application. And so, I wonder, do you have to understand all of these things to be competitive? Or can you get away with specializing? I’m curious what you guys think.
JOE:
Well, first off…
JAMISON:
So, oh go ahead, Joe.
JOE:
I think we need some clarification. When you said the things that you need in order to be a competitive developer, you don’t mean one that competes in contests, right?
CHUCK:
Right.
JOE:
You mean professional.
JAMISON:
You need to know how to implement a binary search tree so fast.
CHUCK:
[Chuckles]
JOE:
So fast. I’m imagining competitive eating contests, but with programming.
CHUCK:
Oh, there you go.
JOE:
Because I think that would be completely awesome. Eat this hotdog while coding up an algorithm to do tree searching.
JAMISON:
Oh yeah. If there was a competition about answering those artificial interview questions like reverse a singly-linked list in place now. I bet there is one of those somewhere.
JOE:
There probably is.
CHUCK:
[Laughs] Now, what I mean more is it seems like a lot of the jobs out there require you to have understanding of all of the different parts of their stack.
JOE:
Right.
CHUCK:
Some of them are, “Well, we want an AngularJS guy.” So, they segment their team into frontend, backend, DBA, design. And then others, they expect everybody to have their hands in all the different parts of the pie. And so, you’ll see a job listing and it’s like you need to be familiar with these databases we’re using, these frameworks that we’re using, these languages that we’re using.
JAMISON:
So, I have a question. You guys have been developing software longer than I have been. And I remember the point when I realized, “Wait a minute. The amount of technologies is expanding way faster than the ability I have to learn it.”
JOE:
Yeah.
JAMISON:
So, not only do I not know everything. I’m going to start knowing less and less of the total amount of tech that’s out there as time goes on. Has it always been like that? Did that same thing happen to you guys or do you think this is, does this happen to everyone no matter when you program? Or is this a more recent development? Does that make sense?
JOE:
Yeah, that’s an interesting question. Chuck, go for it. [Laughter]
CHUCK:
So, my opinion, this is my opinion, it’s worth exactly what you paid for it, is that it’s always been expanding at about the same rate, which means that if you put the slope of a line on how much it’s growing, there’s always that much more to learn. But I think of it more as an exponential curve because there are more people involved in creating that technology and knowledge. So, it’s not just the slope of a line. It’s actually, there are more people in JavaScript so more people are doing things in JavaScript. And so, there would be more to know everything about JavaScript, similarly with other technologies. And we’re constantly inventing new technologies without always completely invalidating the old technologies.
JOE:
What year did you start programming, Chuck?
CHUCK:
Professionally?
JOE:
Mmhmm.
CHUCK:
2005.
JOE:
Wow.
CHUCK:
2006, something like that.
JOE:
I can’t believe this. I started programming in ’96.
CHUCK:
I was still in high school in ’96.
JOE:
Were you really?
CHUCK:
Yeah.
JOE:
Why am I so old?
JAMISON:
[Chuckles]
CHUCK:
Because you were born first.
JOE:
I just lost all credibility on this podcast, too. Everybody who listens to this is 24.
[Laughter]
JOE:
They’re all like, “What’s the geezer on there for?”
JAMISON:
For your wisdom, Joe.
JOE:
[Chuckles]
JAMISON:
You’re on here for your wisdom.
JOE:
When I started, I was starting in FoxPro. And I don’t know if it was because…
CHUCK:
Wow.
JAMISON:
I don’t know what that means.
CHUCK:
[Laughs]
JAMISON:
Is that a language?
JOE:
Yeah.
CHUCK:
Yes.
JAMISON:
FoxPro?
JOE:
It’s actually a combination language database.
JAMISON:
Okay.
JOE:
So, there’s a category of language products called the XBase languages. DBase, Clipper, and FoxPro are all part of it. Microsoft bought, crazy stories. But anyway, SQL Server…
CHUCK:
I was going to say Microsoft was a force behind FoxPro at some point.
JOE:
Yes. SQL Server eventually got a lot of its core technologies from FoxPro. Anyway, I started with FoxPro. And at that time, and maybe it was because I was new to the industry, but I remember not knowing about a lot of other things. I knew that there was C++ and then there were the older languages, Fortran and COBOL and things like that. But that was basic. You only knew, at that point you just knew about languages. And then there were databases. So, you could use FoxPro as a database, or you could use SQL Server as a database or you could use, I think IBM’s DB2 was available at this time. I’m pretty sure. And Oracle’s always been available.
CHUCK:
Ingres.
JOE:
Ingres, sure. I had never heard of that one. But I think at that time, I only knew, you had a more myopic view in that there were languages and there were databases and that was it. And you picked a language and did that for a while. Maybe you picked another language and did that for a while and got a new language. You learned some languages and you learned some databases, but there’s no web programming at this time. The web was out in ’96 and there were a few people that were building webpages, HTML and CSS. But nobody was doing much with it.
CHUCK:
Yeah, that’s what I was doing at that time. Yeah, I was in high school. I did a little bit of Assembly programming because I was into electronics and chip stuff, so I had an 8080 [inaudible] board that I sent signals into and get signals back out of and I’d program the thing. And then I was doing HTML and CSS.
JOE:
Right.
JAMISON:
Let’s not talk about my history and just assume I kind of know what I’m doing now, and leave it at that. [Laughter]
JOE:
Well, I think looking back, yeah it does seem like things are moving faster today, quite a bit faster. I do feel like that, maybe again because I just wasn’t as connected, because I was so brand new to the industry and didn’t know as much. But I also feel like now, when I introduce people to programming, I taught a friend of mine to program, a couple of friends, and then I’ve mentored a lot of people. It seems like you got to start off and talk about 20 different things. Back then it was like, “You want to learn to program? Great. Here’s FoxPro.” A couple of years later, Visual Basic came out. “Here’s the Visual Basic stuff, program and some books. Just learn it.” Do this one thing. And it was very straightforward. Nowadays, it’s not the same anymore. You talk about, maybe it is if you’re doing iOS apps.
JAMISON:
I was going to say, I have a friend, Dave DeLong who works at Apple. And he rage quit the web because of the number of different technologies you have to learn to build good applications. He’s a really smart guy. He’s one of the smartest developers I‘ve ever worked with. And he was trying to figure out how to deploy a WordPress site and then tweak some stuff on it and change the theme or something. He doesn’t know web programming but he just was trying to muddle through it as someone who is very smart, who knows how computers work. And he just got so fed up with it because it’s such a different experience having to deal with all these layers of abstraction that when you’re building an iOS app, you can focus on one layer, basically.
CHUCK:
Yeah.
JAMISON:
One set of technologies.
CHUCK:
I think that’s mostly true for iOS. I think there are a few parts of the iOS ecosystem that don’t work that way. But generally, it’s those parts that reach back out to the web or have the web reach back into your phone. And so, for example the push notification service that Apple has, it’s a web-facing service. And so, you have to have web-facing technology can communicate with it. And then if you have it connect to some APIs in order to get data or send data or authenticate or things like that, then again, you have to be able to reach out and do that stuff. But the rest of it…
JAMISON:
Yeah, that’s [inaudible] the…
CHUCK:
Is pretty much self-contained, including your data store.
JAMISON:
Yeah. Just to get something on the internet, you have to be able to deploy a server. And then now you’re doing DevOps and now you hate your life.
JOE:
What about backend as a service?
JAMISON:
That’s true, actually.
CHUCK:
Yeah.
JAMISON:
That’s a good point.
JOE:
I don’t know if it’s at the state where you can get new people utilizing it or not. I’ve never actually done any backend as anything with, any backend as a service/s. I haven’t done any Firebase or anything.
CHUCK:
I think they work for certain problems and not so much for other problems. So, it depends on how creative you are with the constraints that it puts on you and how well your problem fits into the space that their designed to solve.
JOE:
Right.
JAMISON:
It seems like you would have to know something about programming already to be able to evaluate whether those would work for your problem or not though.
CHUCK:
Yeah.
JAMISON:
Maybe not. I don’t know. I’m not speaking from experience.
JOE:
But can you solve basic problems, can you create basic web apps…
JAMISON:
Sure.
JOE:
But not do much [inaudible] backend if you’re just using some kind of backend as a service.
CHUCK:
Sure, if all you’re doing is data storage.
JOE:
Right.
CHUCK:
They don’t do the behavior parts of things very well, because usually that’s pretty customized to what you’re trying to do. But a backend as a service usually has maybe some logging features and some basic data storage. And some of them have some basic data transformation parts to them.
But that’s the extent that they go to.
JOE:
But I can imagine…
CHUCK:
Because if you’re going to reach further than that, you’re talking about custom stuff.
JOE:
Right. So, getting back to the original question about the explosion of technologies today, Jamison, I can imagine a few… if I had not gone into web and stayed with .NET and C# and just done .NET Windows applications which I’m sure there are people out there doing them, right?
CHUCK:
Yeah, they’re called video games. [Chuckles]
JOE:
Maybe it doesn’t feel so overwhelming, because Microsoft comes out with a new version of C#.
So, same thing if you’re doing Java native applications, right? You’re probably getting every now and then a new technology, coming in a new version of Java, some other third-party toolkits you’re learning. But mostly, you’re probably not switching out databases every other year. You’re probably using the same database, hopefully not Oracle because Oracle’s terrible. [Laughs] But maybe it’s just when you get to certain areas like the web, it really feels like it’s just going nuts. You can’t keep up with it. But so much of programming is on the web. It’s so hard to be a programmer and not do some web stuff here and there.
JAMISON:
We’ve wandered afield of our original question, though.
CHUCK:
Yeah.
JAMISON:
May I ask it one more time and we can get back to it maybe?
CHUCK:
Yeah.
JOE:
Has the pace always been this fast? Is that the question?
JAMISON:
No, no. That was my question based on that. But the original question was: what are the skills that you need to be a successful web developer today, right?
CHUCK:
Yeah.
JOE:
Right.
JAMISON:
So, the reason I asked that question about has the pace always been that fast is because I think the most important skill is the ability to learn new skills, because what you’re going to do in 10 years is probably not what you’re going to do today.
JOE:
I think that’s true for a web developer.
CHUCK:
Yes.
JAMISON:
So, you always, your knowledge is, I mean this is true in all of programming but especially in web development, because it changes so much. Your knowledge is always going out of date. And even if it’s not changing, there’s always another layer down the stack that you can learn. So, if you are an expert at CSS, you can learn about backend stuff. If you’re good at backend stuff, you can learn about OS level stuff, or distributed systems, or something like that. There’s such a huge amount of knowledge out there.
JOE:
Oh, yeah, totally true.
CHUCK:
Yeah, but it seems like when I get somebody in that wants to learn Rails or wants to learn something else, I still have to get them set up with a database, I have to get them set up with just the framework, Ruby on Rails or whatever, and then all of the other things come into it. And they at least have to have some basic understanding of HTML and CSS and JavaScript. Even if they’re just going to ignore frontend frameworks and their capabilities for now, just to do a basic app they have to have some basic understanding of jQuery. And then they have to understand everything else the rest of the stack on the way down.
JOE:
Yeah.
JAMISON:
I know it’s cool to hate on MongoDB, but I think this is a decent case for it. If you are learning development and you’re learning, I don’t know, there’s so much to learn already. If you just eliminate the need to set up your tables and I don’t know. I think that’s a good reason to use MongoDB. Because it’s not like you’re going to need to roflscale your first point of sale app that you’re making to learn programming or something.
JOE:
Right.
JAMISON:
Or some other NoSQL technology that’s a little bit, so you don’t have to deal with the kind of administration overhead of SQL databases.
CHUCK:
Yeah.
JOE:
Yeah. No, definitely. I agree with that. Mongo’s a great place to start.
CHUCK:
Well, but the other thing is that I think certain problems lend themselves well to certain databases. And in my case at least, as a freelancer or a consultant, a lot of times I need to be able to explain to people what the tradeoffs are and say, “Hey, look. For this particular application, you may want to consider going with something else, something other than PostgreSQL or MySQL.”
JAMISON:
But, that’s not learning to program. That’s working for clients, right?
CHUCK:
Yes, but…
JAMISON:
So, you’re saying that you want them to be able to, I don’t know. I don’t know what you’re saying.
CHUCK:
Yeah, but I think you should have enough experience to pick the right tools.
JAMISON:
You’re not going to have that experience though, if you’re just starting out.
CHUCK:
No, I know.
JAMISON:
You have to get it somehow. I don’t know.
CHUCK:
But in general, where should experienced developers be at to be competitive?
JAMISON:
Oh, you’re not saying assuming you’re starting from nothing.
CHUCK:
Right.
JAMISON:
You’re saying you’re creating the idea web developer. What would this person know?
CHUCK:
Yeah. The reason I was thinking about this is that I started working on a Ruby on Rails course that I intend to put out there for people to sign up for and pay for. And I realized that a lot of employers are looking for much more than just the capability of writing an application in Ruby on Rails. And so, I was thinking okay. Well, where should the “you are now a proficient web developer”, where should that track in?
JAMISON:
I don’t know. I don’t think it ever ends. [Chuckles] Some days, I don’t feel like a proficient web developer. My CSS knowledge is pretty weak, and that’s a big deal. I don’t know.
JOE:
Yeah. It can be a moving target too, right? What’s okay today isn’t necessarily okay tomorrow. I think we’re fast approaching the point where it’s hard to not, you certainly can’t be ignorant of NoSQL in today’s day and age. Even if you don’t have direct experience with it, you at least need to understand it because you’re going to have to make educated decisions about it, about relational versus non-relational when it comes to data stores. So, you can’t be ignorant about it. But it could be that we’re going to see the day where people are going to say, “You don’t have any experience with a non-relational database? That’s weird. How can you consider yourself to be a senior level guy if you don’t have experience with non-relational?”
CHUCK:
Yeah.
JOE:
Not that it can’t happen.
JAMISON:
And that is where Impostor Syndrome comes from.
JOE:
Oh yeah.
CHUCK:
[Laughs]
JOE:
That’s totally true.
CHUCK:
Yeah. But one thing that does occur to me, I’m going to jump back to beginner developers for a minute, is that we expect them to have gaps in their knowledge, right?
JOE:
Yeah.
CHUCK:
So, we don’t expect them to see and know everything. But as people move up, we expect them to have a certain level of experience with things. And so, that’s what we’re talking about. NoSQL versus SQL or have at least built some project even if it’s a little dinky personal project with a frontend framework, so that they understand why you would want such a thing. So, is there a
certain level of experimentation that we’re expecting people to do?
JOE:
I think if you’re talking about qualifying for a lot of jobs, then yeah. Certainly, there are plenty of jobs out there where they don’t care if you have any NoSQL experience because they’re using relational. Right? Or they don’t care if you don’t have much CSS because maybe they have a guy that’s their CSS specialist on board or their app just isn’t CSS intensive. So, it’s fairly easy to work without it.
JAMISON:
It’s not CSS intensive. It’s just squares.
[Laughter]
JAMISON:
It’s just squares.
CHUCK:
Black ones and white ones.
JAMISON:
Yeah.
CHUCK:
That does lead to another question though.
JAMISON:
Query design.
CHUCK:
And that is should you specialize then or should you have this full set of skills? Are they going to hire you just to be AngularJS expert or the MongoDB expert? Or are they going to be looking for somebody that can fill that role but still has the other experience as well?
JAMISON:
Oh, man. I have a rant about this.
CHUCK:
Please.
JAMISON:
So in Utah, probably in other places as well, but I see locally a lot of, a trend of developers becoming AngularJS developers. And they love Angular, they use it for everything, and they think it’s a great tool. And they don’t know anything else about JavaScript. They’re Angular developers. Because that’s not the way I choose to do things, I think it’s, I look at it and say it’s bad. But I think it’s bad because you don’t have context to correctly evaluate your tools.
JOE:
Isn’t that just the evolution of the guys that just knew jQuery and didn’t know JavaScript?
JAMISON:
Oh, it is. But because Angular is the new default JavaScript thing, it’s now moved onto Angular instead of jQuery I guess.
JOE:
Right.
JAMISON:
This isn’t about Angular specifically. I think if it was any technology I would have the same complaints. But because it’s happening with Angular, I’m talking about Angular. Maybe that’s just the way of the world. There will always be something very popular and people will feel like that’s the only thing they need to know. And that’s the truth. If you know Angular well, you can get a job and that can be the only thing you know. And you can make lots of money.
JOE:
Yeah, but I think it’s different when it comes to web. Again, since I have a Microsoft background, I have a lot of analogies to Microsoft. Microsoft has frameworks for doing C#. But you can’t really learn those frameworks without learning C#. But you can totally learn web programming and learn, you could build websites with just jQuery and not know anything about JavaScript. And the same thing nowadays with Angular. And I think that’s because on the web, our abstractions don’t hide the underlying technologies. The frameworks that we’re building aren’t hiding JavaScript. They’re not hiding CSS. They’re not hiding HTML. Those underlying technologies bleed through a ton.
So, knowing Angular or knowing jQuery and not knowing the underlying technologies exposes you to a lot of problems in your coding that wouldn’t necessarily be true in every other stack. Again like in C#, because C#, the underlying technology underneath C# would be C++ or Assembly or something. And that doesn’t bleed through, really. So, as long as you know C# well, then whatever framework you’re using C# with, you’re going to learn them both. You have to. But with Angular or jQuery, you can do a ton and ignore JavaScript and go a long ways without learning JavaScript.
And then basically expose yourself to a lot of issues.
CHUCK:
Yeah.
JOE:
So, that would be my rant, not necessarily a counter-rant.
CHUCK:
It doesn’t just happen in JavaScript land either. I’ve seen this with Rails and Ruby where people knew Rails but didn’t know Ruby and it would get them into trouble because they didn’t understand the nuances of how Ruby thought about things. I’ve heard people complain about it with the different PHP frameworks and PHP, or Django and Python. They get into this area where it makes it more convenient to do specific things. And so, people just assume that they can get away with that in other areas. And what really happens is that the nature of whatever language they’re using or underlying technology anyway, bleeds through.
JOE:
Yeah, I can totally see that with Rails. My experience with Rails, I could see that same thing. So, maybe it isn’t unique in any way to web. Maybe your complaint is just the fact that those people who learn a framework and just go with it and never consider all the underlying pieces that are involved.
JAMISON:
Well, and I think it’s fine to be a huge fan of Angular. I think you need to be able to intelligently evaluate its drawbacks. So, if you are the world’s biggest fan of Angular, but someone can ask you what’s the worst part of Angular and you can answer that question, I think that means that you have thought it through and you’ve decided that Angular really is the best. But you know it’s not without flaws. I don’t know. I think I’m rambling now. But it’s just this unquestioning love without evaluation or consideration that something might be better or that it might change someday.
CHUCK:
I think that’s fair. One thing that I found with a lot of the frameworks out there is that they generally do things well for 60 to 80% of the problem space out there, depending on what you’re looking at. And so, understanding that Angular will do really well for say, 80% of the problem space out there, but knowing that it has limitations in the other 20% and maybe another framework like Knockout or Ember or something would do better there, I think people can make that, learn the distinctions and understand where the pain is.
But I’ve found with frameworks like Angular and Rails, you usually at least start solving problems in the way that the frameworks are designed for you to solve them. And then eventually you get to a problem where it doesn’t solve it well and you start fighting the framework. And that’s where you start to figure out where the boundaries are. And so, it takes a fair bit of experience to really know that.
JOE:
Yeah. Well, that still isn’t answering the question of what skills you need to have to be considered a competent developer.
JAMISON:
Because that question is hard.
CHUCK:
Yes.
JAMISON:
All of them.
CHUCK:
So, I want to come back to the specialization a little bit, because I’ve worked on teams where they really did specialize the team. So, you had the design guys and you had the frontend guys. In the case that I’m thinking of, they have the Flash guys. And then we were the backend guys and we provided basically an API that the Flash would connect to, to get its data. And then we played games with the DevOps guys to figure out who was going to be DBA for the day.
JAMISON:
That sounds healthy.
CHUCK:
Yeah.
JOE:
[Chuckles]
CHUCK:
Well, and that was something that we’ve…
JAMISON:
Not bitter about that, are you? [Chuckles]
CHUCK:
So, yeah. [Chuckles] Well, the DevOps situation was less than ideal. But there were circumstances around that. But the thing that was really interesting about the development was that eventually we decided that we really did need to understand each other’s stacks. So, we started pairing together as Rails backend people and Flash frontend people so that we could start to understand the other technologies, because the boundary became very painful.
JOE:
So, I think, or maybe there’s another interesting way to approach this problem, so I want to ask Jamison a question.
JAMISON:
Okay.
JOE:
Okay Jamison, you’re hiring a developer. It’s for a senior level position. Name a skill that you would raise your eyebrows at this person’s resume if they didn’t have this skill listed.
JAMISON:
Oh my goodness. You mean as a web developer?
JOE:
Yeah, web developer, senior level web developer. Or a set of skills, what skills would you raise your eyebrows at. Let’s start with just one. Pick one.
JAMISON:
Oh, geez. JavaScript?
JOE:
Okay.
JAMISON:
[Laughs]
JOE:
Alright. Let’s bypass the three obvious ones. They have to decently know HTML, CSS, and JavaScript.
JAMISON:
Yeah.
CHUCK:
Yeah.
JAMISON:
They got to know how to do stuff on the server. I feel like we’ve talked about this in a past episode. I think if you were a senior level developer, you can be specialized somewhere, but you need to be able to be at least competent everywhere.
JOE:
Right.
JAMISON:
So, you need to be able to create servers that give you data and manage your data. They might be crappy if that’s not your specialty. So yeah, I don’t know.
CHUCK:
So, they should at least be functional.
JAMISON:
Yup, yeah. You should be functional in HTML, CSS, JavaScript, and backend stuff.
JOE:
When you say backend stuff, do you mean more like DevOps-y type stuff or some kind of serverside language?
JAMISON:
I’m going to say no to DevOps-y stuff, because although I can do it, I hate it. So, I don’t want to require everyone to do that. [Chuckles]
JOE:
Right.
JAMISON:
To be considered senior level developers.
JOE:
And with platform as a service beginning to be more popular, DevOps is becoming and optional tech skill.
JAMISON:
Our ops guy is my favorite person at work because he does all the things that I would hate to do.
CHUCK:
So, I think you need to be able to set up your development machine as far as DevOps goes. But beyond that, I agree.
JAMISON:
Anyone can deploy to Heroku. You should be able to do it.
CHUCK:
Yeah.
JAMISON:
But you don’t have to.
CHUCK:
But the other issue is that if it’s production data, and you have any kind of personal data in there, you have to secure it. You have to know how to harden your servers, blah, blah, blah, blah. Get a professional ops guy to do it.
JOE:
Okay, Jamison. So, what about database skills?
JAMISON:
Know one of them, be able to learn more of them?
JOE:
Okay. So, at least one.
JAMISON:
I don’t care if SQL or NoSQL, whatever.
JOE:
Just as long as you know one.
JAMISON:
Yeah, as long as you know one well and you can learn other ones.
JOE:
So, I want to chime in with a skill that I don’t necessarily think is such a big deal today, but is becoming a bigger and bigger deal as time goes by. And so, I don’t know if today I would necessarily raise my eyebrows. But certainly, in the near future, I would if I was doing the same thing, and that would be Node. And I don’t mean Node as a server, a web server. I mean just Node in general for tooling, for developer tooling, because there is so much tooling that centers around Node, that’s built on Node. And I don’t care whether you are a Windows developer or an ASP.NET developer, or a Java developer. Node tools are awesome. And if you turn your nose up at Node and don’t have it installed on your box and have never run it and don’t know how to npm install, you’re missing out on so much.
CHUCK:
So, one thing that I want to point out is that a lot of the other ecosystems have built solutions around this, because they had to solve them before Node came along. But at the same time, the tools that are in Node I have found are generally superior to the tools in the other systems.
JAMISON:
I was going to say the same thing. Also, this is a JavaScript podcast. We’re not going tell you to use the Asset Pipeline when you can use Gulp. [Laughter]
JOE:
Right.
CHUCK:
I’ll admit, I do most of my development in Rails.
JAMISON:
Yeah, that’s fine.
CHUCK:
And I am finding more and more that moving some of my asset processing over to Node seems to do a better job and I tend to have fewer issues, to have it compile one way or another to the point where I can just deploy it, pre-deployed or have it build my assets on the server. Either way, but by having that standardized in a system like Node, it just, Rails has its own funky way of doing things anyway.
JAMISON:
And everything does.
CHUCK:
And everything does, yeah.
JAMISON:
You’re doing some Django stuff and they have their own build process and setup and stuff.
CHUCK:
But at the same time, Rails is designed to build systems a certain way. And it works well with Ember or Angular or Backbone or Knockout or whatever you want to do. The difference is that the asset pipeline is too general for that. And it’s easy to make it more specific in Node than it is to do it in Ruby.
JOE:
Right.
CHUCK:
Because the Angular and Ember and all those are thinking about things and solving them with Node anyway.
JOE:
Right. So Jamison…
JAMISON:
Yes, sir.
JOE:
Would you raise your eyebrows at a resume that didn’t have any experience in any client-side frameworks, MVC framework?
JAMISON:
Yes. If it was a senior level person, yeah.
JOE:
Yeah.
CHUCK:
See, that’s really interesting, because would you have said that a few years ago?
JOE:
Well, a few years ago most of them didn’t exist. [Laughter]
CHUCK:
Yeah. Well, that’s the point, right? It was Backbone.
JAMISON:
Must have ten years’ experience with React.
JOE:
[Laughs]
CHUCK:
Even two years ago when they were just coming out, or just gaining popularity.
JOE:
Yeah.
CHUCK:
You wouldn’t have expected it.
JOE:
Yup.
CHUCK:
But any more, it really is a critical piece. Now, I don’t expect people who are just learning to pick that up, I want them to focus on where they can do the most good for themselves and their careers and then pick the other stuff up later.
JOE:
And how much do you think that the three of us are a biased sample set based on the fact that if we’re running a JavaScript show, we’re probably more interested in all of things JavaScript than your typical, not necessarily developer, but your typical job. And we migrate to jobs that do more JavaScript.
JAMISON:
This is true.
CHUCK:
I would say yes and no. I’m still very much in the Rails and Ruby community. And a lot of the focus of what I do is on the backend. But it’s getting to the point where the right tool is more and more often to have a frontend framework up.
JOE:
Yeah. One of the shops that I worked at for six years, which is a fairly typical .NET shop, it’s a small one so they maybe move a little bit faster than some of your bigger shops with bigger projects. So, they’re maintaining products that were built ten years ago and they’re doing Angular now. They’ve been doing Angular for eight months or something. So, I think this is fairly typical of a lot of shops now when they’re doing web development. They’re all starting to turn to frontend frameworks.
CHUCK:
Yeah.
JOE:
And so, maybe you are losing out if you don’t have any experience with frontend frameworks.
You’re hurting yourself when it comes time to try to find a new job.
CHUCK:
Yeah. Well, one of the things that I’ve noticed with both Ember and Angular is that they make dealing with large sets of data fairly easy. And a lot of the repetitive stuff that you want in your frontend are pretty simple with them. They provide widgets or directives that make it easy to do. And so, it’s the right tool because it solves the problem much more seamlessly than I can with a couple of little pieces that I would plug into my Rails app to provide pagination links and do the pagination off of the database and all the other things. And so, it is the tool that you want to be using because it just handles it for you.
JOE:
Right.
CHUCK:
So yeah, I really do think that a frontend framework is a critical piece. And the thing that’s also interesting about a lot of these is that, and I think Jamison pointed it out when he said that at least one database, is that it gives you enough of a reference that you can pick up various others at the same abstraction level.
JOE:
Right. So, I’d like to talk a little bit about frontend frameworks. A couple of years ago, I made a very conscious choice in my career I’ve been building up over several years before that. But I made a very conscious choice in my career to focus primarily on frontend and to find a job as a frontend developer, or I was at least working with frontend 70, 80 percent of my time. And I really did this because as I saw the industry and what was going on, I felt like people were doing so much on the frontend that yes, today, well at that point which was two, three years ago, the cost of doing frontend development was much higher for the same functionality as doing it using a backend framework like Rails or ASP.NET. But that the cost was going down. There’s a lot more people working on improving the experience and the costs of doing frontend development today than there are, or maybe not necessarily more people, but the cost is going down faster on the frontend than it’s going down on the backend.
And at some point, and I still believe this, at some point we’re going to reach a critical mass where the cost of doing development on the frontend is marginally expensive over doing it on the backend, but at the same time, frontend work gives you such a better user experience than post backs and roundtrips to the server. And I don’t care what DHH says, but you still can’t compete with a well-designed single page application with server-generated JavaScript. So, I’m giving a talk about this in September. But the whole point of that is because that cost is going down, it’s going to be so much easier to do development using client-side frameworks in the future than it is today and it’s so much easier today than it is in the past that not learning it is going to be a detriment.
And it’s true even if you’re not necessarily a web developer, because even a backend developer could, with a small amount of effort, learn to do basic stuff in Angular and throw together a really decent website for whatever reason and be against the non-specialization, the broad skill base, be able to do things and put together things for demo purposes, personal purposes, whatever it is, and have this broad skillset and a really, really great skill to add to what he’s already got with very little time and effort and very little upkeep and maintenance.
CHUCK:
So, I want to pile on what you’re saying and take this in a different direction. But before we do that, I want to just reiterate. I think we all agreed that the skillset for a competitive web developer right now at a senior level is that they are proficient with HTML, CSS, JavaScript, a backend language and framework, some database system, and a frontend language or framework.
JOE:
Yeah, I’ll go with that.
CHUCK:
The only other thing that I see with this is, do they need some kind of proficiency? So, I’m not going to pile on just yet with what you were saying Joe, but do they need proficiency with one of the CSS frameworks, be it a grid system or something a little more involved like Bootstrap of Foundation?
JAMISON:
I don’t think so.
JOE:
What about a CSS preprocessor? Would you raise your eyes Jamison, with a resume that didn’t have experience with any CSS preprocessor?
JAMISON:
I guess.
CHUCK:
[Laughs]
JAMISON:
Yeah. Man.
CHUCK:
That was iffy for me, if you understand CSS.
JAMISON:
But yeah, the preprocessors are easier than CSS. But if you know CSS…
JOE:
Yeah.
CHUCK:
Yeah, and that goes back to the tool chain. And hopefully, they have, or they should have experience with some kind of tool chain. And I guess we didn’t really, we did say that with Node.js, but yeah.
JAMISON:
Yeah. The reason I kind of groan you say all these things Joe is not because I don’t think you need them. It’s because I’m realizing how many different requirements there are.
CHUCK:
Yeah.
JOE:
Yeah.
JAMISON:
There are a lot. Man. There are a lot of [inaudible] that you need to know.
JOE:
And the one thing you wouldn’t want to do is turn away a really good senior developer because he didn’t have experience with one particular thing, right?
JAMISON:
Yeah.
CHUCK:
Yeah.
JAMISON:
If this is a hypothetical hiring situation, we haven’t talked about the candidate’s communication skills, the candidate’s writing skills, their skills at training other people, or I don’t know. There’s a lot more than just the tech stuff.
CHUCK:
Yeah, and that’s totally fair. But just the skillset that you would expect to see at a basic level for a senior developer.
JAMISON:
You mean just technical stuff.
CHUCK:
Yes, just technical stuff.
JOE:
Yeah. Well, I think the point and the benefit to the listeners is not necessarily, “Oh, I’ve got to learn all these things or else I can’t be competitive in the job industry,” but more like, “What are the gaps in my knowledge that are important enough, widespread enough that I should worry or take some time? If I haven’t bothered learning a CSS preprocessor because we don’t use it at my job but I know everything else, is it really important enough for me to spend some time even if I’m not doing it at work? If I haven’t done a frontend framework, if I haven’t done anything, no Angular, no Ember, should I spend some time doing that?” So, that’s the point of this whole episode, is helping people understand what they should be spending their free time on learning.
CHUCK:
Yeah. And now, I want to pile onto what you were saying before, Joe. I’m curious where things are going to go in the future. And the way you’re talking about single page apps and frontend frameworks and the impedance going down on learning that stuff and being proficient with it, I’m really, really curious to know. It seems like the more you move that way, the more you’re moving toward just having a desktop app or just having an iPhone app, where you basically have the backend and then your frontend is the app, and it communicates as needed with the backend service, at what point do you do all this stuff in Angular and the browser basically disappears?
JOE:
Well, let me make a little, small aside here. Let me tell you where I think we’re going to be in three years. Angular is the new jQuery and React is the new Angular. That’s what I think three years holds.
CHUCK:
Yeah, are we even going to be thinking about this in terms of backend and frontend the same way we do now?
JOE:
Yeah, I don’t know. Backend as a service is just barely starting to hit the scene. Who knows what we can do with backend as a service? Platform as a service has already created a whole bunch of benefits for companies. So, as backend as a service comes on the scene, that’s not necessarily something you mentioned in your question, but the ability to use backend as a service offerings that we don’t even know about today and just build stuff in Angular or build something on the frontend whether that’s React, Angular, Ember, or one of the others, I think that that’s a very realistic possibility and likely. I think the number of websites that will see, that aren’t using some kind of a frontend framework, it’s going to go way down.
CHUCK:
It’s funny, because the more you talk about this, the more it really feels to me like the discussions that we currently have when I talk about iOS stuff, because they have backend as a service for a lot of these that really do provide some level of backend, but all you really have to do is get an API key and point, do some authentication, and then it encrypts the connection and does all the rest of the work for you. I just can’t help but think, are we really going to move to the point where it’s just another platform for apps?
JAMISON:
I think we’re already there. I don’t know what you mean by, “Are we going to move to that point?”
CHUCK:
Yeah. Well, more and more websites I think are going to be updated to that point. But is it going to feel less like a web app and more like an app?
JOE:
Well, I think if you’re asking, is the majority…
JAMISON:
You mean, it’s like an app store or something?
CHUCK:
No, no, just, is it going to feel…
JAMISON:
What makes it feel like an app to you?
CHUCK:
So for example, if I go to Facebook.com it’s still feels like a web layout to me. And are we going to move to the point where it feels more like Facebook the app instead of Facebook the web app?
JOE:
I don’t know. That’s a tough one. I’m probably not experienced enough with what the future holds for browsers to be able to say if there’s really enough technology for that to happen. So, I think that has more to do with what the browsers are going to, are the browsers going to start providing some stuff that’s going to make the feel of an app feel differently?
CHUCK:
Yeah.
JOE:
That’s a really hard one.
JAMISON:
You should watch Domenic Denicola’s talk about, oh, what’s it called, “Is EmpireJS the future of the web?” or something like that. But he talks about some APIs that are coming up on the web to enable it to do some of the things that you can only do on mobile, like better offline support. I’ll look it up and I’ll link to it.
CHUCK:
Yeah, and that sounds a lot more like the direction I think we’re talking about. Anyway, we probably should wrap up and get to the picks. Unless there’s something else that you guys have that you want to share that’s pressing on your mind.
JAMISON:
I just want to make sure no one thinks I hate Angular. It’s not what I was saying. [Laughter]
JAMISON:
I feel bad.
JOE:
I’d like to make sure that nobody thinks that I think that Angular is a silver bullet.
CHUCK:
[Chuckles] Only good for killing werewolves.
JOE:
Right. I think there are two takeaways that I want to reiterate and that is if you’re not doing any Node and you think that Node is just for hipsters, you really need to rethink it, because you’re missing out on a ton of awesomeness that could affect you today. I don’t care what technology you’re working in, because Node runs on every platform and for developer tooling, it’s awesome. That and the fact that client-side development is just getting cheaper and cheaper and easier and easier all the time. So, keep that in mind when planning out the next five years of your career.
CHUCK:
Yeah, and really I’m just hoping that people get some guidelines here and realize, “Okay, I’m not as proficient maybe in this particular area or technology as it seems that people think that I should be,” so go learn more about it.
JOE:
Right.
CHUCK:
Alright, well let’s do the picks. Jamison, do you want to start us with the picks?
JAMISON:
I will. Sorry, I got to pull them up here.
JOE:
Any cool, new games you’ve been playing lately, Jamison?
JAMISON:
Yes. There are two, actually. One of them is Divinity. Joe and I, we had a ten minute Divinity strategy session. It’s an RPG game. It is one of the best games as a system versus games as this series of interactions that designers have created for you. So, you feel like the world is going on without you, kind of. And the way that you interact with the world is, it feels pretty natural. It’s not like you walk somewhere and then this quick time event happened where you press A to make something awesome happen. It just feels like they designed these systems that work together and you can use them in cool ways. So, if you’re an RPG fan, that one’s really good.
Another one I’ve been playing is called SUNLESS SEA. It sounds like I play a lot of video games actually. I’m thinking about this now. [Chuckles] Two video game picks in one day. SUNLESS SEA is a steampunk Lovecraft exploration game. You pilot this ship in London that has fallen through the earth and is now in the middle of this giant cavern. And it’s got all these weird monsters. The game itself is a vehicle for the writing, which is amazing. The game is just chill; drive your boat around, really basic combat mechanics. But it’s one of the more fun exploration games I’ve ever played.
And then my other pick is this thing called Narratron. So, if you’ve ever played the game where some person writes the first sentence of a story, passes it on to the next person. The next person reads the first sentence, writes another sentence. And then you only ever see the previous sentence. And then you read what you wrote at the end. This is just a web app that implements that. It’s really fun. And the people that use it actually are pretty good writers so far. So, there have been some fun stories that I’ve participated in.
And then my last pick is Jamis Buck’s blog. I think he was a web developer at 37signals. But he quit. And as far as I could tell, he quit to write this blog.
[Chuckles]
JAMISON:
He just spends all his time writing these really awesome fables that are related to computer science somehow. So, they’re about this wizard and this assistant and they figure out how to count. And you realize he’s really talking about some algorithm or something. But I think he’s gearing it towards non-technical people. So, children or just people that are interested in quirky stories. And it’s really well-written. It’s fantastically done. And it’s fun to see him work on it and talk about the writing process, too. So, those are my picks.
CHUCK:
Very nice. Joe, what are your picks?
JOE:
So, I’m going to pick this free to play MOBA, Infinite Crisis. It’s on the same vein as League of Legends and DOTA 2, except it’s DC super hero characters. I’ve played it. It’s really in-depth. It’s pretty fun. I’ve had a lot of fun playing that. So, I don’t know how much longer I’m going to play that one. But I do think that it’s the kind of game that would appeal to a lot of people, especially if you like MOBAs .So, I’m going to pick Infinite Crisis.
Divinity:
Original Sin since Jamison picked it. I agree. It is totally an awesome game.
And then my next pick is going to be a talk called how to talk to developers. It was done by Ben Orenstein at RailsConf in 2013. Chuck, did you go to that?
CHUCK:
RailsConf?
JOE:
Yeah.
CHUCK:
No, I didn’t make it to RailsConf this year.
JOE:
In 2013.
CHUCK:
2013.
JOE:
Yes.
CHUCK:
I might have. Where was it?
JOE:
I don’t know. Well, if you had been at his talk, you would have remembered it. That was what I was getting at, is did you go to his talk? But it’s this amazing talk and it’s all about how to give talks. And he does the best job of giving a talk about how to give talks by giving an excellent talk to teach you how to give excellent talks. It’s so meta. And he does it in a series of, he gives a lightning talk for five minutes and then he talks about why what he did was really good and why you should do these types of things when you’re talking, whether it’s your making a presentation to five developers or whether you’re making a presentation, whether you’re giving a talk at a conference to a hundred developers. So, just amazingly entertaining, fantastic talk.
And then my final pick is in the vein of the economics book that we’ve been talking about, just about picking every episode for the last three months. I picked up a book called ‘The Financial Crisis and the Free Market Cure’ written by a guy who was the CEO of one of the major banks during the great recession of 2008. And the book is completely amazing, because just like reading that book on economics that really opened up my eyes, this has completely opened up my eyes as to how the government affects our market. And basically, his whole premise in the book is that the government is the real reason that we had the great recession. It wasn’t people borrowing too much. It wasn’t greedy banks.
JAMISON:
You mean, he doesn’t say that he had anything to do with it? I’m shocked.
JOE:
[Chuckles]
CHUCK:
[Laughs]
JOE:
He talks a lot about the role of his bank in the whole thing and how they followed the suit with some others. Of course, he tries to paint his bank as a little bit better picture than everybody else saying, “Well, we were a little bit more conservative,” blah, blah, blah. But he also just talks about how the fed works and how Greenspan works, and all the control that they’ve had in our fiat money system, and how the government is basically motivated because we owe so much money. We’re a debtor. We’re motivated to keep inflation high. The government is motivated to keep inflation high, and how that’s hurting the economy. Because the government owes so much money if they keep inflation up, that means that future money is cheaper than if there isn’t very much inflation. And so, that means that the cost of the debts is lower. It’s just incredible. So much stuff I had never realized and didn’t understand about how our money system works. We’ve not on a gold standard. We’re on a fiat money system, completely awesome. So, whether or not you necessarily agree that it’s the banks’ fault or not, he does talk about how the government affected it. And he’s really good about not saying, “Oh, it totally wasn’t our fault.” He talks about the role of the banks, but he also talks about how government policy, if there hadn’t been all this government policy, then the market would have made smaller corrections previously rather than building up to a big, huge correction, which was the recession. And how it was a three trillion dollar correction and that could never have happened without government policy. No amount of corporate greed, bank greed, could have possibly caused this if it hadn’t been for government financial policy. It’s a really interesting book.
So, I’m going to pick that book as my final pick.
CHUCK:
Man, now I want to read that one. [Laughs]
JOE:
It’s awesome. And I picked it up for two bucks. There was a deal that day on Amazon, so I picked it up for two bucks. I’m sure it’s more now.
CHUCK:
Fine.
JOE:
Sorry, Chuck.
CHUCK:
I’ve got a couple of picks. I’m going to pick some books as well. I recently read the book ‘Sh*t My Dad Says’ which is by Justin Halpern. He started out with a Twitter account where he was just putting out the random quotes that his dad says, which were pretty funny on their own. And this book, he shares several of those as well as some stories from his childhood and early adulthood. And it’s a hilarious book. So, I’m going to pick that.
I’ve also been reading the Stormlight, what is it, the Stormlight Archives by Brandon Sanderson. The first book is ‘The Way of Kings’. And that one is really awesome. I just got done reading the Wheel of Time books. I picked those last week. But I’m enjoying these, so I’m going to pick those as well.
And finally, I’ve been getting ready to move everything over to DevChat.TV. That will probably happen within the next week or so, which means that by the time you get this, you may actually get it off of the new app. If not, the next episode will definitely come off of the new app. Anyway, I’ve been using CacheFly for that, and they’re a CDN service. And they are awesome. There’s just no way around it. They are just awesome. And I’m really liking what they are doing so far. So, I’m going to go ahead and pick CacheFly. Those are my picks.
So, thanks for coming, guys. Great discussion. And we’ll catch you all next week.
[Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.]
[Bandwidth for this segment is provided by CacheFly, the world’s fastest CDN. Deliver your content fast with CacheFly. Visit CacheFly.com to learn more.]
[This episode is brought to you by Code School. Code School offers interactive online courses in Ruby, JavaScript, HTML, CSS, and iOS. Their courses are fun and interesting and include exercises for the student. So, level up your development skills and go to JavaScriptJabber.com/CodeSchool.]
[Do you wish you could be part of the discussion on JavaScript Jabber? Do you have a burning question for one of our guests? Now you can join the action at our membership forum. You can sign up at
JavaScriptJabber.com/jabber and there you can join discussions with the regular panelists and our guests.]