You are here: Re: Ideal Web Development Environment? « PHP Programming Language « IT news, forums, messages
Re: Ideal Web Development Environment?

Posted by Kenneth Downs on 05/23/06 04:44

Richard Levasseur wrote:

> (Forewarning, most of these problems and solutions come from being the
> only developer in a 1 server department with no budget, few resources,
> unresponsive IT, and non-technical managers, so thats where I'm coming
> from.)
>

Well, my solutions came from being the Lead Systems Architect on a c/s app
with 20 programmers on two continents. My goals were the same as yours,
and so I started Secure Data Software and we have created our solution,
Andromeda.

http://docs.secdat.com

> Any time I've done web development, I've always been plagued by some of
> the intrinsic differences between it and 'classical' development. I've
> solved most of the problems and simply want to share/get feedback, but
> at the same time I'm wondering how you guys solve these problems,
> namely:
> - Fast speed of development and deployment

Minimize Code, maximize data. Repeat ruthlessly throughout the entire
process.

> - Shared codebase
> - Layer seperation (logic, business, presentation, dev, staging,
> production, etc)

We create a database specification, and a builder creates the database (an
upgrade is done the same way, it just changes and adds what is necessary).
All business rules are implemented in the server, so it is safe to be
accessed from any source. The UI runs off the same spec that was used to
build the database, for all standard tables we have zero UI coding.

Custom coding is for those pages whose unique requirements demand something
other than plain-vanilla [New] [delete] [Lookup] etc. Examples we have
done include a calendar and a custom tabbe'd complex set of tables.

> - Tool support (editors and ide's that satisfy me)

Personally I like Jedit. Have no use for ide's really.

>
> Now, the ideal environment, in my opinion anyways, would allow me (or a
> team) to:
> - Do development, staging, and release all without having to worry
> about the other.

Well these are just the same operation at different scales. A programmer
committing a single change to a scratch database is the same operation as a
big server getting a fresh codebase and huge database structure changes.
With Andromeda the same tool does it all.

> - Identify dependencies between projects and code bases.

I thought this would be big when I created it, but it has not been. When
you focus heavily on a database specifications and automations,
dependencies are reduced.

> - Code versioning

ditto

> - API documentation

The site I pointed to above, http://docs.secdat.com, has auto-generated docs
out of source code.

But the big win is that you want your emphasis to be on the data dictionary,
which is used to build the database. Then the docs are an HTML runout of
the database specification, taken right out of the data dictionary tables.

> - Obviously: easily write the code, ie: a good editor.

We provide an XML file that does color editing for jedit. Sorry, no others,
that's the editor we use.

> - Receive bug reports easily

I like to get personal emails when there is a failed trx on any system
created by me.

> * This doesn't quite work for handling SQL changes. If a table was
> added, modified, etc, then releases must be manually compared and notes
> checked for changes to the .sql defintion files, then the live database
> updated accordingly

This will never scale past 4 programmers. Or perhaps 6 well-discplined
ones.

> Identifying dependencies between projects:
> No software I know of does this, really, except grep. The goal is to
> identify other places that might be affected by changes in common code
> (utilities.php, user authentication code, etc). Grep isn't so bad at
> it, really, but it would be nice to have a tool that did this, ya know?
>

Think of it as a data problem. If you could specify -- in tables --
everything that was supposed to happen in your database, then finding
dependencies is an SQL Query.

> Code Versioning:
> I talked about this above. Essentially a system to track all changes
> to code. I use Subversion and am quite happy with it; some use CVS,
> whatever floats your boat. This is also much more reliable than
> relying on, say, dreamweaver to tell you when something has been
> changed or checked out or some such. It would be nice to have per-file
> comments in commit logs, though, especially for web development where
> changes can be minor.
>

I've done this at large scales, and it is a terminal effort. As long as you
are managing code instead of data you will hit endless opaque barriers.


> Bug Reports:
> I'd love to have something like Bugzilla, but my managers and users
> would be far too intimidated by such a beast. Currently, I have a
> simple 2 input form (subject/text) they fill out that gets emailed
> directly to me. It works well as I have my email client flag, tag, and
> bag them to specific folders and priorities. But:
> - That wouldn't work too well if it was more than me
> - My bosses (hell, sometimes me) like to know if it was fixed,
> recieved, etc, and I find it a tedious and time consuming to reply
> 'thanks' to every bug report and 'done' to every completed item. I'd
> like to be able to say 'go to intranet.com/status to see where I am and
> what i'm up to.'

Just another database app. If you can add a table and have a maintenance
for with zere code, make your own bug tracking system.

>
> API Documentation:
> This is really a matter of discipline while coding: remembering to
> write the javadoc syntax. The API can be autodocumented with the
> post-commit hook on commits. Ideally, it would be nice to integrate
> this into a wiki to preserve code changes and api documentation
> changes, as well as provide a means of easily editing and commenting
> the docs.

Anything requiring discipline will break down as the team grows, eventually
resulting in horrible effects.

The only way to prevent these things is to have the documentation and the
coding be the same effort. Automation is your friend as well because when
you give programmers tools to do thing then the tools can track what is
being done.


--
Kenneth Downs
Secure Data Software, Inc.
(Ken)nneth@(Sec)ure(Dat)a(.com)

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация