2

As I'm finishing a web development course with a few friends with whom I have worked in many projects we're aiming to begin a professional team of developers. Functions are well defined between programmers, analysts and designers, and the team shouldn't get to a much larger number than six members.

To quicken development and keep each developer's work from overlapping with others', an MVC framework has been considered by the group. The front-end developers shouldn't mind which one is chosen since it's all based around web standards for them, but me and the other programmers have been considering a few options.

Since the question is getting really verbose, I'll just summarize what I would like more experient developers' opinions on:

  • What should be considered when choosing a web framework? For small projects, performance shouldn't be a killer factor, but would it still be reasonable to remove Ruby/Python systems from the competition?
  • Is being able to work on more than one programming language, or more than one framework in a given language something important?
  • Should the learning of one or more frameworks be done in group, or on each developer's own, and then gather opinions on them?
1

3 Answers 3

4

When choosing any framework, consider its popularity, in terms of blog posts, StackOverflow questions, resources and documentation. A framework that's relatively new isn't guaranteed to blossom and may make you experts in a niche framework. Ideally you will want something that is easy for any new developer to get into.

Ensure that it is a fit for your core competency. If you are a Microsoft shop, you will not want a PHP as there is a learning curve involved and a .NET developer would not normally be very skilled at PHP. At the same time, there may be a resonable expectation for an ASP.NET developer to pick up Javascript MV* frameworks.

Regarding performance, if it's not an actual requirement or NFR to have lightning fast pages, then I don't think that ruling out Python/Ruby is reasonable. You should be OK with those languages if this is an internal system with a moderate amount of concurrent users. There are many frameworks in Python and Ruby which offer a lot of functionality that could meet several requirements, and they ought to be ruled out only if there are other barriers to development, such as testing, development, learning curve, etc.

Regarding learning - it helps a lot if there is a 'champion' of a technology. This champion can do a workshop and teach the other developers the basics. Having the basics goes a long way to more learning and letting the developers go through more tutorials, videos or assignments. The success of this approach will depend on the team culture.

Regarding your last question about architecture/organisation, one interesting area would be to use a Javascript MV* framework (AngularJS, Knockout) with a RESTful API as the backend (and this can still be a regular MVC framework such as Django or ASP.NET WebAPI). This allows you a rich, functional front end and you can focus on business logic in the backend without worrying about generating the markup.

2
  • How to the JavaScript MV* frameworks work? I tried to look at Ember and Angular.js a few times, but couldn't really get into understanding them fully. Now that I have time, though, and a new team to set up standards with, it might be good to pick one of them.
    – gchiconi
    Commented Jun 27, 2014 at 23:00
  • Consider its popularity and tooling. We found a large amount of community support around Angular, and a lot of tools, and IDE support. Have a go at the tutorials here to get a feel.
    – Mendhak
    Commented Jun 28, 2014 at 8:02
2

Choosing framework depending on many factors:

  • Time/Resources: If you have time, then you can be more adventurous to try new technologies. If you have less time, keep it simple, if you have decent amount of time, do the research and find something which fits well to your dreams. On resources: if you have scarse resources (no income, spare time per day) then make it tight and simple.
  • Competence: If the team has a good base on a technology which is ok, but might not be the best, it is a rational choice still, since most of you don't have to learn the basics, and the others can catch up quickly, since they have many people to ask from. Write all the competence you all have with a scale 1-5 and think through your strength (programming languages, APIs, tools etc).
  • Project size: If you have a small project, keep the choice as simple as it can be. Always ask: do we really need this/that feature the framework provides? The "keep it simple" pays back on the second or third projects when you think about what to do differently, and it won't be too numerous list.
  • Popularity: Don't pick some exotic technology, check out how many people are using it. Search forums about questions made of that technology, if it is numerous then you can judge how well it works, and also you get plenty of hits if you want to look after problematic cases.

Once we made a project we inherited a bad base, but we had the time to finish it. The project was pretty simple, so we chose GWT, and looked for some extension to work with (we chose smartGWT). We had the time to make experiments on the technology, and it was successful. If we had less time, we probably sticked to Vanilla GWT with less features. It took a month to get familiar with smartGWT (finding out what works and how, and what do we need to add up), if you don't have the time/resource, don't waste that amount of time on experimenting.

1

I guess most important thing while choosing a framework/platform is the technological strength of your team members / developers.

And yeah MVC for maintenance/re-useability point of view.

But for a small, quick development - I would suggest PhP is best ! Even team doesnt know or have other web framework knowledge, they can adopt it very quickly with very simple learning curve.

What should be considered when choosing a web framework? For small projects, performance shouldn't be a killer factor, but would it still be reasonable to remove Ruby/Python systems from the competition?

As mentioned team's strength and available technical know-how.

Is being able to work on more than one programming language, or more than one framework in a given language something important?

It depends on what you wish to achieve, yes it's always good to have a heterogeneous resource pool. But that might be very complex to maintain, motivate and drive.

Should the learning of one or more frameworks be done in group, or on each developer's own, and then gather opinions on them?

Any learning in group is good if it's target oriented, measured and involvement. Sometimes lazy guy keep quite in group and the purpose is not served. XP methods like pair programming can be helpful as well.

Finally, is there a more recommended project architecture/organisation method for team projects than MVC for the Web? What are the viable options?

Again framework/technology depends upon the team's strength. But use some agile aproach to measure the goals and steer accordingly.

Good luck !

Not the answer you're looking for? Browse other questions tagged or ask your own question.