11 ms·
Why It’s a Good Idea to Be a JavaScript Developer, and What it Takes to Be One
- 10098 13y agoReading this reminded me of a post by Yossi Kreinin, the author of the C++ FQA (http://www.yosefk.com/blog/low-level-is-easy.html http://www.yosefk.com/blog/low-level-is-easy.html ). It's a good read and it will show you the whole thing from a different perspective.
- hackaflocka 13y agoHe mentions using (1) vi or emacs instead of (2) Textmate or notepad. I wasn't aware that one could use (2) in place of (1). How is that done? Does one need to SFTP a text file from the server to a client GUI OS, modify it, and then SFTP it back?
- velis_vel 13y agoTextmate has some kind of support for automatic remote editing, I don't know the details.
- robinduckett 13y agoIt involves installing a binary on your remote server which always seems insecure as balls to me.
- cmdkeen 13y agoOr use Cyberduck to monitor when files you open with it get saved and it syncs them back. Cyberduck + Textmate is a joy.
- tomsthumb 13y agosshfs can make remote directories appear local. It's not the cleanest thing in the world, but it can work. sshfs can be had using mac ports.
- richthegeek 13y agoIf you actually want to edit live on the server, SSHFS is the way to go - mount a remote location over SSH to act as a standard file system. However, editing live is bloody idiotic. Use git locally and live-deploy based on tags/branches.
- hmottestad 13y agoI use Transmit to connect to my server. Then right-click "edit in" and your favourite editor. When you save, Transmit will automagically upload your file for you ;) Though I still recommend using something like git, because at some point you will do something stupid and you probably won't find that backup :(
- robinduckett 13y agoI think you're confusing Javascript Developer and Front End Web Developer. The two are mutually exclusive.
- hackaflocka 13y agoCare to elaborate?
- scrrr 13y agoExplain..
- jayhuang 13y agoI don't think Javascript Developer and Front End Web Developer are mutually exclusive. They certainly aren't the same, but they aren't mutually exclusive either. Though I do agree the subject of this article would be more suitable if it were Front End Web Developer as opposed to JS Developer.
- digitalzombie 13y agoI applied for a backend and told them I did node.js and does javascript dev (which they were looking for). They tested me on front end shit. And thinks that javascript is only front end. While there are many down falls with node.js it still pay the bill, interest tech, and I wish people would realized that just cause you program js you doesn't imply that you want to do front end. I hate front end. It's just not for me.
- collyw 13y agoUnless you are handling massive amounts of concurrent connections, are there not better choices than Node for the server side? Its still a fairly new technology.
- tracker1 13y agoNode does offer a lot of advantages beyond just many concurrent connections... A single language paradigm for client and server is big... the exact same language/structure/models for client and server communications and validation is pretty big. Many client-side tools utilize node.js these days as well. In general node.js combined with npm bring a lot less friction to development than other languages. Using node to create shim services for a front end communicating through to different backands is brain dead simple as well. In fact there's been a few times that creating a service in node.js to communicate with an ill-defined backend was so much easier in node compared to the static language the main application was working in it was a no brainer. Utility scripts in JS can also be pretty useful.. any kind of stream manipulations work well in node.js too. This doesn't even mention that JSON (current data transmission structure du jour) is native to the environment. And storage systems like MongoDB (couch, rethinkdb and others) is really transparent to node. I couldn't even begin to all list the advantages, but here are a few.. the event loop system, libuv library bindings internal to node.js, language singularity, the npm system and over 40k modules...
- alkonaut 13y agoDid I misunderstand something, or does this article just list all the reasons it's a bad idea to be a JavaScript developer? (apart from the 99 reasons that is JavaScript itself) basically: you use a language that is the envy of noone, to work with things like web browsers, the DOM and CSS. Anyone would want good money to do that...
- MDCore 13y agoI do pretty much what the article describes and you echo the sentiment I get from dev friends who hate working with CSS and the DOM! I enjoy it though. There's a lot of art to it. I have absorbed a decade's worth of trivia that lets me usually do the right thing first time or find the solution quickly. And I generally get to be the interface to other teams (like designers, content people) which I like too.
- IsaacL 13y agoYep, the way I see it is that both backend and frontend development have their bad parts: you either faff around with broken config files, or faff around with broken stylesheets. (Obviously both have their good sides too). It comes down to which you find easiest to tolerate. E.g., I don't enjoy fixing CSS quirks in IE6, but I find it a lot less painful than trying to figure out why my fastcgi daemon keeps crashing.
- Swizec 13y agoWhich is why I personally let the designer(s) faff around with broken CSS and automated install scripts faff around with config files. Leaving me to fully enjoy my life of solving behaviour problems.
- StavrosK 13y agoThis is the solution. Having just automated our multi-server, multi-purpose configuration using Ansible, I can't tell you how many orders of magnitude better my life just became. Manual server management: Not even once.
- gexla 13y agoI would tell anyone getting into web development right now that if you want to be in high demand, become a JS wizard. And of course, the front-end is part of the package unless you box yourself into Node. To get to the level the author is talking about is quite daunting. I feel that JS is sort of a second class citizen to most back-end developers. Web projects which are touched by an HTML / CSS developer, a designer and a back-end developer are common (not always a team, maybe they are all contracted to do their bits as needed and don't work closely together.) Often the heavy lifting with the JS goes to the back-end dev because the HTML / CSS dev isn't really a programmer beyond Googling for Jquery snippets. The problem is, the back-end developer usually isn't a JS wizard either. A lot of developers I come across make a mess of copy and paste in the JS. And I don't spend enough time in JS for it to feel natural to me. If I could add one superpower to make my life way easier, it would be the things the author is talking about. I see a lot of threads with people asking what to learn. If you are going to be a web developer, then JS is always a damn good answer (or if you already know JS, go back and level up.) I really love to spend time on the server side. I want to put my time into Linux, spend a lot of time in Go and learning other languages. But that doesn't make a lot of sense for a freelance web developer. ETA: Actually, high in demand is probably the wrong way to put it. You don't have to be in high demand. Small markets can be as lucrative or better than much larger markets. And then there the fact that there is a lot more to being a successful web developer than being a code-monkey. But the things the author described is certainly a super power in web development.
- weland 13y ago> I feel that JS is sort of a second class citizen to most back-end developers. I'm not what one might consider a back-end developer (or a web developer at all, for that matter), but the overgrowth of web tools in the web 2.0 aftermath has made web tools somewhat hard to ignore as of late, so I had to sporadically develop what can be considered back-end code. Even front-end, which I have done grudgingly. To me, JS -- and in fact the whole web environment -- is a second-class citizen. I come from a vastly different background (embedded and systems programming), and the fact that people manage to write anything useful with today's web technologies is astounding. I honestly admire the craftiness of web developers, although I have very few good words to say about pretty much anything else that comes out of their hands. I cannot help seeing them as second-class citizens because: 1. They are simply tools made for different purpose. HTML is there to annotate the structure of some content, CSS is to annotate its appearance, JS is for some limited interaction. What people managed to build with these limited tools, compared to the crap we were writing the last time when I seriously touched web programming (let's just say that PHP wasn't yet popular when that happened), is astounding, but I cannot help wondering if the web wouldn't be a lot better if people had actually stopped to think about better tools for a moment. Every time I see yet another awesome demonstration of a JS game, my initial enthusiasm is chased away by the realization that thirty years later, people are still enthusiastic about stuff you could make on an Amiga, were it not for the gazillion cycles wasted between the hundreds of abstraction layers involved in painting a pixel and for the latency involved with pretty much every I/O operation. 2. It's shaggy. Dear God, it's shaggy, full of barely-documented hacks. If you want your webpage to have a drop-down menu, there's a thousand something.js packages that help you do that, but all of them have their own quirks, their own issues with styling, their own little manner of use and so on. It reminds me of writing X11 applications using nothing but Xlib, when everyone was using their own menu widget that worked in a slightly different manner from every other application. The Unix desktop was not too fun to use back then, and the fact that people not only consider that kind of behaviour to be OK now, but actually want it, is beyond comprehension to me. It doesn't help that a large portion of the community seems to struggle with even the most basic programming concepts, which makes reading source code or documentation a very unpleasant experience. 3. The tooling is terrible (but this one is becomming less and less of a grievance).
- IsaacL 13y agoHere's a question: for a decent frontend developer who's still far away from the "master" level he describes here, is it worth chasing mastery or might it be better to branch out to other skills, like management? I think I'm a solid frontend developer, but I'm a few years professional experience away from the level he describes here. I know my way around HTML, CSS and the various browser quirks - though I'm still learning the idiosyncrasies he describes here. I've written a ~10000-line app in Angular.js, but my Javascript code is still sloppy, and is nowhere close to my knowledge of Ruby. I'm gradually picking up the basics of design and UI as I go, but that's a whole other mountain which I could climb for years. "That guy I offered that car to (not really) took a job at a startup and he’s the guy. He’s THE front end developer for their product which doesn’t exist yet. He gets to point to that thing, a year or two from now when it’s worth a bazillion dollars (I do wish him luck, after all) and say, “I did that.” There are people out there, right now, who get to point at Twitter, Facebook, Gmail and Google Maps, at the Iphone’s UI, at Github, at the YouTube player – stuff used by millions upon millions of people – and say, “I did that.”" Thing is, few products are built by one superhero. I'm wondering if, rather than transform yourself into a magical-unicorn designer/hacker - it might be better to get solid at development, solid at design, but aim to only get good enough that you can manage people who are better at you in those areas?
- jt2190 13y ago> I'm wondering if, rather than transform yourself into a > magical-unicorn designer/hacker - it might be better to > get solid at development, solid at design, but aim to > only get good enough that you can manage people who are > better at you in those areas? Depends on your definition of "better". The market clearly treats the three skills (dev, design, management) as separate things, so really you don't even need to be "solid" in more than one if you define "better" as "above average salary". If you define "better" as "can move the project forward without finding another person to help", then becoming a "superhero" is what you should do. Note that "we're still figuring out what this product is" stage startups really hope to find these "superhero" types, as they can litterally breathe life into a product by themselves. Larger companies can't depend on hiring people with all skill sets, as they're too rare.
- anutron 13y ago
- skuunk1 13y agoOne thing I have learned in my years of experience... Stay away from any job posting that asks for ninjas, rock stars or bad asses.
- hackaflocka 13y ago^ This.
- babby 13y agoI dont understand those job ads. What kind of person honestly describes themselves as such? Maybe I am just too jaded, but god damn, note to self: kill myself if I ever use one of those titles.
- quim05 13y agoThe funny thing is, most of the people extolling the virtues of JavaScript here and in the comments on the article are referring to themselves as gurus/ninjas/rockstars/badasses/demigods with worrying frequency. Roles where demand exceeds supply often start receiving a lot of hype and faux-respect in a effort to attract people to bridge the gap. As soon as the gap is bridged adequately, people will go back to seeing JavaScript "ninjas" as the code-twiddlers they really are. It's similar to how soldiers are patriots/defenders/heroes when someone is required to dive on a grenade, but "grunts" otherwise. The sad thing is, people let it go to their heads. Another sad thing is how easily these JavaScript developer types are swayed compared to other professions. I mean, who really takes pride in being called a "ninja", besides 12 year old boys?
- babby 13y agoquim05 you're hellbanned, bro. Apparently from your very first comment 2 days ago, that's somethin.
- Swizec 13y agoWhat if I am a JavaScript wizard who is also a backend wizard, and I know a lot about CSS/HTML and browser quirks, but I couldn't design my way out of a wet and ripped paper bag? Can I be awesome too? Or am I designated to the waste bin? Because that would suck. I don't like the waste bin. It smells funny.
- davedx 13y agoIf you were a full stack JavaScript wizard AND you had solid design skills, you would be a unicorn with hooves made of diamond and a jet engine strapped on its ass.
- Swizec 13y agoAlas, my design skills stretch no further than the ability to vet designs created by others and giving decent suggestions. I think this makes me more of a pony with an ice cream cone duct taped to its forehead.
- davedx 13y agoHaha! In seriousness, some tips that I find help: * Learn & use Bootstrap. A manager actually told me to use Bootstrap instead of a custom webapp design created by his in-house designer once. The defaults are fine for a surprisingly wide range of projects. * Learn some design basics, like the rule of thirds, typography and picking palettes from colour wheels. * Don't be afraid to copy other people's designs. Conversely, if you're copying whatever is in fashion right now (I'm looking at you, long, scrolling pages split into sections of type/images...), then you might be better off just using Bootstrap. Finally... * Hire a designer.
- JanezStupar 13y agoI can do all that, so what am I?
- manmal 13y ago
- wfunction 13y agoI'm surprised there was no mention of CoffeeScript.
- liviu 13y agoWhy? For CoffeeScript you already need to know and understand how JavaScript work. And for a experienced JS programmer, it will be very easy to code in CoffeeScript.
- babby 13y agoYeah this point needs to be stressed. CS is just javascript. You're not suppose to use CS unless you know JS well. Enough said.
- baudehlo 13y agoPeople say this all the time but it's not true. There are a bunch of things in JS that just don't work (are compile errors) in CS. Like conditional expressions.
- tracker1 13y agoWhile I think it's a great time to see JavaScript actually come to the forefront of software development. I've been a pretty big fan of the language for a long time. Well before Crockford's good parts book. And well before modern browsers. I remember the v4 browser days, and how painful DOM interaction was. I've been pushing for node.js and MongoDB for over three years now, and finally seeing them gain a lot of traction. Right now I'm pulling for docker.io and CoreOS to gain the same kinds of traction (and learning go). I don't think what the author is asking for is impossible.. but I would be more interested in either stronger core development skills or stronger design skills, you won't likely get both. I started off doing more design and that was over a decade and a half ago. Today, I reach for balsamiq if I want to mock something up, and tend to go very basic and neutral for UI to start with. You can add more later, especially if you have an artist at your disposal.. Beyond this, clean design is finally gaining ground anyhow, though I am getting tired of very bootstrap like sites. I've seen the good and bad, to very bad.. you deal with the issues you have come across personally, and likely won't know how to fix a specific issue you haven't come across... today, I'd say a JavaScript developer should know at least one test framework, and one module framework. Should at least understand closures, and some of the ES5 extensions (especially to arrays), understand how currying techniques work... and experience with node.js and mongodb is really important. Knowing another server-side framework is important, but dogma from a various server-side frameworks tend to cloud how development works in the JS mindset... There's a lot of changes happening in the past 2-3 years (a lot driven by node.js), and more to come... just being open minded and trying to understand some functional concepts is important a well. Personally, I'm tired of some of the recruiter emails that I get.. generally a few a day, and mostly either distant locations I have little interest in and/or for salaries I wouldn't consider.
- deleted 13y ago[deleted]
- quim05 13y agoIs it just me, or does the article and about 90% of the comments seem like extreme navel gazing? You could paraphrase most of them simply as "Look at me, I'm a JS badass/ninja/guru/rockstar and in very high demand -- but I'm not full of myself, honest!".
- lhnz 13y agoWhy It’s a Good Idea to Be a Front-End Developer That Markets Themselves As a JavaScript Developer (clientcide.com)
- restlessmike 13y agoI just realized the article was from 2010. Good thing much of it still applies. I think what the recruiter meant when he said "those people don't exist" was really "those people aren't available to you." In a highly competitive job market, these "unicorns" can get any job they want, or even stay independent, and both make more money and have a higher quality of life than most startups could provide. Recruiters know this as they are the ones trying to locate these people, but hiring managers might not have this perspective.
- dsego 13y agoBeing a front-end web dev sucks. You need to know browser quirks, know about design, know UX, know JS in depth, jquery of course and even backbone and/or angular are now expected (with any other framework being a plus). And the back-end guys learn mostly one language and stack, e.g. .NET and maybe SQL (if there isn't already someone dedicated as a DB guy). Then they still wonder why you are bitching about vertical centring, "isn't that just stupid CSS, here I'll help you, type in vertical-align:middle." The worst part is when you are working with a graphical designer (who knows nothing about the web) and sends you impossible designs, and a client who bitches if any pixel on that magnificent masterpiece is missing in IE6/7/8, because that's the browser he is using on his old PC, when his iPad is charging.
- eonil 13y agoAlso, paid less than backend. Companies encourage people to become a front-end dev because they don't want to do it.
- cema 13y agoThe grass is always greener on the other side. Working with, say, .NET stack you still have, in practice, to deal with substantial SQL apparatus. These two worlds (C# or VB.NET and SQL) are sufficiently distinct to form what is known as impedance mismatch (structural incompatibility), so one also has to work with an ORM such as Entity Framework which introduces another level of complexity, and so on and so forth.
- collyw 13y agoBack end on Django rocks. Until you are looking for a new job. (Though I disagree on the one language thing, at least a conventional language, plus SQL, and you need to at least know the basics of HTML / CSS / JS)
- collyw 13y agoOf course you could forget about all of that and use MongoDb and json. In which case your point still stands.
- untothebreach 13y agoquim05, you seem to be hellbanned, just FYI
- hipsters_unite 13y agoIs it just me, or is this whole article a description of a full-stack web developer rather than a JS engineer?
- snapcracker 13y agoEveryone wants a full stack dev these days… how many are there really?
- hipsters_unite 13y agoI think it's a great thing to aspire to (I certainly do), but yeah, don't think you could claim to be there until you'd put in some serious years, there's just too much to know, too many languages with too many weird edge quirks.
- cognivore 13y agoI'm one, but I've had 26 years of experience in programming and software development to learn the stacks. At the company I work for arguably 4 of the 8 developers are full stack developers, so we can't be that rare. One thing that I'm not seeing here is the long view. Sure, learn JavaScript, but recognize that due to its sub-standard nature it will be a transitional technology until a better run-time for web apps than web browsers comes along. JavaScript's popularity now is akin to the massive success of Visual Basic were a large number of adequately skilled programmers could crank out the needed business applications. JavasScript allows for much the same, and there's nothing wrong with that, it's just not something that will last into the future. So instead of learning JavaScript, learn how to program, how to develop software, and how to keep your fire alive so you want to learn the new stuff that will eventually replace what you're using now. I sure as heck don't want to go back to Visual Basic, and I look forward to the day we don't have the HTML/CSS/JavaScript morass to build our software on.
- hipsters_unite 13y agoIn all fairness though, it's very easy to bash JS, but the anonymous functions etc., that are really core to the language are pretty powerful. I used to hate it a lot more than I do now, but one day I realized that apart from its more patchy areas (no strftime, what?), it actually covers off a lot of coding styles and patterns you need in order to get stuff done.
- danbruc 13y agoA unicorn? That is the description of a average to good programmer and there are quite a few of them.
- wyclif 13y agoThat's not what a 'unicorn' means in this context. Yes, there are quite a few "average to good" programmers. But a unicorn is a programmer who knows so many esoteric languages/frameworks/platforms that they are nearly non-existent in the wild and almost impossible to hire.
- farinasa 13y agoI think he got that. What he's saying is that this description of a programmer is not that rare.
- deleted 13y ago[deleted]
- ialex 13y agoThe author is describing at least 3 positions on his post, it is insane to be responsible for the amount of work that it requires the proccess of building a web application. It would be better to hire 3 different amazing people on their field (front-end dev, back-end dev and designer) and most of the times you will get a better result. two heads thinks better than one.
- anutron 13y agoI (the author) would agree that it's insane, but it's often the case that when products get created, there's only one UI developer at the start. More importantly, if you DO have all those skills, you'll keep getting those kinds of opportunities.
- ialex 13y agoOf course sometimes you have to do the hard work, but now that you are hiring instead of trying to find a person that master 3 fields, look for someone that master two of them, maybe the two where you feel less comfortable, a designer can easily fit front-end or a back-end dev is able to work on front, that may help to find someone capable to start working and later they would learn the next set of skills you need to be considered a unicorn, hackers love to learn.
- elliottkember 13y agoOne thing about being a JavaScript guy is that it's quite fragmented. For instance, this guy's hiring for a position that uses MooTools. In my experience, MooTools (while a great framework) isn't used very often. The framework you know and love, and the job you want don't always match up - especially if you're going to work on a product that's a few years old.
- disposition2 13y agoThis is my problem with JS. I've worked primarily with C#, done some Java and am currently doing some work with Python...all of which seem to be fairly consistent on functions that deal with problems, granted you get some overlap and redundant tools but there is some what of a standard. With JS, where does one start? Maybe I've just been too spoiled with what I've worked with thus far (jr programmer here) but in the times I've worked with or attempted to work with JS it has always left me looking for some kind of foundation or standards. So if any one out there enjoys JS and has some pointers on building a foundation, please advise...because a lot of the tools I see seem useful but I can't find any consistency in the projects I look at. Or rather, the only constant is that everything is always different.
- chrisweekly 13y agoTerrible blog post (half-baked recruiting link bait), but some interesting discussion below. /$.02
- dabernathy89 13y agoLooks like the site has been hacked, there is a bunch of spam underneath the header.
- nswanberg 13y agoI think hn user nostrademons has had some of the most interesting comments on front-end development and has posted about some useful skills to have. But judging by his comments the most important skills appear to be curiosity, hard work, and motivation to make something. True, there is an incredible amount of trivia in developing for the browser, but since the reason for the trivia is that your program may be run on any of a billion or more devices, it seems worth the effort. Those skills are important because the front end field is still in flux and while lists are a great starting point it seems unlikely that there is a good exhaustive list. (I'd love to see one if there was.)
- antisocial 13y agoClientcide sounds similar to suicide, homicide, infanticide, genocide etc.
- taude 13y agoAm I the only one who thinks a lot of this is a little too specific on so many things? This thing reads like a list of things discovered while building an app, now they're making it gospel to know all these nuances. Knowing the trialing-comma thing, for example, is an I.E. only thing. What if you just don't code with trailing-commas to begin with because it doesn't look right, so you've never come across that? Anyway.... A lot of these things someone will figure out when they get stuck with a 5 second google search. A lot of these things won't matter as legacy browsers fall out of scope. A lot of these things won't matter if someone's utilizing some form of frame-work to help them glue code together. Maybe this level of detail would be important if you're building custom JavaScript frameworks, or whatnot, but for 99% of the UI code out there.... ...meh, I don't feel not immediately knowing a lot of these things would prevent anyone from developing a solid UI application. (I'm going to write later how to get the most out of a team of typical web devs who aren't gurus or rockstars or ninjas, but yet manage to make compelling applications that make customers happy.) EDIT: I'm only commenting on the first couple of items in the story, because I'm not even going to address the separation of front/back, and manageable team sizes.
- mooreds 13y agoTo be fair the article is from 2010, when legacy browsers mattered far more (aka were more prevalent) than they do nowadays.
- taude 13y agoDidn't notice that. Whoops.
- wwweston 13y ago> A lot of these things won't matter as legacy browsers fall out of scope. As an engineer whose recent focus has been front-end, I wish this was true. The iOS7 rollout is what's been on my mind lately. That version of Mobile Safari had a number of new quirks/bugs which caused some significant usability issues on the site of a major automaker that I've been working on most of this year. After poking at one of the biggest problems for two weeks, we eventually came to the conclusion that there was no fix available, and the choices were (a) live with the problem (b) entirely re-engineer some components just to accommodate iOS7, or (c) gracefully degrade for the newest version of what is likely the most significant mobile browser. I've enjoyed watching and participating in a lot of the progress and excitement on the front-end over the last 10 years. But this development really depresses my enthusiasm. It was kindof understood years ago that, sure, for now we might have to make sure we knew the quirky minutia of each of the major 3-4 rendering engines, but the promise was the quirks would fade, browsers would converge on standards, we'd paper over whatever Microsoft couldn't/wouldn't manage to fix themselves, and eventually get on with the actual engineering. Watching another major vendor introduce new quirky minutia in 2013 makes me wonder if front-end engineering will always mean that you'll have to fill up your head and your time with ephemeral, non-generalizable knowledge that will never really help you grow into a better problem solver.
- taivare 13y agoHunting the purple squirrel ?
- CmonDev 13y ago"Finding really good [X] developers who know their stuff is hard! ([Y])" where X - any mainstream technology, Y - market level rate
- pc86 13y agoArticle title: Why it's good to be a JavaScript developer Article content: Why it's good to be a JavaScript developer who is also a back-end developer who is also a systems administrator who is also a designer who is also a ... This guy wants to hire people with 15-20+ years of experience, and I'm willing to bet he's not willing to pay for it.