Ask Slashdot: Has the Time Passed For Coding Website from Scratch?
First time accepted submitter thomawack writes As a designer I always do webdesign from scratch and put them into CMSMS. Frameworks are too complicated to work into, their code is usually bloated and adaptable online solutions are/were limited in options. I know my way around html/css, but I am not a programmer. My problem is, always starting from scratch has become too expensive for most customers. I see more and more online adaptive solutions that seem to be more flexible, but I am a bit overwhelmed because there are so many solutions around. Is there something you can recommend?
Setup Dosbox runniing wordstar to do mailmerges to generate your temp pages.
That shit is hand tuned assembler, it will scream.
You wouldn't grow your own wheat, sugar cane, raise chickensc, etc for the ingredients for your choclate chip cookies. Just go buy the dough from the store. Good enough for 90% of clients out there. For the other 10%, you might make from scratch but you are still going to use store-bought ingredients.
...and write a generator, to your own specification.
Well, it really depends what they need but most folks want a website they can 'control' to some ability and with lot's of built in features. As you said there are many CMS' out there. I'd say pick one which appeals to you, maybe one which has a separate template system, since you're a designer, you can make a nice front end, that is all they will care about anyway. (with template scaffolding this should speed up development time).
/. will dismiss this and laugh but personally if i'm building a site for someone (usually for no money and limited time) I just install wordpress, 'secure it', then use or modify a theme. Just basic stuff, you can remove the meta links from the front page and other tweaks and now they have fully functioning site that you don't have to do much to. If you are hosting it, be prepared to apply security patches the instant they come out and backup the db.
I know all the php/wordpress snobs on
i) Frameworks are too complicated - but poster admits he is not a programmer (hence the framework difficulty) and unqualified to judge their complexity.
ii) Complains about things being too expensive to make (again, how is he making sites form scratch without being a programmer? I think he must at least have some coding skills, mor than he credits himself with)
The answer: Frameworks are there to reduce time to market; if he's refusing to use modern tools and frameworks, much is explained.
(I'm not suggesting frameworks are good in general; but a good framework is good in its niche; you want to put up a blog.. it takes 10 minutes using an existing blogging framework; you want to write it yourself, order of magnitude more time.)
So .. this is his problem, not a systemic problem?
-black
The technologies are changing quickly. You're going to have to man-up, and keep with the changing market, or else, pay the price. Custom coding websites is all but dead. If you can't build web-applications, you're screwed. Get with the times, or learn what the traditional-media advertising illustrators discovered the hard way.
Yeah, the time for coding them from scratch probably passed about 7-8 years ago. Can you still code them from scratch today? Yes, technically you can, but at most employers you would be way to slow on the productivity side. As a web developer and web hosting guy for a large Fortune 500 company, I can tell you that marketers expect to be able to get a very nice site with lots of bells and whistles up within just a few days anymore, with all kinds of custom features that allow them to edit the page without a developer. To meet that kind of demand, you can't code from scratch. You really need to use a CMS tool to handle the editing/admin functionality, and then some sort of RAD framework, whether it be .Net MVC, JQuery, AngularJS, etc (or multiple of these frameworks) to quickly set up the rest of your custom functionality. Otherwise they'll just go to someone else who can do it faster so that they can meet their ever shrinking time to market campaign goals.
This, by the way, is one of the reasons I'm no longer a developer. I personally enjoyed the nitty gritty of coding from scratch, and got bored quickly from just doing "information plumbing", where you pull from one or two databases, get to do a tiny bit of code but mostly the framework does everything interesting. I know lots of people prefer that because they don't want to deal with low level stuff, but that's not my bag.
Beware of bugs in the above code; I have only proved it correct, not tried it.
My advice is to become familiar with HTML/CSS/JS/PHP/MySQL or whatever and build your own stripped down frameworks, basic stuff like a CMS and frontend scaffolding. Then you can adapt that as need be, add bits on or take them away, change it while keeping costs down (since you've already built the basics) and maintain a minimal profile.
It's not that hard once you start laying the foundations.
There are still tech companies doing stuff that require high-paid expertise, but website design isn't one of those things. So much of the work has been already outsourced to third world countries there's no point anymore in trying when your next cheapest competition is willing to work for 5$ per week. Just get out of the web. Its no longer a high-paid or even respected career choice. You can make better money at Starbucks.
I should add that I use squarespace and hate it. I do NOT recommend it. Only for the stupidest of folks is it appropriate. Dunno what that says about me that I'm into year two of my subscription...
Except that's existed for the last 20 years and the demand for web developers is growing, not shrinking.
Here's my website. I invite anybody to look at the source code, and compare it against your run-of-the-mill WordPress website.
Here are the 249 lines of Python code that I use to render it. In addition to the source code, there are x6 template files (each less than 1KB large), and x1 CSS file (less than 2KB).
What the parent post says, rings true to me.
No need for Django, no need for frameworks, no need for deployment systems beyond DropBox.
"The long term savings in terms of enabling staff to go in and edit stuff live has saved a fortune." -- This especially rings true to me.
"I tried Django and the sheer volume of stuff I needed to do to get the same functionality up was huge and then the staff couldn't edit it because for all that's claimed for Django, there's a big model you have to get in you head before you can start meddling with it, and that means web professionals who cost a lot of money." -- And this too. (And I'm a professional Django developer, by day.)
I heard recently that there are people working on an "Indie Web" concept; I'm all in favor.
Man up, and get thee to a text editor!
Strange things are afoot at the Circle-K.
Your problem is you've mixed design with the site HTML.
Developers are notoriously bad at design work. Being a developer, I can tell you that we are not usually great at the artsy aspects it takes to design good sites.
However, if you give us a design, we can transform it (using our preferred frameworks) into a working site.
Somewhere along the way you got the idea that you can do it all, but that's your problem. You can't (and shouldn't) be coding or generating all of the pages. If your expertise is design, then have at it. But after your design is done, hand it over to a developer for implementation.
Just as I don't want to see a developer designing, I don't want to see a designer developing.
There are guys like Matthew James Taylor and David Walsh who code new and innovative interfaces and widgets - but even their sites are database driven (even maybe homegrown) CMS that they use to display their code inventions.
I write extensions for a popular CMS which make it more useful for myself and others, but an HTML/CSS only designer will have a tough learning curve to jump into that type of development as there are many languages working in concert (PHP/ASP/Java, JS, JSON, XML, SQL, INI, HTML, CSS, ???) with HTML/CSS being perhaps the least used.
Not that I couldn't, but I wouldn't hand code an entire site these days. Efficiency and productivity is the key now and you just can't compete with a modern CMS in those regards.
"Lame" - Galaxar
HTML is a markup language, not a programming language. Creating a web page with HTML is not programming. If you think it is, you're just wrong.
If your page isn't fully loaded in less than 2 seconds over a real world network without using cache, potential clients have will leave before the 1st page load.
If you can write pages that load fast, keep doing the custom work. If your pages are slow, fix it or fix your technique.
...than one of those bloated, slow-loading, all-Flash restaurant front-ends that take 20 seconds to load and animate before they show you the location, hours of operation, or any menus.
Lawrence Person (lawrencepersonh@gmailh.com (remove all "h"s to mail)
http://www.lawrenceperson.com/
Use something like Nikola or Pelican with [favourite python template system here] to hit the sweet spot between hand-coding/frameworking and CMS. You can adjust any part of the look, feel and templating easily and you can enable customers to have a very easy/cheap way to get the site up, running and maintainable.
Because it is a static website there is no security maintenance needed. You don't have to be a programmer to work with a lot of these static site generators and the time investment to learn them is quite low in my experience.
Also, you can always just drop a PHP script (or embed snippets that are compiled in) with the static site to do any dynamic stuff you may need.
Make your websites a PDF file. It will always look and print nicely without wasted time quibbling over screen size, browser compatibility, fonts, CMS security patches or complaints from clients who need your help changing x, y AND z by themselves for free.
The nice thing about PDF files creating them is just a click away for most WYSIWYG publishing systems and by withholding source document your clients will have no way of making any changes without paying you.
If you object to my response with reasonable arguments it may be better to consider a different approach better addressing your (customers) specific needs.
If all your client wants is a simple/stupid brochure site that they can maintain, just build it in Google Sites with a Google account they can own. You can do a whole site in 1-3 hours depending on how much custom graphics you have to build. You can reasonably charge $250-1000 depending on your time, and spend an hour training them on how to maintain it so you don't have to in perpetuity.
I've done this just a few times now (twice for free), and every time I'm glad I did. The more you dig into it, the more you realize it actually does allow for *some* customization. If you get into the scripting, you can do even more. I see tech-challenged people starting their small (1-20 people) brick & mortar businesses and being totally lost on things like document sharing, company email, web sites, cloud storage, etc. I just hook them up with the Google Business apps...$50/person/year. It's cheap and works.
I'm sorry, but your opinion seems to be wrong.
The beauty of frameworks and content management systems, is there are so many of them to choose from. You really need to do your research, and find one with a very simple templating system.
I, personally, have built my own. I've built and rebuilt it a dozen times now, and it is teetering between framework and CMS. I can crank out a nice, fully responsive, easily managed (with point and click editing) website in an evening.
My pricing is considered high to other local "shops" (ie. basement dwelling teenagers, or those who outsource to india).
I compete in the following ways:
- built fast (depending on project scope)
- no templates, every project is custom designed and developed
- complete customizablilty, and purpose built functionality (restricted by budget, of course)
- actual support (email, or telephone)
- hosted on our infrastructure
I will manage every aspect of the site, including content updates, online marketing, and social media.
Although, I will admit, I make more money building (standards compliant) web based applications for medium sized businesses.
this is just not true
any time you use code to write computer instructions it is "programming"
he uses CMSMS, which means he only codes part of the site "by hand"
internet coding is not complex compared to coding a first-person-shooter, but the demands of the individual coder are different
i've seen many coders spend 10 minutes writing some executable code then spend an hour figuring out how to get it to go where they want in the HTML page on a website to look right
HTML is structure and layout, not programming.
CSS is structured storing of display values, not programming.
Using a structured specified format to lay out static structural content is not quite the same as "computer instructions" Unless you call using notepad to write a shopping list "programming" (you're using the code of the alphabet to instruct the program to display them in a specific static order.....)
If you need your site to do more than display pages of content, you need something more.
A programming language of some sort.
There's javascript, python, php, asp, etc, etc, etc... All web programming languages.
Show me the pseudocode version of something written in pure html and css, and we'll see how much programming is involved.
Show me how HTML manages mutable variables, and basic logic structures and loops....
"lt;dr" is the correct response to most of my posts.
WordPress is the store-bought bread solution. Does what most people need, is advanced enough that most work can be done through the admin GUI, and plugins are easy enough to build that a fellow by-hand person can figure them out without too much difficulty.
The only caveat I'd put on using WordPress is that you need to treat updates like you would on Windows: make sure your WordPress core and plugins are always up to date. Its huge user-base means there's a lot more hackers running automated exploits that'll bog-down a web hosting server if you get compromised, and that might get your account suspended. On our shared hosting we're now recommending clients install WordPress via Installatron (a cPanel addon) and have it automatically patch everything by default.
Simpler sites, but more OS-level issues from going mainstream.
--- Need web hosting?
I can't think of a single thing I do or would want to do with a computer that doesn't have some sort of toolkit, library, framework, or other component out there to get a "leg up" on doing the work, unless you're only doing the most basic and simplistic pieces of code or presentation. In the case of HTML, that means a text document without images, video, or sound; never mind "active" components of the interface via JavaScript.
The hardest lesson to learn as a programmer is that "not invented here" is code for "I am too arrogant to use someone else's solution."
I do not fail; I succeed at finding out what does not work.
Using a framework would really make sense for the client side, imo - ie CSS, Javascript, HTML, to cope with browsers differences and other language peculiarities, the result is usually immediately visible, tangible. The server side otoh may require more attention to detail if data from client is checked / analyzed / processed / stored - leaving that responsability to a framework will likely produce a lot of spaghetti code doing only approximately what you want, and any manual maintenance (ie modify the resulting code directly) is hard and cut the consistency links with the FM.
Slashdot, fix the reply notifications... You won't get away with it...
Because of that I continue with my own CMS or create my own then feel foolish for doing so rather than figure out how to get around the integration problems or break them apart to improve their performance.
Anyone else go through this?
Design right now is the biggest fucking problem.
I see the shit going up these days that's designers are crapping out, yes the designers, and I want to see the developers going back to doing the design.
Crap like: ohh look we have continues pagination on a page, and see the floating search/header bar that scrolls down the page as you scroll. And pages that transform as you type into the search bar.
It's fucking awful! Stop that shit!
Anyone else go through this?
Nope. Throwing faster hardware at a problem is much cheaper than having a team of developers spend weeks optimizing a framework or making a new one.
Karma: Terrifying (mostly affected by atrocities you've committed)
Now I have a repertoire of modules I can use to put together a site for a given situation.
Twinstiq, game news
Wrong. Your customers and customers customers decide when you don't support your OS and ancient version of IE.
XP still has more daily users than all of Macosx and will continue to be used for another decade. Just because update isn't supported anymore doesn't mean the average IE 8 user who doesn't know what a browser even is will stop using it until the machine no longer turns on.
He will think you suck and not his platform
http://saveie6.com/
You wouldn't grow your own wheat, sugar cane, raise chickensc, etc for the ingredients for your choclate chip cookies. Just go buy the dough from the store.
That's quite a leap man. No I would not grow my own sugar cane, but store bought dough is disgusting compared to small effort to make your own cookies from ingredients you buy at a store...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
And for Ruby fans there are Middleman and Jekyll (among others) with [favorite Ruby template system here].
In fact, you can mix and match templates from like a couple-dozen choices, (using partials) even in the same page. Write headers, footers, menus, etc. in Slim, body text in Markdown, head material (script and style links, etc.) in ERB etc. etc. etc.
Slim is great for fine-grained elements - it's got the wierd HAML-like syntax but without the stupidity of HAML. Takes some getting used-to, but perfect for the 2 to 10-line partials I write for table cells, list items, list containers, menu choices, etc. Markdown is great for writing text content that is actually readable in source form. sometimes you just want good-old ugly ERB.
I use Middleman for PhoneGap/Cordova projects. I want to throw things when I see people hand-coding Phonegap documents and then doing mass edits when they change their minds about structure or appearance! Use a damn SSG! Please stop the cut-and-paste madness!
I also use build tools like rake to make custom "pre-build" systems even when I DO have a framework. I've done this to create a family of similar mobile apps. Here's a presentation I did on it at Motorola AppForum 2014. The first half is probably of interest here. (The second half is way RhoMobile Rhodes-specific, and afraid it is lacking the audio - the first half is pretty understandable from just the slides.)
Large-Scale Multi-App Development Using Rhodes
While I don't typically create websites (I write hybrid mobile apps) this can also be a great approach for websites if you need to "brand" similar sites for multiple clients, and then each site wants somewhat different features. The above link shows how I created 6 form-filling data-collection apps with similarities but considerable different details, with something like 80% of the app code shared. The same techniques can be applied to websites.
Not all frameworks are bloated and complicated. You can throw a website together with Sinatra pretty quickly, with just a few lines of code.
Don't bother coding from scratch. Any client for whom money is an object, you're better off just hanging out and drinking beers with as you co-plan world domination. Eventually if you ask enough detailed product spec questions the client will realize they are in over their heads, get intimidated and abandon the project. They got off lucky. You got free beer.
You mean declarative, not functional. HTML does not have functions, which is a big clue that it isn't a functional language. Your other examples are just plain wrong (SQL is definitely not a functional language and isn't even a declarative language, PostScript is imperative language and is a functional language if you squint a bit).
I am TheRaven on Soylent News
The simplest place to draw the line: Does it have conditional flow control? If so, it's a programming language, if not then it isn't. If you can't write some equivalent of an if statement, then it's not a programming language. There are some languages (e.g. BPF bytecodes) that are intentionally not Turing Complete, because having finite and deterministic run time is a design goal, so they omit loops, but they do have conditionals (but only forward branches).
I am TheRaven on Soylent News
Well sure. No one should ever invent anything without written permission from the Flying Spaghetti Monster, countersigned by Bill Gates, His Holiness the Pope and the ghost of Alan Turing. I mean everyone knows that!
Seriously, I quite agree with Dutch Gun's point that we all build on the work of others. I just think that blindly accepting third party solutions can be just as bad as blindly rejecting them. And if no-one ever reinvented the wheel, we'd probably still be coding in COBOL
Don't let THEM immanentize the Eschaton!
I'd ask yourself (or the client):
If the answer to several of those questions is "yes" and you don't already have a bulging toolkit of your own solutions, then I'd go with off-the-shelf CMS or blogging software. Alternatively, you could do a really nice front-end "sales brochure" in lovingly handcrafted HTML and then link to a CMS/Blog for news, support, customer forums etc.
Frameworks... can have uses but beware the "rapid application development" tarpit whereby you get your basic site/application working in record time and then hit a brick wall because you need to do something that the framework designer never anticipated.
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
Your customers and customers customers decide when you don't support your OS and ancient version of IE.
When your customer can't take standard measures to protect the confidentiality of its own information or the information of your "customers customers", it's time to fire a customer.
Your food analogy works quite well, I think.
If I want a quick but useful meal when I get home after a very long day, I can pick up a ready meal from the store and throw it in the microwave or I can stop by a burger joint and get some fast food. This requires negligible effort and makes me not hungry any more.
Alternatively, I can pick up some meat and vegetables and a tin of sauce from the store or the market and cook something myself following a recipe in a book. This requires more work from me, but it probably tastes better and/or costs less and/or has nutritional benefits over the ready meal.
If I want a superb dinner, I will go to a good restaurant and let their chefs make dinner for me. They are going to make everything fresh from their own choices of raw ingredients and to their own recipes, but they will do a much better job than me, producing a meal where everything goes together perfectly, the nutrition is balanced, and the presentation is excellent. Of course, I'll have to wait while they prepare and cook the meal, and I'll have to pay more for it.
If you want a self-hosted blog site in half an hour, nothing will be faster than installing ready-made blogging software like WP and configuring it for a few minutes.
If you have more demanding requirements but you're still basically talking about a form-based front-end for a CRUD app, you can probably get that done quickest by developing with heavy frameworks like React or Angular.
If you want to build something larger and more specialised, where you need greater levels of control and flexibility, you'll probably be better off putting together a team with the skills to build anything you need entirely bespoke. They can still use existing tools if and when they're actually useful -- going this route does not mean you build every last detail from scratch -- but crucially, they'll have no problem creating something new if that gets better results and they won't have any clutter getting in their way when they do so.
Obviously the price, timescales and quality of results all increase sharply from each of these levels to the next. You need to decide how important that fine tuning really is for any given project, and look at your budget and timescales, and then build the best thing you can within your constraints.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
12 minutes later, hot chocolate chip cookies.
Make cookies with a recipe that uses actual butter just once and compare them you to "Toll House" and you will never go back.
Plus you get to decide the kind and QUANTITY (hint: a lot) of chocolate you use in your own custom cookies. And it's really simple to just add a few things together to make real cookies.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
This is a pretty accurate summary of how you actually do real web development, and why wordpress sites (that are not priimarily blog oriented) suck. The problem is and always has been amateur or incompetent web 'designers', they used to make Flash sites, remember those?, because all they could do was flash, now they make these wordpress/jquery monstrosities, both are dead ends for the client, since it's very hard to impossible to maintain the stuff over time, and it's almost always a bad way to do a real site, though, exactly as with Flash, they look nice and shiny when you first see them. Developers think of that type of problem, designers don't, and that's how you can tell if you are a designer type or a developer type. Now, if all you have are small time clients, who cares what you use, the ones that are serious will learn and fix the mistake by going more pro, the ones who don't, will stay small, the rest will end up with what they always end up with in the end, nothing.
For the guy who said you don't know what you're talking about, re hand coding the photoshop design, that is a clear indication he/she has no clue about what they are talking about, since this is how you do it if you are a pro. Anyone who uses export to html from any software product and believes that's a good idea is obviously an amateur or a typical web designer trying to be a web developer but not knowing how to code.
If I explain to a client the role of a designer, I will tell them, they are about 1 to 5% of the project, and they follow what we tell them to do. As time goes on, and with real web development, the site does in fact go on, not grind down into a steaming pile, that percentage gets smaller and smaller. The developer{s) is (are) the rest. I have actually gotten good code from designers by the way, clean high quality css/html 5, because we spec'ed css/html5 as a requirement, took a few tries to find someone competent though, so I'm not going to diss all designers, just most of them. And the ones that understand the work flow, design to specs, hand off design to those who code the design, implement as a template, are also great to work with, so it's really just this niche of 'designers' who have no clue how to do anything but still try to make sites, that are the problem, but even they are fine since the web will always have this low end thing, that successful people/site owners come away from after being burned a few times by it.
A quality CMS that is picked to meet the needs of a client, which is the correct choice for almost all websites that are not blogs (and wordpress with good clean templating is a good choice for a blog, I would use that too), is a fine way to make sites. But the problem is, a quality cms is sort of hard to run, and not always easy to update/upgrade. And too many people view the choice as wordpress or drupal, both of which are awful choices for most websites, unless you are running a blog or a huge heavy traffic heavy content update type site like, whitehouse.gov, for example. Between that are many options, some, like Modx, are developer oriented, and really a joy to run, but just happen to create by default exactly what most site owners actually want, a cleanly templated and easy to update and operate website that is a hierarchically organized collection of resources with a standard navigation to access them, that office staff can run by themselves, with the developer just adding features as required by the admin staff. I was somewhat amazed when I started seeing these wordpress monstrosities appearing, it was instantly obvious based on the terrible templating and implementation that these would inevitably fail on upgrades at some point because of too many conflicting extensions etc, besides being terribly slow and absurdly inefficient.
But as with all bad designer fads, as clients realize they are left with unusable junk, this fad too, like flash sites before them, will fade away, and the site operators who are going to succeed long term will move to professional solutions, an