Ask Slashdot: Value of Website Design Tools vs. Hand Coding?
An anonymous reader writes "I am pretty computer literate, and have a son who is extremely computer savvy. He taught himself C#, Javascript, built his own desktop with his Christmas and birthday money two years ago and is an avid reader of stackoverflow, reddit and many forums. He recently was asked to design a website for an architect, and likes to code by hand using Notepad++ and the Chrome developer tools. He uses CSS and Javascript libraries, but is convinced that all visual editors (Dreamweaver, Expression Web and so on) are only for extreme beginners and create non responsive, non compliant sites. I argue with him that while handcoding abilities are essential and great there is a value in knowing and using WYSIWYG editors. We agreed that having slashdot weigh in would be useful — comments appreciated on either the approach or good tools he can and should use."
WYSIWYG like Dreamweaver always write code that is hard to read so when you have to edit something manually it's a PITA. Also Dreamweaver tries to fix what you edit manually. Also DW etc all aren't always 100% compliant in their browser view, so things look great there and crappy elsewhere.
I see Dreamweaver code, I expect nothing but pain.
I like Panic's Coda, which is more of a web project oriented IDE than a Design Tool.
Skot Nelson music is my saviour / i was maimed by rock and roll
My experience with WYSIWYG editors mostly consists of having to come back after and maintain the site. It has invariably been a mess. Half of my effort is spent organizing the code before I can work with it. I'm sure a graphical editor can be written to create clean code, but I've yet to see one. Then again, many developers create the same kind of problems when coding by hand...
Designers will always upvote WYSIWYG editors. Hardcore hackers will always defend coding themselves, instead of drag-and-dropping and following wizards.
If you try to make a hacker use wizards to design a website, he'll fail, and the opposite also applies.
As long as he's adept as using the tools he's using, then he'll most likely succeed. Personally, I prefer to code the website myself. Why? Because I can see the code completely, and understand what's happening, and what every line means. I can always fix any bug found, because I know where it lies. If I had used some tool to generate it, there'd probably be parts of the code that I wouldn't understand and wouldn't know how to fix.
Hand coding is the only way to go. Modern web pages integrate HTML, CSS, and several different javascript libraries. They contain div's with dynamic content updated via AJAX. They are often built with templating libraries such as Rails' ERB, meaning you have code (conditional statements, for example) mixed into your page's HTML.
DOM structure matters - with a WYSIWYG tool like Dreamweaver, you have no control over the actual content of the page unless you go into HTML mode and basically use it like Notepad.
Your son is doing it the right way. If you want to save time, build a personal library of javascript libs and CSS snippets that you rely on. But skip the dedicated editors. You lose much much more than you gain.
Looking for a Rails developer in Chapel Hill?
It's been a while since I've used a WYSIWYG editor, I had to go back through and clean out a lot of unnecessary garbage from the HTML and make a few modifications. For some complex designs, it worked better than doing it all in a text editor but those were more the exception than the rule.
Hand coding doesn't mean you don't use tools to do your job.
Using a CMS will allow him to use the CSS customizations he loves, and javascript as well, while giving the architect something they can maintain after he's gone. Many drupal developers now prototype in drupal gardens (drupalgardens.com) exporting it when they're done or have reached the limit of the hosted environment. Either way, lynda.com has tutorials on the three major CMSes (wordpress, joomla, and drupal) as well as how to choose. Dreamweaver is a useful tool, but CMSes are a much better way to go. --Sam
You guys are reversed from the typical roles I would have expected. It sounds like your kid is a developer at heart, not a designer. Those tools you want him to use are for designers, which is why he doesn't like them. He doesn't think that way.
Find him something he can do as a developer, since it sounds like that will be where he's comfortable. There are too many "website design" people out there anyway.
My guess is Objective-C and butt humping.
I wish more websites were very basic. Too much Web 2.0 clutter in most of them now, that includes /.
Gopher is a sigh of relief vs. Web 2.0
Not bad but most likely completely off the mark, at least in regards to the question asked.
If you design a website for someone, you've lost right there. What you should design is a *system* and the first thing to design in this system is that who can do what with it. For one, whenever it's live, how much control does the owner of the website want over his website? Should he call you every time his phone number or opening hours changes and he naturally wants an update? Will you charge him for that? How much? What's your SLA on such requests? What if he wants a "quote of the day" ? Do you handle that by hand? Are you sure? etc.
Start from there and drill down to the expectations of both parties. Then find a middle ground.
Which tool should be used can only be defined afterward.
Write boring code, not shiny code!
It's a trade-off between speed and efficiency. The visual tools are faster for getting the page to look right, but horrible for the generated code. Hand coding takes longer but is much more efficient. The best of both worlds is to use a visual tool for the high-level layout, run it through an optimizer, and then hand-tweak the result for efficiency.
This turns out to be similar to the flow you'll experience "in the real world" working for a larger corporation. There will be a designer who uses the visual tool (if they make it past Photoshop) and then "throw it over the wall" to the developer who is left to clean up the mess. The developer will run it through an optimizer and then tweak the resulting code.
I will say that the Expression suite works really well in that it doesn't do horrible generated code and the tool allows you access to the underlying code. It's great for XAML, but it can do HTML, CSS, and Javascript.
Well, I'll start off by saying that your son sounds very smart and gifted -- although it also sounds like he is at that very special age where he knows everything. I too experienced such youthful bliss and ignorance but the only cure was time and experience. I might have even made similar claims that all visual editors are detrimental in some form or fashion. I have found myself shying away from absolutes like this and, actually, find it difficult to determine when something is "visual." Is the color scheme in my VIM and EMACS windows a "visual" editor? I find myself today locked in a love/hate relationship with several that I am running as I write this. I think the best course of action for you is to remind your son that nobody ever wrote a heavy integrated development environment with the intent of completely removing the burden of coding on the developer. Also, a solution that takes you 90% of the way quickly but still requires you to write out and augment that final 10% is still more useful than starting with nothing at all. I suggest you and your son work through the Rails 3 tutorial using scaffolds. This is an example where something from the command line augments your ability to stand up web applications quickly. I also suggest you do exercises with Eclipse (or I guess Visual Studio Express if he uses C#) and try to import 10 or 20 libraries into the project. Doing this with an IDE is much friendlier than doing this from the command line or hand writing ant/maven scripts.
... but then again, there's no reason to shirk productivity in the name of purity. When I was writing huge monolithic classes with no dependencies in college, I was doing everything in VI. Those days have passed, I must write modules that exist in a massive hierarchical tree for many teams now. I depend on IDEs and their integration with various other tools ... and I'm not ashamed to admit it.
There's nothing wrong with doing everything by hand
My rule of thumb is to let editors do the mindless work for you, but never let them do so much that you don't understand exactly what it is that they're doing. If you do allow them to do something so complicated you cannot understand it, you enter into dependence that cannot be undone. You will find yourself unable to augment the automation further and left with 90% solutions and unfinished projects.
Perhaps another line of reasoning to use with him is to ask him to write a windows program using just 0s and 1s or hex in a hex editor. When he cannot do this, ask him why he is okay with C# augmenting his abilities to control the computer. Then ask him why he draws the line there and why not allow more code (IDEs and their plugins) to do more work for him. Sure, everyone draws a line in the sand and sticks to it. I've met kernel hackers that don't even trust compilers. If your son chooses that path, then let him choose his own path.
My work here is dung.
Background: I've been a web developer since 1994 and have tried multiple visual editors from the beginning. And try to keep an open mind about new ones. But have yet to be impressed by the final outcome.
What you see is all that you get with a WYSIWYG. You can design and move things around for a template, then build a website from that template(s). But when it comes to redesigning, adding functionality, or updating the website that was built entirely with a visual editor, things get messy very quickly. A visual editor doesn't know what the developer is building and for what purpose, so it attempts to work around the browser quirks in a redundant manner. This leads to extra JS and CSS libraries, snippets, and junk that isn't always necessary. For a secondary developer, all of this extra junk becomes confusing and will cause major headaches.
Am I completely opposed to visual editors? No, but it is essential for any designer/developer to learn the mark-up first. Then, if it's essential for a specific project to learn how to use a WYSIWYG editor. But to always maintain a vigilant eye on what mark-up is being dumped on the pages.
-vert-
love the penguin
Why would you curse your children by indoctrinating them into the Microsoft ecosystem?
It sucks, it's a minority technology (i.e. the various Java platforms are the dominant business technology) and Microsoft is on the way out.
TFS:
He taught himself C#
Perhaps a better parent would discourage such efforts. If he doesn't study The True Language, he's a blasphemer and the books he's been reading should be burned.
Holy wars aside, learning OOP goes beyond the syntactical sugar of the actual language.
More Twoson than Cupertino
I've never used a WYSIWYG editor for any website and nobody worth their salt ever would. So your kid is correct and is learning it the right way.
However, what is just as essential (imho) as knowing how to code it all by hand is having a good grasp of graphic design and user experience. If you are able to master both you are a rare breed and extremely marketable in today's world.
The only real design tools you need to design websites is a copy of Photoshop and a good text editor. Everything else is basically fluff.
I make my living by making websites. We generally split the process into several parts:
Designers don't know how to code, HTML/CSS people usually know enough programming to code a dynamic template (that's why template engines like Smarty or HTML::Template were invented). Programmers don't even know how to use Photoshop and generally know a little about CSS so they can connect JavaScript if necessary, but not enough to know all the quirks of e.g. Internet Explorer 6 or absolute vs relative positioning.
WYSIWYG tools have no place in such process. They stand in the way, as the code they generate is usually not standards compliant, doesn't work cross-browser, etc. Also, some things are just too hard or impossible to do with WYWIWYS tools. Modern websites have very complex HTML structure and often use CSS libraries. Trying to force an editor into submission is usually harder and more time consuming then just writing your own code.
Design in a tool for designing. Photoshop is the choice of pros. I use Inkscape when I want to play with some designs and create mockups. Works very well and is free (beer & speech).
Code in a tool for coding. Anything from Vim to Coda to Notepad++ to DreamWeaver's code editor will do.
It's cool for your son to try to both design and develop and a website, but in the long run, he will have to chose one and stick to it if he wants to make it. In the professional world of web development, designers usually don't go near the code, and with a reason. If he is artistically inclined, then designing is good, but coding will be a distraction. If he is technically inclined, then designing a proper website will be too hard for him. He is better off just buying (or downloading for free) a PSD template and using it instead.
Today, if you're doing it right, hand-coding it should take less than than loading the editor. HTML should merely serve do indicate the structure of the page. Everything else should be done by CSS, and then it's best to use a browser tool like Firebug instead of an HTML editor.
Dilbert RSS feed
If you ask on /. the battle for editors is already lost. After all most people here use Linux and are fans of the command line so it is obvious that they will be anti-WYSIWYG tools.
I personally believe visual editors are really helpful and an IDE (as opposed to Notepad++) is a must.
Let the artist design the layout in a WYSIWYG editor,
Let the programmer design the delivery system in whatever IDE they want.
WYSIWYG editors are useless for coding, likewise development IDEs are useless for design.
A good design will let a programmer deliver their content in they way the designer wants.
A good system will let the artist have reign over content placement.
Your Art should be code agnostic. Your code should be design agnostic.
This is why there are two professions. Web Designers and Web Developers. When I was working on my own, designing *and* developing sites, I used dreamweaver. Now I work in a team, with a designer, and I've barely touched Dreamweaver in years. It's not the 'novice' factor, it's because I no longer need to design a website. I develop.
If the designer finds using Dreamweaver helps him develop faster, good for him. The great thing about HTML is that it can be passed from programme to programme and retain all its structure.
No WYSIWYG editor, or programming IDE, can replace actually communicating with your team.
The Article poster also mentions his son uses Google Dev Tools. Now, I'm assuming this is the Firebug-like console that lets you twiddle with the html tags and CSS values. Well, what's that if not a WYSIWYG tool?
It pays to be obvious, especially if you have a reputation for being subtle.
i think you mean well, but these are all specious points.
it's nice if a search engine can get done crawling your site faster than it did before. but there's no search algorithm that says, "wow that was pleasantly quick, i'm going to add relevancy points to this site simply because it was a joy to search." a site with 100x more content than yours but with information just as relevant as yours and full white hat obedience will take longer to index and still be ranked higher than yours. you could also hand code 1000 pages of efficient content and a competitor site that generated 100 pages of content can still load just as quickly and take less time to crawl. in the end, how fast the search engine crawled your site means jack shit. being a site worth visiting is still the best thing you can do for relevance.
whatever this "visual talent" is, it's not enough to perform every task necessary in web development -- unless you're making brochureware, in which case arguing about hand coding vs editors is stupid. wysywigs are popular with beginners because they hold your hand through the easy stuff. if you know how to write code, and write it well, wysywigs just get in the way. as for not being able to produce compliant sites, not every site needs to be compliant, and as for non responsive, that has nothing to do with whether dreamweaver wrote the code or you wrote it in vim.
everyone wants their site to function. this can be done by hand coding or with an IDE. i also deign to lump programs like dreamweaver into the IDE category. they are editors but they don't offer the advanced tools that IDEs provide. the tools they do offer are sometimes dangerous to have so close to your code, like the built-in ftp. one wrong click and your production site has all your broken dev code on it. i prefer to keep my ftp separate, like my kitchen and bathroom. ftp in your editor/IDE is like a toilet in your kitchen.
in reality, the reason why this argument persists is that choosing one over the other requires a tradeoff, and we all have different things we're willing to give up. text editors and command line editors can be extremely fast to use when all the features and shortcuts have been memorized. they're not always easy to memorize, but you can get a lot done really quickly. however, IDE users sacrifice that speed for stability and organization. some text editors have plugins or modules to accomplish what IDEs do (like debuggers and intellisense), but they're never as good as IDEs. it's only about what you're comfortable with, and whether different kinds of projects you work on change your comfort level.
it might be that if you're maintaining a fair number of simple sites, text editors are the way to go. you need to make changes fast and you need to oops undo those changes really fast. if you're working on one or two very large sites with multiple developers and you have numerous strictures to launching code, IDEs will most likely make your job easier and help manage the complexity for you. in my experience the coders who take advantage of the benefits of IDEs get the bigger, better paying jobs. i've worked with quite a few enterprise developers and they nearly all use IDEs. one exception is a guy who preferred a command line editor and ended up leaving programming for network administration. YMMV
insensitive clod overlords obligatory xkcd car analogy russian reversals whoosh pedant fanbois ftfy in 3...2...1..PROFIT