views:

234

answers:

8

We have 4 different environments:

  • Staging
  • Dev
  • User Acceptance
  • Live

We use TFS, pull down the latest code and code away.
When they finish a feature, the developers individually upload their changes to Staging. If the site is stable (determined by really loose testing), we upload changes to Dev, then UserAcceptance and then live.

We are not using builds/tags in our source control at all.

What should I tell management? They don't seem to think there is an issue as far as I can tell.

A: 

Tell them that if you were using a key feature of very expensive software they spent a lot of money on, it would be trivial to tell what code got pushed out when. That would mean in the event of a subtle bug getting introduced that gets passed user acceptance testing, it would be a matter of diffing the two versions to figure out what changed.

Matt Briggs
not sure I follow you sorry.
Blankman
"Very expensive software you spent a lot of money on" (pay attention) "key feature" (I'd say "tags" but I don't want to make your eyes glaze over by speaking techno-babble) "if you were using" (this is an actionable suggestion) "it would be trivial to etc." (the benefit or selling point)
ChrisW
+1  A: 

Whose management? And how far removed are they from you?

I.e. If you are just a pleb developer and your managers are the senior developers then find another job. If you are a Senior developer and your managers are the CIO types, i.e. actually running the business... then it is your job to change it.

David McEwing
A: 

One of the most important parts of using TAGS is so you can rollback to a specific point in time. Think of it as an image backup. If something bad gets deployed you can safely assume you can "roll" back to a previous working version.

Also, developers can quickly grab a TAG (dev, prod or whatever) and deploy to their development PC...a feature I use all the time to debug production problems.

northpole
+5  A: 

If it would be good for you, you could become the Continuous Integration champion of your company. You could do some research on a good process for CI with TFS, write up a proposed solution, evangelize it to your fellow developers and direct managers, revise it with their input and pitch it to management. Or you could just sit there and do nothing.

I've been in management for a long time. I always appreciate someone who identifies an issue and proposes a well thought-out solution.

JP Alioto
Look at 'Hudson' http://hudson.com/ for a tool. It allows you to setup multiple builds that can be launched on regular intervals, or manually.
Kieveli
A: 

So you need someone to tell the other developers that they must label their code every time a build is done and increment a version counter. Why can't you do that?

You also need to tell management that you believe the level of testing done is not sufficient. This is not a unique problem for an organisation and they'll probably say they already know. No harm in mentioning it though rather than waiting for a major problem to arrive.

As far as individuals doing builds or automated build processes this depends on whether you really need this based on how many developers there are and how often you do builds.

Chris Simpson
A: 

What is the problem? As you said, you can't tell if management see the problem. Perhaps they don't! Tell them what you see as the current problem and what you would recommend to fix the problem. The problem has to of the nature of "our current process has failed 3 out of 10 times and implementing this new process would reduce those failures to 1 out of 10 times".

Management needs to see improvements in terms of: reduced costs, icreased profits, reduced time, reduced use of resources. "Because it's widely used best practice" isn't going to be enough. Neither is, "because it makes my job easier".

Management often isn't aware of a problem because everyone is too afraid to say anything or assumes they can't possibly fail to see the problem. But your world is a different world than theirs.

KnownIssues
A: 

I see at least two big problems: 1) Developers loading changes up themselves. All changes should come from source control. Do you encounter times where someone made a change that went to production but never got into source control and then was accidentally removed on the next deploy? How much time (money) was spent trying to figure out what went wrong there?

2) Lack of a clear promotion model. It seems like you guys are moving changes between environments rather than "builds". The key distinction is that if two changes work great in UAT because of how they interact, if only one change is promoted to production it could break there. Promoting consistent code - whether by labeling it or by just zipping up the whole web application and promoting the zip file - should cause fewer problems.

I work on the continuous integration and deployment solution, AnthillPro. How we address this with TFS is to retrieve the new code from TFS based on a date-time stamp (of when someone pressed the "Deliver to Stage" button).

This gives you most (all?) the traceability you would have of using tags, without actually having to go around tagging things. The system just records the time stamp, and every push of the code through the testing environments is tied to a known snapshot of code. We also have customers who lay down tags as part of the build process. As the first poster mentioned - CI is a good thing - less work, more traceability.

EricMinick
A: 

If you already have TFS, then you are almost there.

The place I'm at was using TFS for source control only. We have a similar setup with Dev/Stage/Prod. I took it upon myself to get a build server installed. Once that was done I added in the ability to auto deploy to dev for one of my projects and told a couple of the other guys about it. Initially the reception was luke warm.

Later I added TFS Deployer to the mix and have it set to auto deploy the good dev build to stage.

During this time the main group of developers were constantly fighting the "Did you get latest before deploying to Stage or Production?" questions; my stuff was working without a hitch. Believe me, management and the other devs noticed.

Now (6 months into it), we have a written rule that you aren't even allowed to use the Publish command in visual studio. EVERYTHING goes through the CI build and deployments. When moving to prod, our production group pulls the appropriate copy off of the build server. I even trained our QA group on how to do web testing and we're slowly integrating automated tests into the whole shebang.

The point of this ramble is that it took awhile. But more importantly it only happened because I was willing to just run with it and show results.

I suggest you do the same. Start using it, then show the benefits to get everyone else on board.

Chris Lively