Jump to content

Build application from scratch or utilize a framework?


Recommended Posts

Hey guys,

 

I'm not new to programming, but I am recently taking an interest in web development that I hope to build into a serious career.  I have various books to assist in my learning, and I feel like I have a good base now on which to build php applications.  Here's my plan:

 

I have an idea for a somewhat simple application (that is potentially extensible) to give runners a place to log in to their own profile and then access their personal running log where they can track runs (mileage, time, etc) and perform various views/summaries of their running history.  One potential extension to the application would be to build in certain social networking features.  I have many ideas, though I want to start small so I don't get in over my head before anything solid even exists. Here is my question:

 

Would you recommend that I use one of the various php frameworks to build this application, or should I try to develop it from scratch and implement all of the basic functions through my own knowledge and skills?  Which option do you think is more realistic for a programmer who has not yet developed anything serious aside from a few-static-pages application and the barebones of an MVC application based on a book guide?  Would I realistically benefit more from building withing a well-developed framework that I can learn the proper way to do things from?  Alternatively would it benefit me as a potential professional developer in php to challenge myself to develop most or all of the base functionality of my planned application by searching and learning as I go and constantly extending/re-developing parts of the application until I understand the rights-wrongs in standard php design?

 

I know this is highly subjective, mostly because you just can't know which strategy would benefit me most, but in your experience, how have you bridged the gap from slowly developing php skills to actually integrating them into a larger scale application? Did you learn best from using a framework or making something big from scratch? Which direction would you recommend I go? Thanks, folks!

Link to comment
Share on other sites

For a website like that, it is probably more beneficial to use an existing platform. It doesn't have to be a framework though, you could use a CMS like Drupal.

 

Using existing platforms means that all of the boring redundant code is already there, and you can focus on exciting features for the application. Otherwise, you are going to spend a large amount of time building things like: DB wrappers, user authentication, URI routing, email libraries, etc etc. All of these things already exist in every framework and CMS.

Link to comment
Share on other sites

  • 3 weeks later...

I would suggest that there are only two reasons to not use an existing framework for a production project:

1) Legal concerns. If there are licensing conflicts that would be paramount.

2) It doesn't benefit you.

 

If there are no concerns over the licensing and your project will benefit from using an existing framework or CMS it will almost certainly save you time to use them, even with the overhead of learning the specifics of that system. However, saving time is just a bonus. The real reason to use an existing framework is that it has probably been used in many other projects before yours; the bugs have had a chance to surface. The little hidden "gotchas" that you don't expect have all popped out. Often times it is useful in learning to write a simple prototype that does what you want and then to use the existing framework instead for production.

 

In answer to your subjective question, I started my PHP learning by creating what I called a CMS but which was really just a simple news posting script vulnerable in a thousand different ways. I worked on a lot of different "learning" projects that I created to teach myself, but the real learning started when I did work for clients. When I had to switch from thinking in terms of "what can I do with what I know" to "how can I do what the client asks despite not knowing the method" it opened a whole new world of pre-existing solutions to problems. In using them to make clients happy, I learned them myself and began to be able to apply my skills to larger projects (Magento comes to mind as a good larger system to work with if you want to learn).

 

I hope this helps :)

Link to comment
Share on other sites

Using existing platforms means that all of the boring redundant code is already there, and you can focus on exciting features for the application.

 

I concur. You want to be able to focus as much on your application as possible instead of writing what has been done so many times before you (DB class, Auth class, bootstrap code).

 

I don't know if Drupal is a good choice for you, you will have to make that up for yourself. Drupal is a full-stack framework, meaning it gives you the house, you just have to pick/move in the furniture. It also means you might not like where it has put certain walls..

 

Personally I don't like imposed walls, I also don't like doing things how someone else envisioned them (big picture I mean). Which is why in most cases you will find me writing apps using a set of loosely coupled components*. I can still focus on my app, but I will also have to spend a little time focusing on bootstrap code.

 

(*) You can find examples of loosely coupled components doing a specific task on these pages:

http://symfony.com/components

http://pear.php.net/

http://framework.zend.com/

http://github.com/languages/php -- every repo here is a good source ;)

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.