Not for 'how-to' coding questions but PHP theory instead, this forum is here for those of us who wish to learn about design aspects of programming with PHP.
Hey guys, I work as a web developer, so I have a decent amount of experience developing on large existing systems, as well as some smaller ones. But I'm about to start a personal project, which is bigger than anything I've ever developed from scratch. I'd like to do it 'properly' with database diagrams, and using an IDE (probably using Eclipse at the moment, but open to suggestions).
So for any of you who do things like this regularly and work on projects from the beginning, do you have any advice in terms of software that would help me out and keep everything organised? Or would you even recommend a different approach?
I would recommend taking an Agile attitude toward what you actually know and don't know about the design. Identify what is most important and start with that. Then use TDD to develop it, spiraling through the design/development process.
Keep the code in version control, a good bug tracker seems handy and a TDD approach are the main ingredients.
And an agile approach as Christopher says. I can't speak for others, but my own (big) mistake with larger personal projects is that I didn't focus on the core issues. If you have the mindset that "this is a big project", it's easy to get lost in the details. That's because every "detail" in the scope of a big project looks like an "important piece of the project" at that moment. However, if you're on your own and have 100 of such small details to work out, you aren't going to make much progress for the project in it's entirety. So, instead, focus on the absolute minimum, on the most important thing to build first. Build that and only then move on to the next thing. In a way this also means you don't need special software to manage everything, besides the version control.
Thanks for the replies guys. I'm still not totally familiar with what the Agile approach is, though I've seen it mentioned all over the place. I'll look up some articles on it and see what I can make of it. TDD is definitely the only real way I've ever worked, so I'm on board with you there.
@matthijs: yeah I agree, I definitely have to have a firm idea of what exactly Version 1 requires before I can start working on the many, many (ridiculous :/) features I want to put into this thing.
So when you guys are doing your own projects, do you find that you do a lot of data modelling and software design first? If so, do you have any tools that you use to do it? I started taking a note of some of the classes and tables I plan to use, and as it grows, it's a bit of hassle to keep it all up to date. I've started using the MySQL Workbench to model some of the data, but it doesn't really allow for more advanced UML (that I can see).
RCA86 wrote:So when you guys are doing your own projects, do you find that you do a lot of data modelling and software design first? If so, do you have any tools that you use to do it? I started taking a note of some of the classes and tables I plan to use, and as it grows, it's a bit of hassle to keep it all up to date. I've started using the MySQL Workbench to model some of the data, but it doesn't really allow for more advanced UML (that I can see).
It think it is important to have an overall understanding/plan for the Domain of the project. However, I would not try to over design it. Are there legacy databases that are known quantities? Are they data that you know right now are absolutely required? Those will anchor your Domain and design.
Hmmm, I see what you mean. If the design is too heavy, the more testing cycles I do, I'd spend as much time updating documentation as writing code.
The MySQL Workbench thing is quite cool though, as you can generate diagrams from databases, and vice versa, so that will help. And maybe some good old Word documents for lists of classes/functions etc.