I'm working for a company that has recently hired me to create a new version of their existing software, which is now over 12 years old. The new software is a complete re-write of the old and they want it to be much more "online" than the previous version. I'm one of two programmers, the other having been with the company for 20+ years and is now close to retirement.

The problem I'm facing is that with almost every idea I suggest that doesn't fall in line with what he thinks, it just gets shot-down, ignored and forgotten. So far I've let a lot slide; nothing too critical, and things that could be changed later on if needed.

However, we're now on the subject of how to store the data that needs to be accessible to all the customers; he wants to use SQL Azure and store as much data as possible in xaml-string blobs, then use DevForce IdeaBlade to generate all the back end code. I'm not convinced, I think that if we're using a SQL storage solution we should be using relational database tables, which are normalized, etc. OR we shouldn't be using SQL at all, and perhaps use another method that allows storage of C# objects directly?

What do you guys think?

EDIT: Ok, so to give people a bit more information, the program could be considered a sort of Photoshop-like application, but aimed at a specific market. Users have access to a library of template "backgrounds" which they can then add text, images, etc. on too. When they browse the library of templates, they will be able to filter them by type, color, etc.

  • 2
    I think I need a bit more information about what the software is before I can begin to think about suggesting storage options. – Wyatt Barnett Jan 25 '12 at 17:57
  • I agree there's not quite enough information here, but my initial instinct would be that you're right. I dont see the advantage of storing xml data in blobs like that. – GrandmasterB Jan 25 '12 at 19:30

I think you will remain unsatisfied at your job until you leave, or the other developer does. ;)

More seriously, there isn't enough information to know if the other developer is shooting down your ideas because he doesn't like change, or if he is shooting them down because he has good, solid reasons that he isn't communicating well.

I would take the approach of assuming the later, and ask him if you can go over the details of his decision until you understand them. Most people are happy if you take the position of explicitly saying that you accept their decision, and want to understand why to reduce friction in future.

That will help you work out if you should move on, or if you should start listening more to what he has to say.

To the specific question, I think it entirely depends on the timeframe, needs of the company, and needs of the product. Generally, something like IdeaBlade that solves a whole pile of problems means a whole lot of code you don't have to write, so that isn't a bad plan.

To the underlying store, using an SQL database to store NoSQL style data is not terrible if it is the primary storage engine, and your problem maps well to storage form.

Azure offers pretty much nothing that isn't SQL, other than a hard disk, so you would have to write a whole pile of code to use any other base storage engine.

Using normalized SQL has the obvious advantages, though, and I would certainly wonder if the NoSQL store was actually more efficient. See "talk to him and understand why" earlier for the answer to "is it better" though.

  • Essentially he seems to want to store ALL the fields of the class as dependency properties within the XAML itself, use IdeaBlade to get this XAML "chunk" and then use LINQ queries to get at the data he needs within it. I could be wrong, but I see it as: Design the database properly, IdeaBlade takes care of the rest.. you don't need to write LINQ queries, or parse the xaml. – Siyfion Jan 25 '12 at 18:08
  • 1
    Your objection sounds reasonable to me, but as I said: I can't tell if he has 20 years experience, and misses 1990, or has 20 years experience and is just not telling you why that approach is better. (Neither can anyone else, without knowing both of you. A local peer can probably give you a better assessment in person, if that helps.) – Daniel Pittman Jan 25 '12 at 18:13
  • Yeah, problem is we are the only two programmers. :S Who can we ask that knows enough about it to make an impartial assesment!? – Siyfion Jan 25 '12 at 18:19
  • 1
    The main fallback I can recommend is your boss, but I have no idea if she or he can help. Otherwise, this might be the best option you have - which doesn't make random people on the Internet any better able to give more than general advice. :) – Daniel Pittman Jan 25 '12 at 18:22

Do a decision analysis. Talk to your boss and the other programmer and, as a group, determine what are the most important criteria your solution must have (performance, extensibility, faster development, etc.). Have your boss rate each item on how important it is to the project (1-5, 5 being the most important). These are the weighting factors. Then for your idea assign a numerical score (1-5, 5 being the best) to each criteria the solution must meet. Have the other developer do the same for his idea. These are the scores. Then, do the math. Multiply each score by the weighting factor the boss assigned and sum up all the scores for each idea. Then you know which idea has the best chance of meeting the criteria that the project needs to meet to succeed. You may quibble over the specific numbers a line item might have for a specific solution, but it would then open a dialog and once you agree on a anumber or if you realize you have forgotten a critical criteria, then you can easily make the changes and see if the same solution still prevails. It also will teach you how to think about what is important for a solution to have and will get you takling about specific factors and more objective assessments than just "I hate your idea". IT will get you talking about the real reasons why it may or may not work. You may find that when you judge the real factors and the real weights on those factors that neither solution is strong in all the areas it needs to be and you can start looking for something better.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.