Wednesday, March 7, 2012

development with several developers

Using SS2000 SP4. I'm wondering how companies with several developers (from 2
to 200) set up development environments. We have a new project manager who
wants to set up 6 different databases (one for each developer) and 6
different web environments for the developers. We're a small company and the
most developers we've ever had working on a project at the same time is 2.
We're hiring outside contractors for a special project.
With 6 different development databases and 6 different web environments, it
would seem that it would be harder to keep all of the databases and web apps
in sync. Everything is supposed to funnel into a single development database
and web app. Then we'll have testing server and staging server before going
to production.
I'm suggesting one development database and web app that the developers can
have control of but when everything moves to testing, they can only access
the database through the app and any changes to the app or database have to
be made in development.
Can someone who has more experience with larger staffs give me some feedback
on how they handle development?
Thanks,
--
Dan D.What we are doing here is -
* We have 3 set of environments (DEV -> TEST -> LIVE).
* Each environment is made up of two physical servers (IIS and MSSQL
DS).
* Developers have full control of the DEV environment (local admin)
* TEST is a copy of LIVE (or mimic the LIVE)
* System Administrators control and maintain the TEST and LIVE
environment. During the TEST, system administrators start involved in
the project with developers. Any system change requests need to go
through by the system administrators.
Hope this helps.
Mel|||Do you have several developers working on the same project? Do the developers
work on the dev database directly or work on their own copies of the database
and then update dev periodically?
One of the things that concerns me about developers having full control over
even a dev database is not knowing what they're doing. We normally have
backend reporting processes and data ETL processes that are separate from an
app and if we don't know what the app is doing it could affect the backend
processes and vice versa. For instance, we had a developer put a trigger on a
table once that no one else knew about. When someone in the database
department inserted new rows in
the table with the trigger it updated a column that it shouldn't have. No
one discovered the problem for weeks and now trying to get the data back
corrected could take weeks.
Thanks,
--
Dan D.
"MSLam" wrote:
> What we are doing here is -
> * We have 3 set of environments (DEV -> TEST -> LIVE).
> * Each environment is made up of two physical servers (IIS and MSSQL
> DS).
> * Developers have full control of the DEV environment (local admin)
> * TEST is a copy of LIVE (or mimic the LIVE)
> * System Administrators control and maintain the TEST and LIVE
> environment. During the TEST, system administrators start involved in
> the project with developers. Any system change requests need to go
> through by the system administrators.
> Hope this helps.
> Mel
>|||Yes, we do (2 to 3 developers working on the same project), we use
SourceSafe for versioning tracking. They were told not to develop on
their own PC but on the Dev environment. However you probabily can
guess this may not happen as a strict enforcement not yet in place.
Taking full control away from the developers still a struggle here, as
the developers used to be 'master of everthing' - install, deploy,
support and troubleshoot. However as the department starts growing we
start define the job in more details and have more expertises for the
tasks (labour division).
Just like normal users, it is difficult to take permission away after
they have tasted the power! That why it is important to get the things
correct in the 1st place, otherwise it will become a 'historical
burden' later on, which I am in now.
Mel|||That's the problem here. We didn't have a dba for a long time. Now we're
trying to clean up the databases and set up and enforce new procedures but
it's a struggle.
Thanks for the feedback Mel.
--
Dan D.
"MSLam" wrote:
> Yes, we do (2 to 3 developers working on the same project), we use
> SourceSafe for versioning tracking. They were told not to develop on
> their own PC but on the Dev environment. However you probabily can
> guess this may not happen as a strict enforcement not yet in place.
> Taking full control away from the developers still a struggle here, as
> the developers used to be 'master of everthing' - install, deploy,
> support and troubleshoot. However as the department starts growing we
> start define the job in more details and have more expertises for the
> tasks (labour division).
> Just like normal users, it is difficult to take permission away after
> they have tasted the power! That why it is important to get the things
> correct in the 1st place, otherwise it will become a 'historical
> burden' later on, which I am in now.
> Mel
>|||You basically have to balance complexity with isolation. Generally,
developers are going to be working on mutually exclusive application code.
That also generally translates to mutually exclusive database code.
Everyone has to hit the same tables.
I've never seen a shop setup a separate environment for each developer. The
reason being is plain and simple cost. That's not just licensing, but also
the time and effort to administer it. You have 6 developers right now.
What happens when you have 12 developers? What happens if you have 50
developers? How many people are going to wind up spending 100% of their
time just maintaining something like this.
Managing this is all about process and not installing separated
environments. You still have 1 application that has to be built coherently
and deployed. It's been a long time since I've been anywhere that
developers weren't using some kind of version control system to manage their
application. However, I've almost never seen anyone do this with a
database. Your database is code, just like everything else. All of that
stuff should also be in your version control system and bound by the same
rules you have for checking out and checking in your application code. You
have someone who has the final say on what goes into your application and
what doesn't. You also need someone to have the final say on what goes into
the database and what doesn't.
You application gets built out of your version control system and deployed.
Your database changes also need to be built from version control and
deployed as well.
So, the short answer is, I haven't been in a shop (2 developers all the way
up to well over 1000 developers) that has done what your project manager is
proposing. Anyone working on a particular application works against the
same source code tree and into the same database. The application is then
built from source code control. Any database changes are applied via a
script to make the modifications and since that is code, has to go through
all of the same approval processes as the app code.
--
Mike
http://www.solidqualitylearning.com
Disclaimer: This communication is an original work and represents my sole
views on the subject. It does not represent the views of any other person
or entity either by inference or direct reference.
"Dan D." <DanD@.discussions.microsoft.com> wrote in message
news:AE2111B3-3EA9-47AA-9A3C-750A1157504A@.microsoft.com...
> Using SS2000 SP4. I'm wondering how companies with several developers
> (from 2
> to 200) set up development environments. We have a new project manager who
> wants to set up 6 different databases (one for each developer) and 6
> different web environments for the developers. We're a small company and
> the
> most developers we've ever had working on a project at the same time is 2.
> We're hiring outside contractors for a special project.
> With 6 different development databases and 6 different web environments,
> it
> would seem that it would be harder to keep all of the databases and web
> apps
> in sync. Everything is supposed to funnel into a single development
> database
> and web app. Then we'll have testing server and staging server before
> going
> to production.
> I'm suggesting one development database and web app that the developers
> can
> have control of but when everything moves to testing, they can only access
> the database through the app and any changes to the app or database have
> to
> be made in development.
> Can someone who has more experience with larger staffs give me some
> feedback
> on how they handle development?
> Thanks,
> --
> Dan D.|||Well he finally thought better of it and changed his mind. We'll now use one
development database for everyone.
The scenario you outline is what I've always read about and basically done
with 2 developers.
Thanks for your feedback Mike.
--
Dan D.
"Michael Hotek" wrote:
> You basically have to balance complexity with isolation. Generally,
> developers are going to be working on mutually exclusive application code.
> That also generally translates to mutually exclusive database code.
> Everyone has to hit the same tables.
> I've never seen a shop setup a separate environment for each developer. The
> reason being is plain and simple cost. That's not just licensing, but also
> the time and effort to administer it. You have 6 developers right now.
> What happens when you have 12 developers? What happens if you have 50
> developers? How many people are going to wind up spending 100% of their
> time just maintaining something like this.
> Managing this is all about process and not installing separated
> environments. You still have 1 application that has to be built coherently
> and deployed. It's been a long time since I've been anywhere that
> developers weren't using some kind of version control system to manage their
> application. However, I've almost never seen anyone do this with a
> database. Your database is code, just like everything else. All of that
> stuff should also be in your version control system and bound by the same
> rules you have for checking out and checking in your application code. You
> have someone who has the final say on what goes into your application and
> what doesn't. You also need someone to have the final say on what goes into
> the database and what doesn't.
> You application gets built out of your version control system and deployed.
> Your database changes also need to be built from version control and
> deployed as well.
> So, the short answer is, I haven't been in a shop (2 developers all the way
> up to well over 1000 developers) that has done what your project manager is
> proposing. Anyone working on a particular application works against the
> same source code tree and into the same database. The application is then
> built from source code control. Any database changes are applied via a
> script to make the modifications and since that is code, has to go through
> all of the same approval processes as the app code.
> --
> Mike
> http://www.solidqualitylearning.com
> Disclaimer: This communication is an original work and represents my sole
> views on the subject. It does not represent the views of any other person
> or entity either by inference or direct reference.
>
> "Dan D." <DanD@.discussions.microsoft.com> wrote in message
> news:AE2111B3-3EA9-47AA-9A3C-750A1157504A@.microsoft.com...
> > Using SS2000 SP4. I'm wondering how companies with several developers
> > (from 2
> > to 200) set up development environments. We have a new project manager who
> > wants to set up 6 different databases (one for each developer) and 6
> > different web environments for the developers. We're a small company and
> > the
> > most developers we've ever had working on a project at the same time is 2.
> > We're hiring outside contractors for a special project.
> >
> > With 6 different development databases and 6 different web environments,
> > it
> > would seem that it would be harder to keep all of the databases and web
> > apps
> > in sync. Everything is supposed to funnel into a single development
> > database
> > and web app. Then we'll have testing server and staging server before
> > going
> > to production.
> >
> > I'm suggesting one development database and web app that the developers
> > can
> > have control of but when everything moves to testing, they can only access
> > the database through the app and any changes to the app or database have
> > to
> > be made in development.
> >
> > Can someone who has more experience with larger staffs give me some
> > feedback
> > on how they handle development?
> >
> > Thanks,
> > --
> > Dan D.
>
>

No comments:

Post a Comment