9 ms·
Changing times for web developers
- Toshio 14y agoI couldn't help but notice the self-aggrandizing "most valuable professional evah" logo front-and-center on this guy's blog, so I feel compelled to add the 7th tip to his list. Here goes. #7 - Learn the value of humility.
- gtd 14y agoWhat's the value of humility in the professional world? Honesty, integrity, credit where credit is due, etc, but an overdeveloped sense of humility is the best way to go unrecognized, at least in America.
- Toshio 14y agoI've always regarded microsoft's mvp initiative as a corny-douchey surrogate for a thriving, healthy grassroots movement.
- jasonlotito 14y agoI find people who use "evah" to mock others "douchey" as well. And fairly egotistical. You might consider that for some people, that little logo might actually mean something. Whether it does for you isn't important. After all, your immature reaction and comment is far worse in my eyes then any offense the author of the article committed. Not that you'll care.
- yen223 14y agoI have learnt the true value of humility: it gets you nowhere.
- Joeri 14y agoHumility makes you better at your job, but in many places it will prevent you from developing that job into a career. Humility is what makes us recognize the weaknesses in our skill and knowledge, and what makes us seek feedback from others to hone that skill. I'm convinced that not being self-satisfied is key to becoming a master craftsmen. But, if you don't advertise your own skill, people will think less of you than you really are, and you won't get the jobs that you really want.
- Swizec 14y agoIs CoffeeScript a higher abstraction level from JavaScript? Whenever I've taken a casual look at coffeescript I came away with the impression it was just syntax sugar.
- Toshio 14y agoCoffeeScript is to JavaScript what an ORM is to SQL - a scripted way to generate code.
- bbotond 14y agoC is to assembly what an ORM is to SQL - a scripted way to generate code.
- deleted 14y ago[deleted]
- pooriaazimi 14y agoIt is. For one thing, classes (or objects you 'new') are much cleaner in CS than any trivial implementation in vanilla JS. Splats, loops, string interpolation and comprehensions are like added bonus (they are technically syntactic sugar, but make thing so much easier, cleaner and more readable that it's worth using CS for these features alone). True, CS makes debugging a bit harder (though SourceMaps might make that a thing of the past), but as CS code is much cleaner and easier to read, stupid typos are less likely to happen and most of the time, bugs are logical not because you accidentally didn't put a semicolon there, or used ; instead of ,
- louischatriot 14y agoGood guidelines overall, altough I find that learning 5 client MVC frameworks may be a bit too many :)
- amazedsaint 14y agoAlright, 3 then ;)
- speg 14y ago#1 has a bunch of links for JS but none for the CSS part of its title. What are some good CSS resources for a developer who typically isn't suited for design.
- thefreeman 14y agoI would start by looking at some of the available CSS frameworks. There are a million, but first to pop in my head are bootstrap , kube, blueprint, 960. Also I would familiarize myself with pre processed CSS ie. SASS and LESS
- Benferhat 14y agoCheck out Zurb Foundation or Bootstrap, they'll make all your projects look snazzy right out of the box.
- mmaunder 14y agoAgree with half, but don't worry about: JS MVC frameworks: MVC in JS is almost always overkill. HTML5: Most of the web doesn't have support for it yet. Optimization: Sure, but don't preoptimize so rather go looking for the tools once your app tells you it's slow. Also minified JS is great to save a tiny bit of bandwidth and obfuscate, but damn it's a pain to debug your live site.
- Toshio 14y ago> "HTML5: Most of the web doesn't have support for it yet." Say what? You probably meant to say "most of the internet explorer installed base doesn't have support for it" which is a far, far cry from "most of the web".
- pjmlp 14y agoLike all the remaining browsers if you really need to cover a wide array of devices, operating systems and browsers. Web development is pretty much code once, fix everywhere.
- napoleond 14y agoWeb development is pretty much code once, fix everywhere. I'm tweeting this. Brilliant.
- rymith 14y agoNo, what he said was correct. Even my beloved chrome does not have 100% compliance. Now combine the incomplete implementations, coupled with the rate of browser adoption, HTML5 simply isn't ubiquitous for a number of years. So you will be looking at polyfills and excanvas scripts for the foreseeable future. What he could have said was 100% of the web does not have 100% support for HTML5.
- georgemcbay 14y agoAnd when "HTML5" (whatever that means anymore) finally is ubiquitous it'll be the old tired standard and everyone will be dying for the day they can finally use all that hot new stuff in the next version. Thus is the nature of any technology whose design is controlled largely by a committee of companies who are each other's top competitors.
- mddw 14y agoI'm always amazed to see how people who give advice (and good ones in this case) are totally unable to follow them on their websites. 296 http requests. 1.85mb transfered. Yslow grade D. So yeah, these are good advices. In fact, the OP should follow 'em if he wants to "survive".
- popopje 14y agohe says at the bottom "And a disclaimer – don’t look at the source code of my web page – I rarely work on that, and is using an old blogger template. lol"
- mddw 14y agoQuality code ages well. Old is not an excuse for crappy or slow, neither you can so easily disclaim your own code. Would you take fashion advices from someone with horrible and smelly clothes ?
- davewasthere 14y agoMind you, I know builders who still have unfinished jobs around their house. Car mechanics whose own vehicle could use work. Electricians etc... I think valid advice is still valid, regardless of whether they practice what they preach. I also know how little time I have to work on my own sites with various project work I've got on...
- PommeDeTerre 14y ago"Changing times"? What exactly is he talking about? Many of the things he mentioned have been pretty standard, even among the least-knowledgeable web developers, for years now. jQuery has had pretty significant traction for 4 or so years now. Crockford's work is extremely well-know, as well, and has been for some time now. Minifying JavaScript and CSS files isn't new, nor are REST and HTML5. The times did change, but it looks like he's still just catching up with where the rest of us were years ago.
- TazeTSchnitzel 14y agoIt's only changing times for those developers that used to get away with only knowing the bare minimum.
- bbotond 14y agoWhich is most developers. Maybe you work with exceptionally well-informed and talented people but 90% of the web devs I know don't know squat about responsive and MVC frameworks, REST or how to optimize JS. And by "don't know" I mean they have never even heard of the concept, not just that they haven't had the time to learn about it. Sometimes I get funny looks for mentioning even jQuery or modernizr.
- TazeTSchnitzel 14y ago>Maybe you work with exceptionally well-informed and talented people I don't. I'm not one myself, either. I have no familiarity with MVC frameworks, but I at least know what they are.
- bbotond 14y agoMaybe our experience is different because of where we live. I'm Hungarian and most people here speak poor English (due to various reasons - the education system is not exactly stellar and also Hungarian is very, very different from any other European language except Finnish). So few programmers I know read blogs or news sites about programming.
- _bear_ 14y agoHere are some things you should probably learn. And in 2 or 3 years time, you'll have to learn more things.
- edanm 14y agoDoes anyone have any recommendations for good REST books? For example, the book cited in the article - is it good? I understand the basics of REST, but I want to get a deeper understanding. Also, I still regularly encounter situations where I'm not sure what the "best" thing to do is (collections of items, linked items, etc. - how to represent this with REST?).
- kristopolous 14y agoDo you have any concrete examples?
- edanm 14y agoOf problems? Sure. Let's say I have a "Student" resource and a "Course" resource. And there's a many-to-many link between Students and Courses. How do I connect them? How do I get a list of the Courses the Student is enrolled in? How do I add to this list? Let's say I want to see a "latest courses" list in my homepage, some of which I'm enrolled in - how do I know which ones? This I solved, for example, by adding a paramater "enrolledIn" to every course, which returns true or false based on the user making the request. New courses I'm enrolled in are added by updating this field (even if the rest of the Course object isn't editable, because I'm not its owner). But is this the correct solution? Is there a better way? I'm not sure. Let's say I have a Course, which has a "Textbook" resource associated with it (1 to 1). How do I represent this? When getting a Course, should I return the Textbook resource embedded in this? When updating a course, how do I change the Textbook the Course uses? By passing in a new object? Alright, so can I update the Textbook by passing in the same Textbook object to the Course resource, but modifying some of its paramaters? And lastly, my thorniest problem - modeling fax-inheritance. I wrote this problem on StackOverflow here: .http://stackoverflow.com/questions/13190797/modeling-object-inheritance-in-a-rest-api http://stackoverflow.com/questions/13190797/modeling-object-... . Following is a brief explanation (but you should really look at the SO link): Let's say my system has a "User" resource that has several paramaters like "Name". Let's say my Student, in the database, has a foreign key to the User (it's a 1-1 relationship, but not every User is a Student, of course). Note that Students are the ones that are enrolled in courses, not Users. How do I model this in my classes? Do I model this as a Student that "Has-a" User object? When I log in, do I keep a copy of my User object? But what if I'm a student and want to do different things if I'm a student? Also, let's say I have comments somewhere in my application. Comments are owned by users. So let's say I get a list of comments, and their authors - do I return a User object? But what if I want to highlight all the comments posted by Students? How do I differentiate?
- Volpe 14y ago7. Progressive Enhancement. It should be mentioned more, the current trend of tech is leaving it behind, for no good reason... There should at least be a debate on it... but it seems it's in the "Too hard" basket right now.
- camus 14y agodoes make sense for a website , doesnt make sense for a web app.
- Volpe 14y agoWhy not? Should web apps require javascript? Shouldn't the be usable even when javascript is unavailable.
- phpnode 14y agoonly if the cost of supporting <noscript> is less than the benefit, which for a lot of sites it probably isn't. The people who turn off javascript are in the extreme minority
- znowi 14y agoWhat I like about web development is that it is always changing. Each day something new to learn and try. Those are nice tips, but hardly a revelation for the HN crowd. A bit surprised it's the top story.
- bbotond 14y agoIt's the top story because we all thought: "I'm going to send this to THAT person!" - then clicked upvote.
- jopt 14y agoThis almost feels dated, like many recent articles making the same point about web development trends. Unfortunately, a lot of this is still news to a lot of practicing professionals. When it comes to coding in general, and especially web, I find (I admit anecdotally) that many people who appear in the know are living roughly five years in the past. In a recent discussion, a friend explained that JavaScript is an example of a strictly client-side language. I suspect many developers are delayed by books and classes, paradoxically, even though all the information on the new sexy things is theoretically a click away.
- aberratio 14y agoNice list of skills that web developers should have. But the general advice "Learn Your Craft Well" has nothing to do with changing times. (The times are always changing, aren't they?) On the content: Anoop seems to work more on the Backend side of the web and as software architect. It is not uncommon that people who are specialized on backend are not familiar with current frontend standards. So his advice might be addressed to these guys?
- mylittlepony 14y agoSomeone mentioned that .NET people is lagging on these things. Personally, I've noticed that they like using HTTP, HTML, JS, and CSS abstractions, they generate the code within their server-side language, so they don't try to learn these technologies.
- se85 14y agoThis reads to me like a "6 steps to becoming a better web developer" article because the author completely fails to talk about anything "new".
- blablabla123 14y agoBeing familiar with 5 MVC frameworks is required to be considered as web developer? ;) Some people also don't like web pages stuffed to the limit with JS code, so I wonder whether everybody agrees that you should take for every task a specialized library. (Responsive framework, modernizr, ...)
- bbotond 14y agoI think it's more important to be familiar with the concept of MVC. After that, learning any MVC framework is easy.
- tterrace 14y agoThat's what I stopped on... FIVE javascript MVC frameworks? Maybe five WEB frameworks for the top languages, but knowing five JS MVC frameworks seems like a complete waste.
- tangue 14y agoI remember when I was coding ASP sites with tables. We were happy because the CC hover property was implemented for the first time in IE4. Web development is always changing. We are professionals sandcastles builders.
- gexla 14y agoPretty good list. Some comments here mention this is obvious or dated, but I think that in the wild a lot of devs aren't doing these things. I think there are still a lot of back-end devs which this very much applies to. If you are a back-end dev who has been able to get away with not knowing CSS (and possibly even JS) well, then you need to fix that deficiency. For example, I typically work with a team of developers where I rarely have to touch CSS issues, but on my own projects, I get a lot of enjoyment on this, maybe because it's just a change. Client side MVC is overkill in a lot of cases, but when doing client work you will come across these, so this is a good suggestion. Optimization is something that can get left out if you have a dev team in which nobody picks up that piece. For me, I don't do things the client hasn't authorized payment for me to do and I'm generally busy enough that I hit those paid items and then I'm immediately switching to another project. Often my client is another developer who has pieced together a team. Nobody gets paid to do the optimization, maybe because the main developer is sloppy, lazy, or just doesn't know. It's just one of many details which should be covered but is often left out because of deadlines or a tight budget.
- pimentel 14y agoI've wondered about client-side MVC. What level of UI complexity justifies it's use?
- gexla 14y agoI think that's something that's best described by "you know it when you run into it" perhaps at the time when stuff starts getting away from you. I have never used these for client work. My concern was that a client might insist on using these despite your preferences. So, as a freelancer you should be familiar with them because they can have a bit of a learning curve.
- randomdata 14y agoI would suggest that you should start applying MVC practises as soon as you start adding Javascript to your page. You don't necessarily need a complex framework, so long as you stick to the separation of concerns.
- 14y ago
- ceautery 14y agoA couple of reactions: You guys seem to hate each other a lot, and love javascript frameworks. Me, I've tried to snipe at my fellows a lot less on sites like this, which has improved my online experience, and I prefer to learn standards over frameworks. The kind of discussion going on here is reminiscent of old timey C vs. java vs. perl, or maybe vi vs. emacs slashdot discussions from the late 90s: pointless. Focus on the code, not the tool, it will make you a better engineer. For the comments about the web not being ready for HTML5 yet because it is too young: nonsense. Every phone supports HTML5, and every Apple computer. Every time someone goes to google, they are suggested an HTML5 browser. My non-tech friends are mainly on Chrome and Firefox on their Windows machines, and only my older relatives who want to mash a button to get pictures of their grandkids are using IE... of course, your mileage may vary. As for the comments about humility being the same as getting overlooked in a competitive world, I disagree. Focus on the code, not on developing a cult of personality. If your work stands out, and you can solve problems other people can't, you need to beat your chest a lot less.
- jfaucett 14y ago"For the comments about the web not being ready for HTML5 yet because it is too young: nonsense" Although your personal experience may backup this assumption, it simply isn't true when you look at the stats : http://gs.statcounter.com/#browser_version-ww-monthly-201110-201210 http://gs.statcounter.com/#browser_version-ww-monthly-201110...
- napoleond 14y agoWhat aspect of HTML5 isn't yet ready for mainstream? JS polyfills make almost all of it possible for the ~4% of global IE7 users (according to the site above... no idea how accurate it is). Just using modernizer, json2.js, and underscore enables about 90% of the HTML5 feature set for IE7. Raphael, excanvas (or whatever) and accepting the lack of drop-shadows/rounded corners in shitty browsers make up the rest. Seriously. 99.9% of the time it's possible to develop in "HTML5" and drop in a few conditional comments that load extra libraries for IE 7.
- 14y ago
- deleted 14y ago[deleted]
- wildranter 14y agoThe web is a mess. Where's the news in that? Code once and run in all platforms is pretty much a myth no matter the framework you use, including the web ecosystem. I've lost count of how many times I wished we could run in the browser a decent language like python or ruby. Or describe the data of documents in something more meaningful like JSON instead of HTML. And then there's the DOM, CCSS, and all the browser specific nonsense. Can I just ignore this crap and code my applications already?
- Osmose 14y agoI'm confused about the JSON > HTML part of your comment. Independent of which one is better overall, wouldn't HTML be more meaningful than JSON because it has semantics attached to tags?
- pserwylo 14y agoI've been working working working on a relatively complex user interface in JS at work lately (merging suspected duplicates from a CRM together, and specifying which fields from each duplicate contact is the "correct" field) . It involves a lot of DOM manipulation and user input/feedback. We make use of a jQuery in our app, and I was quite happy to see that although I develop in Chrome and Linux, the UI worked pretty much flawlessly on Firefox and Opera on Linux, and IE8 (and methinks 7, but can't remember) on Windows. We may be lucky in that we can ignore IE6 and earlier Firefox and Chrome, but my point is that something like jQuery does a damn fine job of abstracting away browser differences. May not be perfect, but better than we can afford to do. I say this because we probably all aware that we're stuck with JS in the browser for a while...
- wildranter 14y agoYou're right, I didn't go far enough to make myself clear on that point. The semantics of HTML tags could be pretty easily covered by reserved words for keys, and something like markdown for text formatting. From that we'd get all the benefits of a cleaner syntax, such as a saner grammar which could lead to cleaner APIs, less bugs, less maintenance, etc.
- johnyzee 14y agoThis is against the grain, but it is obvious to me that the way forward for web development is to rise above Javascript and simple DOM mangling, which is what most of these popular tools assist with. Javascript does not scale complexity and manipulating DOM elements directly is both error-prone and a lousy programming paradigm. We need something in between that offers a sane development model and deals with the complexity and anachronism of the underlying platform. GWT cross-compilation is an excellent example. It has enabled the painless development of complex Javascript-based web UIs[1], with the tool support of any other software development project. This is what I'm going to look to for the future of web application development, not patchy solutions to the complete mess that is barebones Javascript development. For examples of what I have done with GWT: TeampostgreSQL (http://www.teampostgresql.com http://www.teampostgresql.com), a rich PostgreSQL web interface, and my HTML5 game engine (http://www.webworks.dk/enginetest http://www.webworks.dk/enginetest). EDIT: By the way, it is only a matter of time until we have complete canvas-based UI libraries, frameworks and tools suites akin to Flex (probably from Adobe, too). When that happens the web will really have arrived as a rich client platform. I would be very surprised if there isn't a few projects in this space nearing completion at this point, since the underlying technology is basically ready.
- wahnfrieden 14y agoDirect DOM manipulation should be a lot cleaner once we have shadow DOM, don't you think? That lets us add abstraction and encapsulation to the DOM.
- cdent 14y agoI _hate_ web apps/sites/services created with GWT. They result in a) overcomplicated UIs b) assets which are completely opaque. Which runs contrary to the promise of the web: simple stuff that anyone can learn from. I realize this is an old saw that the young turks of HN probably don't care much about, but it is damn sad.
- camus 14y agothe promise of the web is "build once , run everywhere" , not "read the source code, ripoff that work". Nobody cares how it is done. the web is a plateform , the only things that matters is that the software runs on that plateform, without the need of going native.
- rietta 14y agoOverall, I think the OP's article is excellent.
- rizzom5000 14y agoTips to learn to survive? I don't know how anyone can even begin without familiarity with most of these. Some of them are somewhat mind boggling though. "...familiarize yourself with at least five..." MVC frameworks? What?
- pcl 14y agoIt's a good list. One nit: > websites are expected to work in different form factors by default Ironically, I found the font size of the article to be on the small side when browsing on my iPhone.
- Legion 14y agoInteresting that learning something besides .NET didn't make the list. (Or anything back-end at all, for that matter)
- danso 14y agoAs others have pointed out, it's hard to take this post seriously because of how poorly the site is implemented...but beyond that, the advice seems either painfully obvious or outright counterproductive. Moreover, it depends what kind of web development you want to do. If you want to work as part of a team in a top shop, then sure, know frameworks and write perfectly linted code. However, if you're a freelancer who survives by making small commercial sites, then you're working with people who don't care about a third of a second difference in load times. Or, they'll care way more that you get a button hover-animation to look slick than they will about downloading jQuery uncompressed. And if you're a freelancer/outside-party, you're not going to be able to insist on their IT to use your deploy processes anyway, so minifying/jammiting in a productive way may not even be an option.
- amazedsaint 14y agoMy blog is still on blogger, I havn't modified it much for the last few years, and the template is due for renewal as I put in the disclaimer towards the end of that article. But the points I put forward is mostly what I practice these days, and the basis is the consulting experience I had from revamping the websites/web products across multiple domains for the customers I've worked for.
- amazedsaint 14y agoAs there are lot of comments here, thought about clarifying few points in that article 1) About clean separation of concerns. A lot of customers expect you to cleanly separate your client side javascript/css/artifacts from your server side implementation. Even to an extent where you can just take it and repackage the same with minor modifications using a container like Phonegap, and distribute it for mobile devices later. HTML5's significance is beyond web - it can take your app beyond the browser. 2) About the REST Layer Anyway you are investing in building a web application, so you need to ensure the plumbing portion is re-usable beyond your traditional 'website'. If you want to build a native phone application or a Chrome plug in tomorrow, you should be able to use the same service layer.
- pjbrunet 14y agoBling for your LinkedIn profile.
- teffen 14y agoSeems like the JavaScript has become the glue to hold everything together now. I took a look at TodoMVC and I was a bit frustrated. I don't believe MVC has to be this cumbersome. Chaining callbacks, spaghetti inheritance; certainly better than a Jquery DOM mess but I wish there was something a little more straight forward.