Development processes & which language?

Im in the process of designing a complete front end sales order to shipment solution for our business that will take the form of a web app.

To keep it simple, the app will essentially:

  • Take orders via sophisticated quote form
  • Allow users to build there product to fit their needs (we’re in packaging)
  • View quotes & submit orders
  • Manage their account with our company online
  • Pay invoices & receive accounts information
  • Work with our prepress dept - submit art, manage approvals etc

I understand the technical side of web at a basic level, however I’m far from being the worlds greatest developer.

The process we intend to follow to build the app is as follows:

  1. Develop the requirements of the solution based on our business objectives & customer problems (done)
  2. Develop UI flows/app wireframe
  3. Develop mocks for each screen of the app
  4. Have these screens designed
  5. Have designs sliced & the app coded

So this is really a two part question. Firstly does the process I have explained above sound like a logical way to bring our app in fruition? If not, how’s it done?

Secondly, what language should the app be coded in based on the above & wherever app development is heading? I’m sorry if this seems like a stupid question, but once again im not technical. From what I gather most apps are being built in Ruby, PHP & Python?

Ruby seems like a logical solution, however I’m concerned that Ruby will become a bit of a fad, support will potentially become scarce & the value of the app could decrease if the market moves away from Ruby. Obviosuly these concerns are centered around commercial risk & not if Ruby is the right framework for the product.

What do I need to consider when deciding which framework to go with? Is Ruby the right solution? What other frameworks should I consider?

Thanks for your input.

If this is a significant business with the kind of budget that size project deserves (a team of programmers and 6-12 months time I’d guesstimate), you’ll probably be more looking at Java or .NET than Ruby/PHP/Python.

There’s no such thing as enterprise Ruby. Two or three years ago there wasn’t even a stable application stack to run it on without constant babysitting. Of course you can use any language you want, but I think you’ll have a harder time finding the right developers when you use those languages, your client may take you less seriously, and you may have a harder time integrating with their other systems.

I’m sorry, but I totally disagree with that sentiment, Dan. In fact, I’d say it sounds like you don’t know what you’re speaking of.

It’s quite feasible to build large applications in dynamic languages; In fact they are probably better suited, as they are much more capable of bending to ever changing needs of businesses. But that’s getting philosophical; Suffice to say that plenty of large businesses have been build on Ruby/PHP/Python (And I guess Perl should be mentioned as well).

That said, if this is indeed a serious project, I’d say that you are ill suited to undertake it. You should probably hire someone who knows how to build these kinds of applications. It’s hard to tell you what to look for, but you have the advantage of being a developer your self, which should help judging.

Regarding language, I wouldn’t really say that there’s a lot of difference between those three mentioned. Go with the language for which you can find good developers. Ruby is relatively small, compared to PHP and Python, but it’s large enough to stick around. It’s certainly not a fad.

Thanks for your input.

So whats the typical process for developing web apps & web sites - wireframe, design, slice & code??? You’re right in thinking that I am ill suited to head the project, hence why I am here. I want to understand how web apps are developed & from there I’ll go about educating myself.

We’ve got a developer coming on board to manage the project, however I dont want to rely solely on his word. I want to understand how the development cycle works.

What about just building the app in PHP? What are the advantages/disadvantages there? Are there any good frameworks that should be used - i.e. python & django etc?

Thanks

My comment wasn’t about the technical merit of the languages, or even their appropriateness. It’s about being taken seriously. You tell a non-tech guy hiring a development firm to build a significant system that’s going to run their business, and tell them you want to do it in Ruby, he’s never heard of it and when he asks around, he’s gonna be told it’s some kinda fad. I’ve seen it happen.

OK. I think that would depend a lot on location and sector. 5 years ago, using php in “serious” businesses was an absurd thought. Today, it’s quickly becoming common in sectors like telco and insurance companies. And for web applications, I’d say that php, ruby and python are as plaucible choices today as dotnet is.

One thing that has some importance is how much of an application it is vs. how much of a web site it is. Most systems lies somewhere in between, but if it leans more to one side than the other, it will have an impact on how you can approach it. Applications needs a bottom-up approach, where you design a datamodel and then build an interface on top of that. Web sites are more about user experience and information architecture, where you are often better off with a top-down approach.

If you are unsure about what you’re doing, an iterative top-down approach is probably the lowest risk. Eg. get some mockups up in a hurry, test them, discuss them, design some new mockups. Repeat until you have a good idea about what you have at hand.

(And I guess Perl should be mentioned as well).

Seeing’s how it runs the web and all, lawlz.

I’d say Perl except there are companies with the same fears epxressed by the OP regarding finding developers. The BBC is built in Perl but the higher ups decided last summer that they would be deeply screwed if they couldn’t find devs, and are looking at what other language is capable of doing the same thing (I suppose any of them, but I would hope they go towards Python). Perl is easily capable… Amazon runs on it for example.

One thing that has some importance is how much of an application it is vs. how much of a web site it is. Most systems lies somewhere in between, but if it leans more to one side than the other, it will have an impact on how you can approach it. Applications needs a bottom-up approach, where you design a datamodel and then build an interface on top of that. Web sites are more about user experience and information architecture, where you are often better off with a top-down approach.

If you are unsure about what you’re doing, an iterative top-down approach is probably the lowest risk. Eg. get some mockups up in a hurry, test them, discuss them, design some new mockups. Repeat until you have a good idea about what you have at hand.

This is critical.

The web has limitations that pure applications do not!

You’ve already designed your forms and interface? If not, you really want someone for testing-- someone who is extremely typical of the kinds of customers you are expecting to be using these forms. According to Jakob Nielsen, you could get away with testing 5 people. This testing would be with something as simple as paper prototyping: having bits of paper representing the forms, so you’re not spending time building several different versions of real forms. Listen to their thought processes as they go through the form.

This really shouldn’t change the actual setup in the back end.

“Slice and dice” is maybe not the best idea here. Your front-ender had better be pretty aware of things like front-end usability, accessibility, the limits and abilities and probably security of the web. You will have clients (browsers) sending and receiving info to/from the server.
The guy(s) who does the front-end work need to be part of the process where the Photoshopper is making the pretty designs (which shouldn’t happen until after the paper prototyping), not after designs.

There are plenty of ways to make a form not make sense, and you don’t want to roll out a whole funky expensive application and then find there are some questions and flows that totally confuse or frustrate your main customers. According to Nielsen, usability still sucks big balls with B2B. I dunno if yours is B2B but it kinda sounded like it (didn’t sound like someone like me would be packaging stuff with you guys : )

I agree with this. When choosing a solution for a business the merits of the actual language are just one factor - the popularity of the language has a big impact on the overall cost of owning that application.

I’m not really seeing that in the job market, which is about the best barometer of which languages/frameworks are really in use, in demand, and standard in a meaningful way.

Look at the developer jobs that are currently on offer, and you’ll see a handful of php drops, a handful of python jobs, a trickle of ruby jobs. You’ll also see perl jobs, but mostly you see Java and .Net - there are probably 100 java/.net jobs for each of those other jobs.

I see a steady increase in demand for php programmers. Python and Ruby are smaller in comparison, but they are not esoteric. No doubt that .net has a much larger market share, but if we talk about web applications, LAMP stack technologies are certainly a major player.

Your right, there is a steady increase for php. But, it’s still a tiny part of the job market. A quick look on dice.com shows at least 100 java/.net jobs for each php, maybe more.

I worked with Perl (3-4 years) / PHP(5+ years) / Java (2 years) and some .NET (not that much) for web aps.

As far as web aps go, there is nothing that can beat the latest PHP in terms of development time / maintenance (if done right, and not by some kid right out of uni).

Perl is pretty good for text (really good regex), but the code can easily get out of hand.

When it comes to Java, well just multiply your development time by 20, your server load by 4 and expected employee salary by 1.5.

The systems I was working with had a pretty active member base of 35mill profiles, and some tables had a few billion records in them.

There are plenty of examples of huge apps done in php. And yet most enterprise apps seem to be heading towards Java these days. The reason is that the absolute most technically sound and effective language doesn’t necessarily make the right choice for a company to commit to. There are so many other factors, like maintenance, upgrades, availability of support, culture, etc.

This goes back to the old beta vs. VHS debate from way, way back. Sure, beta was technically superior but the manufacturers needed a standard and VHS was emerging as a more accepted standard. So, VHS was the way to go for most companies (all, eventually) and it drove some hardcore techheads crazy!

In an application of any decent size, I would avoid php simply for the fact that in a pinch, it’s just not that easy to find a great php programmer (or 12) who can jump in and take care of business. You can find some younger people on the market, and plenty of talent, but it’s not like Java where you can fill up a job requisition for 12 expert, certified, programmers with 10+ years of proven experience in 2 weeks. That has a huge business value!

This is perfectly feasable in PHP. I am building a system like this now for the company at which I work and let me tell you, it is a lot cheaper than using .NET. Go with PHP, and find people that know how to code properly in PHP and you should have no problem.

Question: how do you guy (the web programmers) manage to keep updated and all the new languages that are appearing and those huge libraries? Does a today’s programmer need to know all of these languages and libraries? It is just tough, don’t you think? Or I am the only one here. So, I have been practicing web programming… mostly for myself with language such as HTML, CSS, JavaScript, PHP and MySQL. If someone asked me to evaluate myself on those languages… kind of how good I know that and how much I know about them… I think I would say that I know very little… But how can a person know that much? I mean take simple… if you could call it simple… CSS. Every browser has got some bugs and is so different and you need to know this and that beside of all general theory and information. Then goes PHP with its never ending functions. MySQL with all of its relational databases and JavaScript… oh my God, let’s talk about JavaScript. Bought this book and it is truly a great book and I am almost done with it… but then I good for: “JavaScript form enhancements” and what do I see? I see this huge huge bunch of great add ons that you can make for your static html forms and they are written with JQuery. Gosh, now I need to get my hands on JQuery library to stay on the flow. I mean, how do you guys apply for programming jobs? Do you have some monstrous heads with huge brains to know it all? I mean… it is tough. Am I the only one? This stuff that I wrote is just a glimpse of some weakness of mine and when I finish I will keep on learning JavaScript… but how can you know it all? Tell me, so you can for a job interview to work as a web programmer. ARe there some very specific language that you need to know? The classic collection of them? Or you should know it all? Do I require too much from myself?
Thanks and sorry.
Alex.

I’d venture to say that a huge class of applications would never need to drop 12 senior programmers in at 2 weeks notice. A large web application can be built and maintained by a handful of programmers.

When it comes to Java, well just multiply your development time by 20, your server load by 4 and expected employee salary by 1.5.

I lawl’d. This is gold.

As far as what the OP should do… we never asked if the OP is already familiar with one of the programming communities?

I mean, certainly if I had to do something like this it would be in Perl because I sometimes mingle there, I generally know that x, y and z is going on in Perl and who’s working for who, and who uses Perl, etc.

That might make more of a difference to the OP than what the general market says… if he or other guys at his company know Java guys, then Java may be the better choice just for that reason.

Course I’d also look at the free languages first before looking at something that requires the purchase of whole MS suites or anything… and then if the free languages just aren’t going to cut it, well, you’ve checked them out.

I’d venture to say that your statement is too ambiguous to address. There are lots of applications that can be done by handful of developers, sure - but what is a ‘huge class’? In my business I routinely deal with companies that have hundreds of developers going in multiple locations - aerospace, public sector, logistics, security, it goes on and on.

To suddenly want to augment a development team with a new group isn’t uncommon at all - much of the offshore development industry caters to the need for that flexibility.

So while it’s possible that a large application can be built in just about any language, we see in the marketplace that larger companies with bigger software efforts tend to lean towards highly established platforms such as Java or .Net.

The two sides of this argument aren’t really related to each other.

You say that it’s possible to build big apps in php/ruby/etc and I agree. I say that there are good reason for larger projects to lean towards Java/php, and you reiterate that it’s possible to build big aps in php/ruby/etc which I agree with.

Try getting a government agency to commit to spending 10 million bucks on an application built in ruby. Most of the decision makers are in their 50’s and see the very real value of sticking with a good standard, and the fact that ruby or php can be must cheaper isn’t a decision maker. Sometimes, a decision maker will happily opt to spend more money in order to increase the chances of an inexhaustible developer pool that comes with tons of well establish certifications, etc.

I kind of assumed that Adam Lee weren’t representing a government agency.

I think you are right, but I am always resistant of sweeping statements like:

While it’s true that it’s feasible and that some languages are more capable of ‘bending’, etc. it’s silly to simply say that ‘dynamic languages’ are ‘better suited’ for ‘large applications’.

These kinds of vague but dogmatic statements are the reason we have CTO’s who can look at technology decisions from a broader business perspective.

But yes, for the OP a less enterprise and more flexible/lightweight language could be perfect.

Hi guys,

thanks for everyone’s input here.

How can I learn more about web app development? What I want to try to further understand is the development process. Is there a really good primer to get me started?

Cheers