Fog Creek Software
Discussion Board




coworkers as enemies

Hi!

I am currently doing my diploma in a huge company.
My unit mainly consists of business types. Before me only one programmer in my domain (web programming) was there.
And this guy drives me crazy. I had to find out painfully that he does not like me at all.
My assignment is to add webservices to an existing web project (written in ASP).

We had a meeting - the programmer (P), a manager (M) and me (I).
I: "What still is unclear to me - what do you mean by _dynamic_ webservice?"
P: "This means the webservice adapts itself to changes in the database."
I: "Well, web services are not dynamic then. I can not create a generic solution as you do not use referential integrity and the security options of the database, but solve these things in your application code." (The app is huge, mixes HTML and VBScript/SQL)
P: "You are WRONG. You need to work harder for your diploma. You need to attend more MSDN Techtalks. A dynamic interface is the only option. *laughs*"
M: (does not understand a word) *laughs*
I: (trying to stay calm) "Interfaces should not be dynamic. They should be as stable as possible. My proposed solution is to separate the data access code and use it both in the web interface and the web service."
P: "This is not an option. I want it to be DYNAMIC..."
M: *nods*

I think we have several problems here:
-The programmer has an ego problem.
-The business guys trust the programmer, as he has delivered solutions in the past. They don't know me, so they listen at what he is telling them.
-the programmer uses a nice trick - whenever I confront him with things he does not know about, he just uses lots of buzzwords (dynamic, msdn techtalk, business logic, ...).
-the business guys do not know what web services are, they just want them
-the programmer does not know, either

Next week the unit manager comes back from his vacation. I hope he gives me some backing...

And comments/hints/solutions/... about this? Or am I the one who is wrong and "dynamic" web services are perfectly possible..?

Sebastian
Friday, August 08, 2003

Sebastian, sorry to tell you this, but you're shit out of luck in your case. Learn what Bart Simpson preached in one of the episodes, which is saying "What a great idea, boss!"

Regardless of how well you know the subject, the PHBs will never trust you. Shit, that can't even trust themselves! They need outside consultants to give extra credibility to an opinion that existed within the company for a while, yet only  an expensive consultant is trusted with that opinion, and internal people are worthless.

Do the minimum you need to get your diploma, and get out of that place. Sometimes giving up is the best option there is. No one can fight the tide, you won't be able either.

Future cunning politician
Friday, August 08, 2003

If nobody knows what "dynamic" means, you could just write whatever you want and say "Yup, it's dynamic". Who are they to argue?

Just be sure that whatever you deliver actually meets the real business need here.

Chris Tavares
Friday, August 08, 2003

"If you can't beat'em, join'em"

But that doesn't mean you can't have it your way. You just have to make them feel like it is *THEIR* idea. After that it will be *YOUR* diploma and you are OUTTATHERE!!!!

Geert-Jan Thomas
Friday, August 08, 2003

Ask for specifics.

You may think your lack of experience is a drawback, but in this situation it may be an advantage.  Think of your inexperience as a license to ask whatever you want, using the "I need to learn" card as a way to get information.  If you're not clear on what they mean by "dynamic," ask for examples.  Don't proceed with your work until they come up with some.  If those examples are incomprehensible, ask for clarifications.  Same for any other issues that are unclear.

The biggest obstacle you face is the fear that you'll look dumb.  Forget that, and press on with your questions.  There's nothing quite as formidable as a smart, patient, polite person who's not willing to stop the questions until he gets real answers.

Hardware Guy
Friday, August 08, 2003

Thanks for your answers.
I hope it will get better. The other problem is that the programmer guy is in full control of the project. For my web service I would need to do some code changes and I fear that he won't let me.

And did I mention that I am waiting for my Visual Studio and IIS access for 6 days now? I have never been in a development environment this bad.

Sebastian
Friday, August 08, 2003

Ahhh the waiting around for tools.

Sometimes that goes on for weeks.  Use the time profitably, play with ideas ask lots of questions and draw lots of diagrams. 

Create all the use cases you can think of and work on the architecture of your services.  You don't actually need Visual Studio to write code, download an editor and use that.

And everyday nag the manager for the tools and access you need.

Simon Lucy
Friday, August 08, 2003

Sebastian,

In my work I create what I think of as "Dynamic Webservices".

Maybe my definition of dynamic webservices is way off. I'll give you an example:
You have an html menu, with a submenu link for every department in your company. Now, if a new department is formed, in a static webservice you would have to hardcode the name of the new department into a new hardcoded submenu link in your main menu.
In a dynamic webservice however, you would draw all the department info (including the new department) from a data table, maintained by some secretary - this is dynamic, because you do not have to change one bit of your coding even though the company has changed.
I often think of "dynamic" as "data driven".

Like I said, maybe I haven't understood the core of your technical challenge, or the term "dynamic webservice".
But maybe you just put too much meaning into "dynamic webservice", it's really simple (in my way of understanding it, anyway).

Martin A. Boegelund
Friday, August 08, 2003

Sebastian,

What exactly do you mean by web service.

Is this the XML webservices using SOAP championed within .Net?

If your task to take a user interface on the web, using HTML, ASP and SQL, and provide a webservice interface to that application using XML and SOAP?

Ged Byrne
Friday, August 08, 2003

There is an existing application based on ASP (and Microsoft Access). They want me to provide a SOAP web service for data exchange. As there are lots of security functionalities I can't just provide a fancy SQL gateway (which would be a very dirty thing to do, anyways).

I can not use .NET. I thought of encapsulating all necessary functions in a COM-object and using the SOAP Toolkit to export these as WSDL.

Sebastian
Friday, August 08, 2003

Sebastion,

All of the business logic is implemented in the ASP pages?  Not in a set of COM components, but actually in the ASP pages themselves?  And this guy won't rewrite his code?

You really are without a paddle!  My sympathies.

As far as I can see there are just three options:

1)  You create your own application, which duplicates all of the logic embedded in the ASP pages.  I'm guessing that there are no specs, the asp pages are the docs too.  Duplication is a problem, but you won't have ot maintain this.

2)  Get management buy in for a rewrite.  As you say, the developer has earned their trust by delivering the goods.  This would be hard work.  Very hard work.

3)  Fudge it somehow.  I'm thinking perhaps you could add a layer that generates XML from the ASP pages themselves, rather than the database.  I've seen it done and its a poor solution.  From what you are saying, it looks like this is what P is expecting from you.

Is there anyway of getting out of it?

Ged Byrne
Friday, August 08, 2003

I can get out of it anytime.
But I will try to change things first. I really need the money I earn here... I hope to get the unit manager on my side. My professor (who is on vacation...) is very influental at my university. So if I abort my diploma here and can explain him the reasons I only lose some time.

To your suggestions:
a) and b) came to my mind.
c) is a crazy idea ;). But as my diploma thesis will be reviewed twice I don't dare to do something dirty like that...

Thanks for your help!

Sebastian
Friday, August 08, 2003

I am not defending anyone here. But there are a lot of inhouse products that simply don't have the time or budget allocated for important features like referential integrities. You are lucky if you can go and monitor the data's health once in a while. Lacking referential integrity checking and lacking security features in a database is not unusual simply for how painful it is to always do everything in PL/SQL or TransactSQL. And to have fine grain control over your security policies Java Security or .Net application security libraries is what you really need anyway. For example, if you need the right to change the color on your webpage, but not the rights to modify your emailaddr as registered in the database.. you need to write a stored procedure for each property just to restrict the right.. and it's no fun controlling this with lots of users. YOu can't even do it in ASP except through custom written library code--and that would probably be a broken implementation (role table, rights table, role to rights mapping table) requiring N time and effort.

Another point.. chances are you either have the budget for a full rewrite (doesn't seem to be the case you pointed out) or you have no time at all. If you ahve no time, you'll be hard pressed to do more than take the web version and change a little as possible, just make it a SOAP interface instead of user interface with all the same crucial libraries intact and unchanged--this basically makes his arguments pretty valid Sebat.

Li-fan Chen
Friday, August 08, 2003

I do not have a problem with not rewriting the app. It would be useless for me anyways as I need the features now.
My problem is that the people here do not care that their requirements (generic web service that does not need to be maintained) can not be met. It simply is impossible with the current state of the project. And they blame it on me.
I may be a student, but I am developing web apps for more than 5 years now, using different tools. I also have understanding that sometimes things have to be done uncleanly (e.g. mixing html/asp/sql).

Sebastian
Friday, August 08, 2003

I agree with Martin A. Boegelund... probably in this case 'dynamic' means 'can be maintained by a person without programming skills' ;)

Atuch
Friday, August 08, 2003

Does dynamic really mean 'meta data' driven?

This thread reminds me of many jobs I have had over the years. Now I work on the other side of the fence and people are a whole lot more friendly, nobody even cares about the IT geeks, if the IT deparment raise the hurdles too high they just hire a consultant and ignore them!

I'm glad I made the move.

Realist
Friday, August 08, 2003

PS - We make HUGE profits.

Realist
Friday, August 08, 2003

Sebastian!

Let's get a straight answer from you. What do you want from the current situation? I hope you aren't set to change the world, are you?

  When you can answer this question, more than half a battle is over!

Future cunning politician
Saturday, August 09, 2003

I want to deliver my webservice, get good grades and leave as fast as possible. I probably can not change the proccess there, so I will not try.

Though about a new masterplan:
I will try to grab the manager and the programmer separately. First to get the business requirements and after that I will talk to the programmer (who will not have fear to lose his face).
I will use the chance to sharpen my people skills and gain some political experience, as unpleasant as the current situation may be...

Sebastian
Saturday, August 09, 2003

It's difficult to determine exactly what the programmer wants you to do. You haven't given us enough info which probably means that you haven't asked enough questions. In turn this means that you are in no position to judge whether this "dynamic webservice" is possible or not.

As for my understanding of what a "dynamic webservice" for data exchange means - it's a web service that dynamically builds an xml schema from the database schema and allows data exchange according to that schema. That way if the database schema changes, the webservice dynamically adjusts. The xml is probably wrapped in a standard envelope (maybe soap) so that the web interface never changes, only the data packet itself changes. There's lots of issues to do with versioning, security, etc, but overall it sounds simple enough. Hell, I built one last week.

If you can't figure out how it works, get the programmer to help you design it. Maybe ask him in front of the manager in a way that forces him to help you.

RB
Saturday, August 09, 2003

The data is stored like this:
There are several companies. Each company has its own directory which contains 2 or 3 databases.
The main database consists of about 40 tables, some of which are linked to a main database.

Foreign keys and database security are not used.
There is a quite complicated role system which controls access to what the users may do. This is implemented inside the ASP-scripts.

The security aspects also need to be supported.

I can not use .NET.

The problems with this "dynamic" (generic) web service are:
-how can i support security? The logic is all in the ASP.
-how should the data be requested? We probably need a query language like SQL to do things like that.
-there is no referential integrity in the database. so someone can really mess things up if the full database functioniality is exposed.

So if you have a suggestion on how to solve this...

Sebastian
Saturday, August 09, 2003

"I want to deliver my webservice, get good grades and leave as fast as possible. I probably can not change the proccess there, so I will not try."

Try to compile product specifications from the manager and proposed plan from the programmer in a written form. Writing has the tendency to clarify things tremendously.
Quite often people like to throw around "bright" ideas for others to implement, but once you press for details - the ideas turn out to be half-assed. If the programmer has something specific in mind, you'll find that out. Then try to incorporate that into your design and discuss that with the programmer again. You may also find out that you're being BSed.

Report back here once you clarify things a little ...

Future cunning politician
Saturday, August 09, 2003

Get the programmer to agree to a specification - a complete list - of all the transactions that must be supported through the Web Services. Including their input parameters, output parameters and side effects.

Then ask him if he has any expert opinions on how any of them should be implemented. If he doesn't, suggest to him that you ought to rip the code out of the ASP pages and move it into some new reusable objects, so you can call it from your Web service implementation, and also edit the ASP pages to call the new objects instead.

Daniel Earwicker
Monday, August 11, 2003

"how can i support security? The logic is all in the ASP."

- So you have the flexibility to roll your own solution. Maybe your xml wrapper has some authentication data inside. Have you looked at SOAP at all? Any sort of security mechanism requires the client to pass some sort of credentials. You need to suggest some ideas as to what these credentials will be and how your code will authenticate them - if your programmer shoots them down, ask him what he reccomends.

"how should the data be requested? We probably need a query language like SQL to do things like that."

- Huh? Are you asking how the client is going to request certain subsets of data? Are you suggesting that your webservice needs to replicate the functionality of an xml database? Frankly that's ridiculuous and there is no way that the programmer can seriously ask you to do this. There have to be agreed upon xml schemas for data exchange. Otherwise the problem scope is too large. It's not impossible, just tons of work.

- Alternative huh? Perhaps you're just asking how to get data from a database? No - that means that this is a troll.

"there is no referential integrity in the database. so someone can really mess things up if the full database functioniality is exposed."

- In this case you need to write code that doesn't allow the database to be destroyed. Your code will have to ensure that the proper relations are maintained. Sure it's nice if the database takes care of these things for you, but not all systems are made that way. Deal with it. Your understanding of the data structures will increase dramatically if you have to write code in this manner. You'll probably be able to suggest design improvements that even the programmer will be impressed with.

RB
Monday, August 11, 2003

Hi!

I just wanted to let you know my situation is much better now.
Today I met with the unit manager who fully understood my problems and agreed the requirements were not clear. He supported my decision to separate the business logic from ASP and talked to the other manager.

Thanks for your suggestions and your support!

Sebastian
Tuesday, August 12, 2003

*  Recent Topics

*  Fog Creek Home