20: Thoughts on Unicorns: Answering a Listener Question
Published 2/23/2015
In this episode, I answer a listener question about what route he should take in his technical education. Spoiler: I actually do have an opinion and recommendation to this question.
For a significant part of this episode, I discuss the concept of the famed "unicorn" developer, and why they're in such high demand.
Note: I accidentally called the listener a "guest" - probably because I consider everyone who listens to the show my personal guests 3 times a week. :)
Transcript (Generated by OpenAI Whisper)
Hey everyone and welcome to Developer Tea. My name is Jonathan Cutrell and today I'm going to be taking just one question from a guest that I felt like applied to a large part of the audience that listens to this show and I wanted to expound on an answer to this particular guest's question. The guest is named Hersheek and Hersheek forgive me if I'm pronouncing your name incorrectly. But Hersheek contacted me via developer to you Gmail and he asked me basically what he was saying was that he is an aspiring web developer. He is learned HTML, CSS, MySQL, PHP and he knows some Apache stuff and he's just trying to decide between a front end developer course and a full stack Rails course, Ruby on Rails. So he's excited about it and after completing the coding boot camp program he says his five year plan is to have the skills that he needs to get a job as a junior full stack or front end web developer. He aims to get some years of experience in that role before applying for roles in the States. He wants to move to California and he says he'd like to work for a startup that uses cutting edge technology and has a strong team culture. So he's saying that few Ruby jobs are given out in England but there's a lot of front end dev jobs and ideally he wants to go in the direction of whichever will open the doors to working abroad. He asks me for my advice after this and then he also says that I can burst his bubble if his goals are unrealistic. First of all, Horsiq, your goals are not unrealistic. What you're asking for is to be what a lot of people need, not only in the States but also around the rest of the world, especially in a startup culture. So I'll give you quite a few answers to this particular question. It's kind of complex. So let's start out by addressing the first question that you ask. Which course should you take? I would say that you should take the full stack course. And the reason I would say that is because regardless of whether or not you choose to go into front end or back end, full stack will always help you. And for anybody who is a front end developer, if you want to go deep into your career, I would recommend that you understand some of your back end, whatever the back end is that you are integrating with. And the reason for that is because when you have a little bit of training on the back end technology that you're using, you can better plan for your front end development workflow. So if you know, for instance, that your back end uses an XML API instead of a JSON API, then you can start curating tools that work with XML APIs or than JSON APIs. I know that's kind of a contrived example because nobody's using XML APIs basically at all anymore or if they are, you definitely don't want to work for them. So in any case, take the Ruby on Rails course. And I don't think that you'll regret it. I also think that part of the reason why you should take that course is because it will expose you to a better understanding of how the web works in general. So the back end, if you're going to be working for a SaaS company or for a startup at all, then having an understanding of the back end will help you in the long run to get a better position at that company. Understanding where that code is generated and performance aspects of the back end, all of that is important. Now that's not to say that you wouldn't get a deep level of training on your front end course. And it's also not to say that you couldn't learn the back end stuff on your own outside of that front end course. And there's plenty to learn about front end web development. In fact, there's probably more to learn about front end web development these days than there is to learn about Rails because Rails has stabilized in a lot of ways. But I will say that learning the Rails side of things will help you understand kind of from top to bottom. How stuff gets from one server in a foreign country to somebody's computer in another country and everything in between. Front end is a little bit more focused. Now I'm going to flip the coin a little bit and explain to you why you need to focus a little bit on understanding front end more in depth than the average back end Ruby developer or just in general any back end developer would. Front end and even if you're not working in web development, if you're working for instance at an iPhone application company or if you're trying to learn iPhone application development, everyone is looking for people who can do front end. Now this isn't just like a fad. This is a real need. There are so many positions for people who understand it's the common expression for this is the unicorn. The person who understands both the design aspects as well as the logical technical aspects of a given application. Now I'm not going to get into the semantics of whether or not application design at a logical back end level is considered design versus the artistic front end presentation level. So we'll keep those two conversations separate. But I will say that having the understanding of the user experience and having the understanding of what makes good presentation content work, not just what is pretty or trendy and not just how can I make this website appealing to hipsters. It's not about that. It's about understanding the cognitive science. It's about understanding human factors and understanding how people think and how people react to a given digital artifact. It's about understanding why does color theory work in this particular way. Okay now that I know how color theory works, I can actually take that knowledge and literally apply it. It really creates something that uses that color theory and execute it. So then you can deliver something not only from your logical understanding but also from the understanding of the user. So the reason why people like that are so important, the reason why I say you need to understand the entire stack, the reason why you need that is because it allows you to solve a given problem holistically. And that's why people are looking for unicorns. They need people who can solve problems holistically on their own, who can be given a problem that doesn't have any solution, not just a task but a problem. So a task is we need a JSON API that allows us to post and create a particular resource and responds with this JSON resource representation. That's a task. Back in web developers, you know what I mean. You've been given these tasks as tickets and then you fulfill them, you write the code and you send back the ticket and say, hey, it's ready to go and then you launch. Write a couple tests probably hopefully if you're doing your job right. A problem is, hey, we've got these people who are trying to log in and create these blog posts, but we don't have a way for them to create them without them having to get on their computers. We need some other mobile solution for this, right? So you as a full stack developer, you would have the opportunity to say, okay, well, we can either go with a native application or we can actually build out a model for blog posts that allows them to do a minimal, I don't know, I'm just kind of making this up as I go, but do a minimal blog post from their phones on a responsive user interface. And then you alone could execute the entire stack of tasks necessary for that particular problem to be solved. Not just a single task, you weren't given these single tasks and then, you know, single tasks are not spread across three or four or five different people in different areas of your team. You're given the problem and then you start from the back end and solve it all the way to the front end and everything in between from top to bottom or back to front, whatever you want to call that. So to answer your question, Harsik, I don't really know that the answer is clear, but I will say that I think you should understand the back end and I think that that's a little bit more suited for a class. I would recommend that you take the class for the back end, but I would also recommend that you continue to pursue your understanding of the front end and your understanding of cognitive sciences of human behavior and really try to become a more holistic developer, because that's what the world needs right now. That's what's going to get you hired. That's what's going to get you a long-term secure position at any startup company. Now I will say there's one caveat to that and that is if you can develop a really deep niche, like extreme kind of expertise in one thing. So if you are absolutely fantastic at, I don't know, threading with Ruby, right? Or if you are really, really good at legacy touch interfaces, like if you can make the iPhone 3 just work fantastic with a website or with an app or something like that, then you provide a very difficult to find set of skills that other people may not be able to offer, right? It's expertise that is difficult to find and therefore you're kind of a one shot solution. The only problem with that for you is you could become bored with that, right? It's easy for your expertise to make you bored with your job, number one. And number two, it's also easy for your expertise to be degraded. In other words, let's say the iPhone 3 for whatever reason just totally drops off the map and you have some kind of iPhone 3 specific skill set. Well, then your iPhone 3 specific skill set becomes relatively useless. So having a holistic development skill set, that is probably the safest but also the most valuable route that you can take both for you and for your future employer. Thanks, Harshik, for the question and thank you for listening to the show. You can reach me at at Developer Teaon Twitter or developertea@gmail.com. If you have a question, I might feature on the show or I will definitely send you an email back or a tweet back. If you have it near the thoughts for me, you can send them to me at those places as well. You can always find the show in the notes at developertea.com where there is a contact link in the header. That contact link will take you to a form that you can fill out that gets sent to my email directly. So I'll see it pretty quickly. If you would like to support the show and I would like for you to support the show, head over to developertea.com, front slash donate. And supporting the show is super cheap for you but it makes a huge difference for me. It's about the cost of just a cup of tea or a box of tea and that just helps me keep on creating the show for you guys. Thanks so much for listening and until next time, as always, enjoy your tea.