18

I have been thinking about this for really long time without reaching an optimum answer.

First of all, I'm a medical doctor who loves programming but never really studied it, except for home learning and lots of years of playing around with code in my free time.

Currently I'm trying to build a small project to manage my clinic, to do that I started by created a list of options I want to be able to do.

Example:

  1. active patient record.
  2. authentication with different roles (eg. patient,nurse,dr)
  3. appointment schedule (include calendar to schedual vacinations/surgeries etc with a reminder)
  4. allow doctor to create his own plugins.
  5. dashboard for doctor to view his statistics

Then I started with codeigniter/mysql/php/jquery and started coding.

My steps during development:-

  1. 1st database.

enter image description here

I started by creating all my tables that I will need.

  1. Created all my models to handle these tables (1 master model that handle basic read/write/update/verify while also considering my table relations

After that I start to code my views and controllers. I first created view HTML, then create controller that will handle this view, and started coding functions to make the view interactions work.

Example when coding the appointment view(controller booking.php):

enter image description here

created this layout and made table td's clickable, when user click : jquery get (booking/add_patient_form) and pop it up

when user save : post to booking/save -it save appointment then reload index() function

etc.. and I continued same steps of creating view then its controller -that contain all the logic this view needed - to accomplish whole project.

At the end I had all my target functions working fine, but since there was no PLAN from beginning and as the whole project was punch of brain storming and debugging with no what so ever plan, after I went so far in this project i find my self stuck with maintainability and flexibility! and unable to link them together.

I have feeling that every page on website is completely isolated from other and I can't even recall how each page is loaded and what functions are inside without peeking!

Is there anyway I can recover this and get a design out?

5
  • 5
    I usually get out a large piece of paper (A3 or bigger) and a pen and start drawing flowcharts until I figured out the complete 'workflow' of the functionality on the website, as well as database structures. After that I'll get another piece of paper and work out some really basic wireframes. From there on it's 'just' coding and a bit of graphic design. I'll add finishing touches and details after that's all done. The flowcharts make it really easy to figure out where you put what function and i.e. what variables it gets from what location.
    – LuudJacobs
    Commented Jan 22, 2013 at 13:28
  • 3
    Even better with big wide white board ;) +1 @LuudJacobs. You know better than anyone how your click process should run, from what entities and funtions should come in each time and what data you want to search most frequently, what data you don't need that much (rarely). If you want keep history or not and where of what. Having drawn a couple of Entity diagrams will get you to a place that you feel all good and make sure the tools (db. front end) you choose can support your needs today as well as for tomorrow without much change requests :)
    – bonCodigo
    Commented Jan 22, 2013 at 13:36
  • @LuudJacobs well thanks :), but i tried to do that ,graped a whiteboard and printed out my db schema and...failed to draw anything ! i guess i dont know how a flowchart should looks like. i will try to google around for examples. if u have any flowcharts of an actual project,i would love to see that Commented Jan 22, 2013 at 13:50
  • +1 @bonCodigo: A whiteboard is a better option, since you a) have more space to work on and b) it's easy to erase stuff. Here's a google search with some flowchart examples. Good software for making flowcharts include MS Visio and for Mac OmniGraffle
    – LuudJacobs
    Commented Jan 22, 2013 at 15:58
  • For a doctor, you've done an admirable job with this, especially given that you've chosen the Nickleback of Programming Languages to work with. Commented Jan 22, 2013 at 18:20

3 Answers 3

6

Your question - what's the process for developing a piece of software - is a hotly debated topic; just google "software methodology" to see how deep this can of worms goes...

There's no commonly accepted answer. In fact, if you ask 5 programmers, you'll get 7 answers, in my experience.

I'd recommend buying Steve McConnell's "Code Complete" to see the lower-level coding practices - things like how to lay out your code, how to comment it, how to test it. I'd recommend "Domain Driven Design" by Eric Evans for an overview of how to structure applications at an architectural level. I'd recommend "Agile Software Development: Principles, Patterns and Practices" by Robert Martin as an overview of how to "grow" software over time whilst maintaining quality.

Another developer is likely to reject all of these books, and point you at UML, the Rational Unified Process, and code generation. There's no right answer!

1
  • To illustrate Neville K's point about different answers, he left out a good resource for designing the end user interactions, which is where I like to start. ;-)
    – Eric G
    Commented Jan 24, 2013 at 21:19
1

Steps/Stages to design of Website Workflow

  • Concept
  • Discovery
  • Content development
  • Design
  • Development
  • Launch
  • Post-launch

Detailed Resources

0

I would advise you to keep the database structure and generate new PHP code with PHP Generator for MySQL created by the company SQL Maestro. It really worked for me. I use it a lot and I am really happy with it, especially the possibility to tweak the PHP code to my own needs. Furthermore, they incorporate your requested new features in their updates and have nice tutorials how to tweak the code. To better understand have a look at this demo project.

On their website the following product description is given:

PHP Generator for MySQL is a MySQL GUI frontend that allows you to generate high-quality PHP scripts for the selected tables, views and queries for the further working with these objects through the web. Key features include:

  • Data management: add, edit, delete and copy records
  • Customization of the HTML appearance
  • Filtering and sorting abilities
  • Data protection with a lot of security settings
  • Master-detail presentations
  • Event-driven content management
  • Data export to PDF, XML, CVS, Excel and Word

PHP Generator for MySQL produces clear and easy to understand code that can be used as is or modified in any way you need.

Save the huge costs of hiring a programmer, learning any programming language, or buying an expensive software - all the code is automatically generated for you!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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