Hi, I'm Jess. I use Python to craft web apps and sift data. I'm honing my full-stack development chops on Author Alcove.
hah never looked at it this way
I dont know if I agree with you these are pretty nice looking…
I sense a Q… followed by another Q
You’re an idiot.
What a convincing rebuttal.
I’ve used both here is my view on it
Reason, ruby on rails is more commonly used in web environments. Ruby has a nice fast math notation part in it, and its more a follow up to people who used Perl and want a real programing language instead.
However python is much older and has a different origin. Its not a main web language (although web services can use python). Since however its not mainly used by web people dont suspect great web pages. Rather with python think of command line things, think of easy interaction with openCV, or think of easy integration with scientific modules.
For starters dough there is a great forum to start with python where newbies and advanced programmers are very active.
not as great looking but great content for any newbie
I’m sure I’m not the first to notice, but it’s ironic that this Python forum is built with PHP.
Also this site :)
I’ve always enjoyed about every product that Dumbwaiter Design has released. They’re a Django shop and all of their sites are top notch.
I’m not affiliated with them, I follow @stevelosh on twitter but he’s not working there anymore. Even their Django dash entry was well done.
Those guys do make some good looking stuff. Thanks for the link.
As someone who has evaluated Ruby on Rails and is now learning Python and considering it and Django for use on a new project, I completely agree with this article. I really like how clean and simple the Python language is. But the sites about Python look extremely dated and the user community is nowhere near as vibrant as the Ruby on Rails community. I don’t get that there’s that same sense of excitement in being a Python web developer as there is in developing with RoR. Python deserves better!
Absolutely. There is no technical reason why Python sites look bad. So how come a lot of them do?
The reasons behind the question “why?” are as wide and varied as the number of people developing the sites. It could be simple lack of resources, it could be lack of experience, or simply the fact that getting the end result out was more important than the design… or in other terms, focus on content and usability (to mean everything technically works and people can get to the data without waiting for a designer to skin the site) overruled flash and sexiness. Maybe its a matter of taste, maybe they like the old school square column/sidebar layout, it could be the background of the user base (python is more science/sys admin based users vs Ruby’s more artsy user base) is showing through…. who knows, we could speculate for hours. The point is, the question is a subjective one, not an objective one. Without a technical tie in to the language, there is no objective answer to the question.
There are a few premises in the article:
1 – That Python interfaces aren’t as well designed as Ruby interfaces
2 – This has an affect on the number of people who are willing to pay to build stuff in Python and on the number of people who learn Python.
I’m not sure if you are disagreeing with #1 by saying that design is subjective, or if you are saying that it isn’t really worth talking about why Python sites are less attractive, despite the fact that figuring that out could provide some solutions to #2.
First, design is very subjective if we are only talking about “making stuff pretty”, but stuff like UX/UI design can be done objectively by doing user studies and measuring stuff like bounce rates or conversion rates. One design is objectively better than another if a visitor can more easily find the information they need. I don’t have access to any of the stats for the sites I mentioned in the article, so the only kind of comparisons I can make are more gut feeling ones. For me, stuff built using Ruby tends to be easier and more pleasant to use than stuff built using Python. That is a subjective statement, but I still think it’s worthwhile to talk about (especially when coming from a Python developer).
I also think it is worthwhile to speculate why this is the case, because coming up with some ideas could lead to solutions for improving the UI of stuff written in Python. That would be a good thing for the Python community.
I agree with much of what you say. In fact I only disagree with the aspect that the lack of good design is fundamentally related to the Python programming language itself.
As to your first point, perhaps I am not understanding exactly what interfaces you are referring to, but from my experience, the interfaces on the back end language have little to do with the overall style of the front end as that is handled by other technologies. If you are referring to frameworks and the interfaces thereof (i.e. templating engines, routing protocols etc) then those should be discussed directly not bypassed to discuss python… e.g. compare Rails to Django or Pylons/Pyramid or Flask, not Python to Ruby.
I do agree with your second point. Just as I take away a first impression about a company when I see its site, I can certainly understand how the number of sites with less than ideal style can affect the overall impression of python based sites. I am not saying its not worth discussing why the number of python sites are seemingly more poorly designed, only that the discussion is better framed around teaching/encouraging good design principles. This along with resources to learn the associated technologies for implementing front end design will reduce the risk of people seeing articles like this and thinking its a fundamental aspect of Python and so walk away from learning it or thinking that if they learned something else they will automatically have better designed sites.
>> In fact I only disagree with the aspect that the lack of good design is fundamentally related to the Python programming language itself.
I don’t mean to imply that there is something about the Python language that causes bad frontend design. This is not the case. However, there must be something about the Python community that is contributing to this problem. Maybe we don’t value good design, or maybe we don’t know how to connect with good designers and UX/UI people.
>> As to your first point, perhaps I am not understanding exactly what interfaces you are referring to…
I apologize for not being clear. When I say “interface” here I am talking about the user interface. So the “design” or “front end”, not the programming interface.
>> I am not saying its not worth discussing why the number of python sites are seemingly more poorly designed, only that the discussion is better framed around teaching/encouraging good design principles.
Thanks for calling this out – the framing of the article should have been better. Pointing out examples of (subjectively) good and bad design will perhaps help get people to acknowledge the problem, but it doesn’t make any progress toward actually fixing it. If I was a designer I might feel more comfortable about recommending specific design principles, but referring people to some expert sources (the books by Jarrod Drysdale, Sacha Greif, and David Kadavy) is at least a step in the right direction.
I would not want the blogging software I use to be written by a designer …
I have to agree about the general state of Python websites. But can we get a co-article named “Dear Ruby, why do you use all of the RAM in my servers, just to run a simple blog?”
I’d love to see the Python community get some design chops, but not if it means focusing more on marketing than quality code.
I wouldn’t want the Python community to focus on marketing at the expense of quality code either. The Python community does an awesome job when it comes to providing code, tools, tutorials, guidance for new devs, etc.
P.S. I’ll wait on you to write the “Dear Ruby…” article.
Haha, look at the Smalltalk community design skills. It’s pretty impressive :p
This makes me wonder… If a few designers and ux people got together for a beautify Smalltalk project, would it have an effect on the number of people who learn it?
I don’t know for Smalltalk tools per se. But all the stuff around (websites, logo)…
Great article, I almost feel bad that I linked to the Ruby resources not python.
General feedback: you guys need to all a date to your articles.
This is like the most ridicoulous blog post I’ve ever read in my life.
I am sorry but blaming apples for how oranges taste is like the most unthinkable argument I’ve ever came across in my life.
well, let’s take your first example: the python page looks like something organized and friendly where you could potentially learn something. the ruby page looks more like the cover of a “for idiots” book. even the “…in 15 minutes” stuff is there.
the rest of your examples are similar. i don’t do much python, and i don’t do web stuff, but based on your examples, i’d choose python any time.
FWIW, Heroku fully supports Python now :)
Your point still stands though.
In Python developers need to improve the interface of our projects.
Heh. Nice try. You’re comparing the top page of the Django documentation with the top page of the Rails documentation. Have you looked at what it takes to actually find the information & documentation you want? For example, let me show you:
Ruby’s use of frames (yes, old-school HTML frames) is totally unacceptable. Google results pop you down into a place where you can’t navigate back up again. Python is fully and well documented. Let’s compare Rails vs. Django
Django Forms: https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs
Rails FormHelper: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html
Please. It’s comical how ugly and poorly documented Rails is.
Good point. For people using the docs, Python does a great job. But for people who are evaluating whether to learn Python or Ruby, I think they will be hitting the front pages and exploring from there. Its a very real possibility that usability or design issues on the front page will negatively affect Python adoption.
That’s an interesting point. Am I weird to say that I appreciate how quickly you can find the info you want in the Python documentation? It’s clear exactly where to look, everything is well linked, etc. On the other hand, RoR’s website makes you feel excited…
One thing that Python really has going for it is Sphinx. Is there an equivalent for Ruby documentation? Quick web search reveals yard and RDoc, but I’m not sure.
While coding, it’s great to be able to be able to look up information on functions from the command line (with pydoc or help).
You are pointing to the old rails 2.3 documentation, this is the one you should have used:
I can only imagine that it’s the demographics of who learns the languages. Anecdotally, at least, nearly all the designers/UX people I know who’ve decided to learn the development side of things have gone to Railsbridge workshops (or similar) and learned Rails. I don’t know how or when it started, but there’s a lot of overlap between the design and Rails communities and that commonality perpetuates itself. (Birds of a feather flock together and all that.)
Whereas most Pythonistas it seems started out as coders and stuck with it. (Plus the science majors who were introduced via scipy et al.) I’m one of the weirdo designers who happened to fall in love with Python later in life and who doesn’t really get Ruby; we exist, but it’s kinda lonely over here. And resource-wise, honestly, when one of my designer friends tells me that they want to learn web programming and don’t know where to start, it’s hard for me to not wistfully point them to Railsbridge et al. The resources and the attitude for newcomers and designers are already there, where they aren’t as much in most Python groups. I’m working on changing this, but it’s slow.
tldr; It’s not (just) a matter of knowing to hire a designer or not, it’s whether you’re actively recruiting designers to code with you and join your community.
Thanks Karen that’s interesting. I had assumed that Python did a better job of welcoming women looking to learn programming, but I didn’t know about Railsbridge which is an entire organization devoted to free rails workshops for women and their friends.
>> The resources and the attitude for newcomers and designers are already there, where they aren’t as much in most Python groups. I’m working on changing this, but it’s slow.
How can I help?
The only thing I can offer is that Udacity is starting to change things, with really amazing videos and examples, well-documented, well-supported, and all focused on Python in all different forms.
Unfortunately, there is *nothing* about front-end design yet, but it at least has a fun, supportive environment. (and there’s a webapps class by the founder of Reddit now too!)
The django site is prettier and cleaner the the convaluted rails site.
Site design, so it is and needs fix.
When I started exploring Python web development frameworks a year ago, exactly this aspect kept me diving me into any one of them! looking at architecture of leading python web dev frameworks chances are little with’em. sadly. Maybe be something need to be done from absolute scratch!
You sir are a moron
The Django site was designed by Wilson Miner, former designer at Apple, and it’s definitely not ugly.
The left side is nice.
The right one is filled with garbage.
as web designer and also a programmer, I think python website resources has it’s purposes since we don’t need any polished web (that sacrifice bandwidth and make it slow to load) just to find how to array slicing in python
Sites built using Ruby on Rails has overcome the features of Python.
Websites based on Ruby on Rails look attractive and more dynamic as compared to Python.
Totally agree with the article.
I think part of this problem comes from the variety of python web frameworks existants out in the field. If one chooses Ruby, there’s Rails and thats it. But what about python? Quite a lot of different webframeworks to choose from! And webdesign must be aligned with the inter-structure where it runs from. RoR webdesigners have a lot less to learn before laying their code.
no, I simply cannot agree with this line of reasoning. The front end design, as I explained above, has nothing to do with the back end mechanics. Even considering frameworks with different tools to generate the front end html, that is as far as the back end interacts with the front end. Once the HTML is generated, either boilerplate or via a template system, the design, the look, feel, and usability of the site is based on CSS and JS (possibly some 3rd party tech like Flash if you are developing for older browser tech). To link the two is as silly as saying the engine in a Gremlin is responsible for its ugliness.
I have been looking more at things relating to graphic design and my stance on this has only been strengthened after pointedly spending time educating myself further in the principles of graphic design.
The only thing limiting Python sites aesthetics are the developers themselves. As Jess and I discussed above, the lack of better design does have an impact on the overall perception of the community, and this is unfortunate. However, there is no legitimate connection to the majority of pages backed by python being ugly, and the python language itself. What needs to be addressed is a better exposure of design principles to the developers, not merely working in a different language or framework. Ruby or java or .NET offer nothing of direct significance that will make the site inherently more attractive.
On a side note. I have purchased the Design For Hackers book Jess recommended as well as The Elements of Graphic Design I am about a quarter of the way through this one. I also purchased a few books on typography as this is a critical part of good design for the web. So far they all look good, though I have not read them all yet, only so much time in a day :-)
Python scripts are a terse computer program, Ruby scripts are a concise design document. Python is designed with terseness and professionalism in mind, Ruby is written with conciseness and developer happiness in mind.
In Python, whitespace is part of the syntax so your program will look a certain way depending on your code, in Ruby whitespace is there if you want it, gone otherwise. You can spread your code out and it won’t affect the program in any way.
For Hello World;
puts “Hello World”
The brackets scream COMPUTER_PROGRAM so when confronted with that a lot of people will panic and then say they have no idea what it does. puts ” ” on the other hand is easy to read, while still being concise. I should probably point out that terse and concise are being used differently here, concise being simplistic (no flowery sentences) meets developer happiness (ease of reading), terseness being simplistic meets professionalism in the computing world (Think Microsoft ten years ago). One has lots of brackets and proper formatting, the other has much less “terminology” and leaves you to format as you please, provided it’s syntactically correct of course. Think of it like noise vs signal at the macro level and cryptic vs clear at the micro level.
The websites for languages to the best of my knowledge will reflect the particular language design process, code of conduct and thought process for coding in it. Take VB.NET, verbose and made by a very large, very rich, very professional company. The website looks like it’s written by a marketer who gets paid a fortune but has no imagination and no experience with the language.
Ruby websites (especially a few of the tutorial ones, Hackety-Hack for instance) look like they’ve been written by an artistic five year old in crayon for the sheer joy of doing so. Any language that is built around design and developer happiness is going to affect everything it’s associated with. It can’t not, to abuse the English language.
The only immediate solution is to be happy and code in Ruby. =P
A funny note, even the Wikipedia page for Ruby
is full of colour and whitespace.
That’s an interesting perspective. To me, I get thrown off by all the colons and question marks and things in Ruby code, but I’m definitely more comfortable with computers I guess.
That said, I don’t see “puts” as being particular obvious as a statement that means “display this text”…I think of “put” meaning “put in” as in, I’m going to put x in y. I find print clearer, but I completely recognize that it’s a bias from other programming languages
Uh… You do, of course, know that:
print “hello world” # works just fine in python.
And also has the benefit of using actual words instead of ‘puts’.
Re TFA: All it means is that the Rails community is more superficial. That’s it.
agreed, which also makes me nervous about a web application created by a (lol) “Ruby Designer”… I mean with back-end development, you should be focusing on system design, data flow, modularity and decoupling, abstraction.
The last thing on a back end developers mind should be how pretty it is visually, that is the job of the front-end developer and the UI/x architect.
Not only is
print “Hello World”
perfectly legal python (try it!),
is perfectly legal ruby (again, try it!)
if “puts” is your only example of how ruby is more like a natural language then i despair, because every time I look at ruby code:
I think wtf is the colon doing before that word? what does it mean? (in english a colon after a word means that there is a list of related information
When I see pipe character, I mentally think oh they are passing information into this new variable… but the subtle difference is that this is actually the beginning of a multi line lambda.
Ruby may have tried to be a natural language, but it fails miserably, ends up being so littered with characters in places that are just plain confusing to grok.
Python is for serious people. Serious people write plain html. Fuck “style”.
Our High Priest Van Rossum and his divine in dented language. Boring, like the other religions.
This is very personal opinion and you can find 100s applications that have good UI design and backend is python.
Loved your article, and I concur python is a beautiful language but it pales in comparison to ruby in design department. I love the creative aspect of web development and I will really look into the links provided by you, and hopefully create something beautiful in python.
Rails aims to simplify the creation of websites by performing some ‘magic’ at the background, such as AJAX calls.
However, I am not really sure that the same is done by Python’s frameworks. Thus, Python’s developers would have to spend, not waste, more time to program what Rails provide and what Python lacks.
Rails developers design beautiful interfaces while Python developers program the missing parts.
I am not saying it is a bad thing. I feel like I have to know how the missing parts work, and maybe improve them.
I half agree with you. There are way too many ugly python sites and there are way less ugly ruby sites. However, I do not agree with your comparison for django and rails. To me the django site is much more beautiful and well organized then the rails one, and I have used both extensively. Also one other comparison is the http://www.ruby-lang.com and the http://www.python.org. Both sites are not beautiful, but the way I can access tutorial or documentation on the python site is more clear and simple.
One example of good looking python web site: http://disqus.com/
Your reference to a “lightening talk” was in fact a “lightning talk”.
I’ve noticed this too. Very true, but don’t know why.
So then how can you prove that it’s true?
I find the ruby ones ugly. i get in the world of startups that you have to follow suit and make things look hideous but thats fashion yeh. At least the python sites are well engineered and structured, the ruby examples you posted are just fancy bullshit marketing terms on a screen and in a years time will be out of date unlike the python ones which seem timeless imho.
its in the eye of the beholder.
Great article… and so true. I expect a large part of the python community is made up of the more technical folks, whose idea of design is a matplotlib chart.
I tried learning Ruby once and realized that I could not remember the complicated syntax – can’t keep them in my head like C where there are very few to remember. Not so with Python, and the power that it wields without having to torture your brain to understand the basics. Ruby is superior? Even so (but that is debatable), the complexity that I have to go through is just not worth my time because I sure going to forget them anyway and have to start over again. Yeah, simple is better than complex in doing the same thing.
What did you think of the new python.org?
“What’s in a name?”
Apparently, stigma leading to bad design. Snakes are ugly, jewels are pretty.
I rather prefer a simple factory that produces fast cars over a fancy factory that produces slow cars.
Rails community is noisy. Once I watched a talk called ‘Snakes and Rubies’ where creators of Django and Rails would talk about good and bad of each other’s frameworks. I did not like the way rails creator talked so I choose to learn Django instead.
Cool article, buy super biased. I can easily find awesome designs for any framework, anytime, and likewise crappy ones for the same. And, to be fair, Django’s site is now awesome. And have you seen Django CMS? Beautiful. True, you wrote this when many sites on they web looked bad (in the last few years we’ve seen an explosion of slick sites), but that’s no excuse. Finally, we all know that backend and front are fully decoupled, so I’d say statistically it’s just as likely to find an ugly front, covering up a pretty back, as it is to find the opposite. I know part of your argument is that Python developers don’t care. Being one, I disagree… I can say that I always try design a sleek and attractive front.
Notify me of follow-up comments by email.
Notify me of new posts by email.
Browse the article archives.
You can have new articles delivered to your inbox.
© 2007-2015 GrokCode