I think we're pretty much done, I do beleive that a configuration should reflect the environment it runs in, but I think our opinions differ when it comes to allowing developers to dictate behavioural changes between environments and shipping code which is never executed.

Brian Pontarelli wrote:

I think we both agree that configuration is best. In fact I think you even support environment awareness in configuration system. So, from that perspective we are solid. The rest is just debating personal style and developer freedom. I will answer a few things below, but I think we can close out this thread or take it off-list.


The key thing here is that S2 *suggests* it, it doesn't impose it. My point is that it is fine to suggest it something that the user can alter, but it is bad to do something which alters program behaviour without the environment managers involvement as would be the case with a conditional branch dependant on it's environment. I would also ask the question of "If a developer has seen the framework exihbit a behaviour, are they really a bad citizen for making use of it?".

Suggestions aside, S2 still doesn't make this easy. It needs environment awareness and it should probably default a ton of stuff when in production mode. This one being the top on the list.


Being not easy and being not possible are worlds apart. My view is that it doesn't have to be easy, but it should be possible and developers should not dictate behvioural changes when an app is moved between environments.


I'm also not a fan of just accepting something as good if it's a de-facto standard because I know from experience that not all decisions which make it into the wild are teh right thing to do. Would S1 have been released if WebWork had already been floating around?, Would the Java UI Event model in 1.0 ever had seen the light of day if someone had already started work on what became the 1.1 model?, and you just need to look at the history of EJBs to see things which were de-facto standards which have now been "retired" (Home/Remote interfaces, Message beans that could only get messages from JMS).

Not accepting crap is one thing. Not accepting something that is outside our comfort zone is something else entirely.


Very true, but some things are just crap that looks OK in the right light whether they're inside our outside our comfort zone.

To me the big switch idea is like hard wiring your headlights and a speed limiter into your windscreen wipers. Whilst it might seem a good idea, there are situations when you'll just want the wipers on or off.

Haha. Not even sure that's similar enough to the cases I mentioned to make sense. Humorous though.


Glad you appreciate the humour :), the point is that some decisions can look good from a certain standpoint, but when the end result goes into use it prooves to cause some unexpected problems.

You may not be happy about it, but a production issue may neccessitate it. My previous message had a real world example of where a database was moved to a smaller system because the performance of many apps was poor due to the total load on the database cluster.

Orbitz was slightly different. No one made environment changes without consulting a developer. We had it happen a few times and it didn't go well because the complexity was too high. It always looked like an acceptable change, but the developers who wrote the code always knew something that others didn't. That's why nearly all of the developers wore pagers and everything was setup to allow developers to help make decisions. Now, that's just Orbitz and I'm certain there are different environments that this would be okay. But I figure call the developer first and double check to see if any flags go up.


It's an interesting way to do things, but relies on the developers of an application staying with the company (and not being on vacation), remembering all of the things that they've done, and creates a single point of weakness - the developer.

In the environments I've worked in developers are/were moved between projects and there was always an element of churn (i.e. people leaving and joining), so after six months the developer may have either lost much of the knowlege relating to the app due to having a new focus, or may simply be not around.

Within many of the companies I've had exposure to that are based in the financial sector there is a requirement to have a single two week block of vacation in which you are considered uncontactable. This ensures that no matter what happens to the employee the company can still function, because even though we don't like the idea, people do get hit by busses.

In the UK and the US almost all major banks aim to be able to fail over to a DR site within 2 hours for all critical applications, if you add in the requirement for a developer to make a new release for any configuration change that needs to be made you're wasting valuable time.

Yeah, we didn't do releases to change configuration or the environment. It took days to do a release. We just patched things. I know people are feeling a little sick at the thought of ad hoc patching, but it worked for our situation.


Ad hoc patching isn't nice, but sometimes it's a neccessity.

My issue is when you need a developer involved in every change the number of people involved in any change increases and therefore so does the time needed to make the change, and when time is money the number of people needed to make a change tends to get "optimized".

But if you dictate behaviour why should your choice change just because the app has changed environment?, if it's a useful feature for you in dev it will most likley be a useful feature to a techie trying to resolve in issue in support, so it should be a configurable switch, not a cast-iron decision that allows you to access features which help you debug the program in dev but provent the techie checking for the source of a problem in production or test .

Might be useful, but in some cases if you turn on cache checking it will crush the entire system. Again, I'm just advocating being pragmatic and protecting the system. However, most cases aren't like Obritz and I could definitely see that leaving cache checking turned on won't impact things too much. But, I'm sorta stuck now and so I do a lot of my work thinking about massive scale up front.


I can see where you're coming from, but I'm fimly in the camp that if it's useful in dev it may well be useful to a techie.

If a problem arises on a customer site I'd far prefer to be able to be able to ask a techie to turn on cache checking (or any other dev feature) by setting an option, warn them of the system impact, and get the results after a short run, as opposed to having to send a developer on site to check and probe the customers environment. If nothing else it means that we can quickly and easily run our tests in their environment as opposed to hoping that we can accurately model their live environment in order to replicate problems.

Al.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to