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.
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
My guess is Objective-C and butt humping.
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!
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.
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 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.