What web frameworks and languages have the lowest development time? - language-agnostic

I'm trying to get a few web development ideas off the ground. Unfortunately I will be the only developer, so I'm focusing on getting a good debuggable, testable setup going that I can develop applications rapidly with.
Which languages, development styles and frameworks would you recommend for rapid development? Last time I checked RoR was the next big thing but that was a while back.

Ruby on Rails is a good choice for rapid prototyping. It's simple, clean and easily learned. PHP also offers a fairly low learning curve and a wide variety of built-in functionality for accomplishing most tasks. Both languages have their shortcomings, but on small-team projects for low to moderate traffic sites, you aren't likely to bump up against them.

The one you know best.

For people who are comfortable with Python there's also Django.
I guess it is pretty much an equivalent to Ruby on Rails (although I never used Ruby on Rails). Django's concept is to have many autonomous applications which can be used together in order to build small to large scale websites. It has great documentation, although deployment can be quite a hassle. Unfortunately it's not supported by many hosters.

PHP with Zend Framework has comparetively lower development time.

If you are familiar with C# or VB.NET and HTML then ASP.NET is also a very good option.

Just to add another, GWT (Google Web Toolkit) is an awesome option. It allows you to write all of your code in one language (more or less, you'll still need a bit of css --for the record ASP.NET allows this as well) and you can create really rich applications with all kinds of awesome javascript and ajax stuff without needing to know javascript. Their tutorials are great and personally, I think you can get off the ground really, really quickly.

I guess it matters more as to what languages you're most familiar with.
Whatever that language is, look for a good MVC framework for it.

Related

Cocoa, Objective-C to HTML?

As far as I've been able to find, there seems to be one option for building websites/web applications in Objective-J with Cappuccino.
The .NET is a huge framework that of course can compile for the web. I don't think it's a stupid question to ask whether or not Objective-C can be used for the same purpose.
Apple doesn't advertise being able to develop websites with Objective-C, but I thought I'd ask anyways.
Other than Cappuccino, is it possible or just completely not possible?
It'd be possible to build websites in Objective-C, the same way you'd be able to do it in C++ or even C.
There are pros and cons to both. The main pro is that these languages are generally more mature, robust and better featured than php, ruby etc. However, since they are not generally used for that purpose (unfortunately), there aren't many frameworks and/or workflows available. The most recognized for Obj-C is GNUstepWeb.
You also have to consider what you're doing. If you're building a web application that involves models, reports, etc, this would be a good way to go. On the other hand, if you're building a smaller website with more common features, chances are one of the "traditional" web-development platforms is going to be a better match.
I thought you might be interested in something like Cappuccino (Aka Objective-J) which is similar to Objective-C (in some ways) but fully designed for creating web application front ends. It compiles to Javascript.
Your question isn't stupid - but it is very broad and hard to answer. Are you talking about outputting HTML? Or are you talking about server side programming? Objective-C using Cocoa, or just vanilla Objective-C?
To start with, anything using cocoa frameworks cannot be compiled for the web. Period. You can imitate the Cocoa frameworks (like Cappuccino does), but it is not a small task.
It is possible to do web development with Objective-c (server-side), but it is not really feasible at the moment because you would have to write the libraries from scratch, and with so many other options out there for web development with complete frameworks (Ruby, PHP, Python, Java, etc) there really isn't any reason to do so.
WebObjects was an Objective C framework, but transitioned to Java a decade ago. However, it still has the Cocoa/Obj C feel, still using foundation classes such as NSArray as well as key concepts like KVC and MVC. The Apple online store and the iTunes Store are two successful examples of web applications written using WebObjects.

Suggested web development language and frameworks for a newbie with iOS experience

I'm a newbie to web development (although I have built basic sites long ago using HTML, CSS, hacked various CMS's etc) and was wondering what language and associated framework is best to go with for a data driven web service with a dynamic UI (i.e. AJAX-ey effects) which I hope will scale at some stage in the future. I am fairly proficient in iOS development so am comfortable with Object Orientated development and the Model View Controller paradigm. Any advice and/or thoughts would be greatly appreciated.
Don't learn a language by learning a framework. Do basic non-framework programming in your language of choice first. THEN jump into the framework. Otherwise you're laboring under the double burden of unfamiliar language AND unfamiliar environment.
Basically, learn to drive first, THEN pimp out your ride.
If you're familiar with the Cocoa libraries, you might consider using Sproutcore which has a design that is highly informed by Cocoa. It also has the added bonus of being rather forward looking (aka: the new hotness) and is at the point of becoming a serious tool (ie: Apple uses it for mobile.me ) but still new enough that it is under active development by excited, passionate and skilled developers.
Also, as an aside to everyone advocating learning the basics. For many of us, the best way to learn something well is to have a real project and learn by building. Sproutcore seems like a good option for someone familiar with iOS development.
The easiest framework in my opinion is CodeIgniter and the docs are fantastic but this is really a subjective question.
I agree with #Marc B, first master your language, then you could start using a framework.
as a language the two obvious choices are either asp.net, or php, both have their advantages and disadvantages... you have some reading to do, a simple google search will provide you with plenty of info. there is no one size fits all in this department. look at some code examples, see what you feel comfortable about.

Which technologies are commonly used by developers to quickly build websites?

I'm an experienced C/C++/C#/Objective-C desktop,web, and mobile programmer and I've become accustomed to building most of my software from scratch. I've built all my websites from the ground up using ASP.NET. I have quite a few ideas for websites that I'd like to test and I'd like to increase the rate at which I can actually build a website. I'm sure I'm unaware of many of the technologies that are commonly used for building out ideas quickly. About a year back, I looked into using the popular CMS called Drupal to see if it would help me speed up development. After two weeks of trying to decipher the structure of the Drupal CMS, along with trying to learn PHP, I found the learning curve to be steep enough to convince me that it would just be faster if I built my website yet again from scratch using ASP.NET MVC. I'm wondering if anyone could suggest any other technologies that are designed for programmers to build websites quicker than my current method of building them from scratch using ASP.NET MVC.
Secondly, I've been hearing many entrepreneurs mention Ruby on Rails is what they use to speed up the development of their ideas, so I'm planning to investigate it. Why do I hear more about Ruby on Rails than any other technology? Would you suggest using it to speed up development?
Thanks in advance for all your wisdom!
I've tried out Ruby on Rails, Django (the Python equivalent of Ruby on Rails) and Drupal. Drupal is nice if you're just acting as a sysadmin: install the modules you want and use it as-is. But PHP as a programming language is so annoying that I'd hate to use it for something serious.
Django has some odd quirks but seems to work well. From an MVC perspective, Django calls views "templates" and calls controllers "views", which is ugly. Also, instead of generating default URL -> controller/action mappings for you the way that Rails does, Django set up routing files by hand before things work. You also have to set up some DJANGO environment variables if you want to run other helper Python code with access to your model objects. Rails also creates and configures a sqlite database by default so that you can start right away, but with Django you have to set it up yourself.
Rails seems to "just work" in so many ways that I highly recommend it. Ruby is also a pleasant language to work in. Try the simple startup to see what I mean:
rails foo # Create the foo webapp
cd foo
script/server
Then browse to http://localhost:3000 to try things out. That page will give you some info about your webapp and point you to the next steps.
Use an ORM for the data layer. That will increase the speed.
Also reuse common code elements from your previous projects.
And still, for any more or less different site you would need to do some work. Cannot avoid that. ASP.NET MVC is quite powerful tool, especially because it's backed up by the rich .NET class library. At least this framework doesn't build you obstacles at any step along the way, which is quite an accomplishment.
Django is a framework for database-driven web pages in Python.
I agree with your assessment. I was rather proficient in C/C++/C# and never built a website before. I looked at a couple of things, but when I started working with ASP.NET MVC2, I loved it. Another method/architecture I like but haven't messed too much with is WPF. If you download Microsoft Expression Blend 4 there's a 60 day trial and it's really nice. A lot of clicking and less typing. :) Hope this helps.
I toyed with the Zend PHP Framework a bit, and found it to be pretty good. You mentioned that the learning curve for Drupal/PHP didn't make it worthwhile to pursue, but if you retained any of the PHP you learned from that, this might go a bit quicker. To read more you can check out "10 Compelling Reasons to Use Zend Framework". Zend might not exactly be "configure and you're done," but since I usually work with Enterprise Java, I found it pretty reasonable in the speed-to-set-up department.

How to choose the right web application framework?

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.

How to switch from Web Designer to Front End Developer/ Web Developer?

I want to Switch from Web Designer to Front End Developer or web developer PHP, which skill should I get , Is it Easy to switch from Designer to Developer. I have two years Exp. in Web Designing. Please suggest.
Or should i stick to the Designing what is the Next BIG thing for Designer after DIV layout.
My Current Roles
Conversion PSD to HTML,
fixing Bugs in Different Browsers ,
Strong knowledge of HTML and CSS. I want to Go with the Open source Programming like PHP and MySQL
On the design side you could learn Flash or Silverlight. UX and UI design are hot right now.
On the programming side, are you good at client side programming? JavaScript AJAX etc.
#wazdesign, I didn't come from a design background like you, but I found my niche in Front-End Web Development none-the-less.
I started with Standards-based HTML and CSS and then started working back in the day on the Views and Helper functions in MVC frameworks (with a good team doing the controllers, models etc.)
Ask a competent Web Developer to give you a basic web-server architecture and process demo. Understand how data from the DB gets onto your user's pages, and all the checkpoints the data goes thru on the way.
Once you understand the principles, you can pretty much work with any technology after tooling up with the syntax.
I've listed some terms to research below that are tech-agnostic. I can't help you with the PHP side of things :)
Some books worth reading:
The Design of Everyday things - Don Norman
Don't make me think - Steve Krug
Anything by Luke Wroblewski such as Web Form Design
High Performance Websites (O'Reilly)
Some terms to research:
Interaction Design
MVC Frameworks
Templating systems
HTTP
User Interface
Some tools to use:
Firebug
YSlow for Firebug
I think you're making a good move here. To me you're showing initiative that you want to grow and learn new things. My advice would be that you learn how to program first. The problem with a programming language like PHP is mostly that it is really accessible, meaning that it's is easy to pick-up, copy and paste some code etc. PHP is notorious for it's cut & past scripting mentality but in the hands of a good programmer it is just as good a programming language as any other programming language out there.
So, to avoid becoming a cut & paste PHP programmer learn how to program first. Learn about variables, functions, control statements, algorithms, Object Oriented programming, the technology of the web etc. I would recommend that you pick a book and start learning the basics first before diving in the deep end. This way you will lay a good foundation for yourself and you can avoid becoming a cut & paste programmer.
Good luck!
I moved from "Web Designer" to "User Experience / User Interface Designer" to "Application Architect". Each role built on the next fairly well and no direct programming knowledge was necessarily required, though I think my lack of programming skills as an Architect is not the norm.
I realize you asked about moving into a Developer role, but I thought I'd offer this as an alternative. The market for User Experience people seems to be strong right now, and it's likely that you already have many of the skills required - developing wireframes, designing application workflow, information architecture, etc.
Designer to developer
I've thought a lot about this and wrote an article about the designers mutating into developers for PerlBuzz that covers a lot of the necessary ground (albeit from a Perl the point of view).
The main issues are:
understand why separating: programming code, visual markup, and data is a good thing
learn a bit about MVC, frameworks and HTML templates
learn enough Unix (at least permissions and paths) to get by and understand the command line
try (say) a simple Ruby framework like Sinatra or Ramaze. Camping is great for learning MVC (everything in one small file) but lacks a definitive version at the moment
alternatively, spend a day getting the Python framework Django up and running - it's pretty hot at the moment, Python is a good first language, spares you the SQL, is under very active development, and the extensive documentation is all online
play with JQuery or another Javascript library for client-side goodness
PHP is fine when written well and good for learning how to construct HTML templates, and Symfony seems like a sound framework, but avoid starting off by hacking (say) WordPress or Joomla. You'll only learn... well, how to hack WordPress or Joomla, whereas the real leap is in learning to program.
Some basic requirement:
Need to have strong aptitude
Understand the basics of programming in any language. (C/C++ will be good option to start)
For web development, you should be good in html and javascript along with the backend (PHP, ASP.NET etc.)