tags:

views:

654

answers:

11

I know my question is too inaccurate to answer but let me give you some background information.

Last year I got a new job as a software manager which I thought could do well. I am experienced in many different programming domain, like GUI, web, RIA, network application. I am a good problem solver. Generally I know how to organize code in a clean way. And I am always hard working.

But after almost a year, I have to admit that my boss is really upset about my job. The most important reason is that he feels that my software solution of our product is not advanced enough. I think I have elaborately broken down the system, and I've chosen most popular platform for each component, and most of the code is robust and clean.

BUT my boss doesn't think so. He really feels that we could do better. He want something not only good, but excellent. something with almost ultimate scalability, something looks very very easy to extend, something have some awesome concept and ideas.

This is a challenge I've never met. I don't know how to show my boss the current system is good enough. I told him that "we have use xxx, yyy", but he has no idea what they are. I showed him the UML to explain what we have done, but he is super fun of C and is skeptic to OO and UML.

So have you ever seen some software architect that you feel awesome, excellent and very easy to extend? I think I really need to see some example of what an excellent software architecture means.

To be honest, I really doubt if it worth try to build an architecture to prepare for some requirements that do not exist yet, but I have to make my boss happy to keep my job.

+11  A: 

I suspect this isn't a technical problem at all. I imagine your manager doesn't really understand software architecture but probably just has a passing knowledge of what's hot.

Your job is to sell your architecture to your boss(es) and to manage his (or their) expectations. If your boss is concerned about your solution not being sexy enough or not having enough scalability, chances are you just haven't managed that relationship well enough.

I think you're quite right to not build for what might not happen. You can go crazy doing that. You can't anticipate everything.

cletus
If the boss is a fan of C and sceptical of OO, I don't think it's a question of what's hot. (Note that I'm not making any judgment about C vs. OO. I'm just saying that OO is certainly hot now in tech circles.)
Telemachus
I don't think OO is hot now. OO was hot 10+ years ago. Nowadays scripting is hot. functional programming is becoming hot, managed code is hot. OO is just par for the course (and not really any more productive than procedural programming anyway).
cletus
@Cletus: you may know the field better than me, so I yield on the question of what's hot. But how is the boss' love of C in line with functional programming or scripting?
Telemachus
I must've missed the bit about C (or was it added?). Either way, that's not that different except that hes getting caught up in what he's used to rather than what's hot. Either way it's your job to either accede to that, manage his expectations or convince him otherwise (of the merits of your approach). That'll be a non-technical argument too. It'll come down to factors like total cost of solution, the business case, risks and so forth.
cletus
+2  A: 

Considering that your boss is an OO skeptic, I suggest you rebuild your application with Lego. I'm sure he will deem it "Excellent".

grenade
+2  A: 

Perfect architecture is asymptotic. You can aim for it but never reach it. Whatever is good for your software and lets you do things you need now and resilient enough to accommodate future needs, is perfect enough for you.

Developer Art
http://en.wikipedia.org/wiki/Asymptote
slf
A: 

Buy your boss Schlossnagle's book on Scalable Internet Architectures. Then you'll have something to talk about other than "our product is not advanced enough".

You should, BTW, find out what your boss thinks "Advanced" means. Do something to provide more of this "advanced" thing your boss wants. Don't do everything your boss asks, but make sure that it looks like you care about "advanced". Whatever that might mean.

S.Lott
+1  A: 

"Excellent" architecture is a very subjective thing. An architecture is excellent or not based on the goals of your project.

Each project, depending on its requirements, will potentially have a different ideal architecture. There are many things that can go into this, and some basic software architecture concepts (such as separation of concerns) that are nearly always valid, but there is no one "ultimate" architecture that's correct for every application.

What does your application do?
What are the constraints on it, both business and technical?
How large of a scale is it?
What's the expected lifetime for this application?

These are some questions that you'd need to ask to determine whether a specific architecture is "best" for the application.


My suggestion would be to turn this around. Ask your boss what are his goals for the architecture of your project? Show him how your current architecture meets them, or adapt it to work.

Reed Copsey
A: 

When talking about how "beautiful" a design is, you're never going to agree on anything.

Better to reduce the discussion to facts and figures:

  • Defect rates, average defect time-to-solve, and other various statistics to detect code quality
  • Metrics to measure features delivered (e.g. lines of code), and comparisons to commonly accepted industry models like COCOMO
  • Metrics to measure project time to market, again with comparisons to common models.

If the facts say you're doing your job well, your boss has no argument. If your boss insists on arguing, you need a better boss (he's probably just trying to prevent you from getting a pay raise or something like that).

Joeri Sebrechts
+1  A: 

A while ago Microsoft released an Application Architecture Guide for free, as well as some pocket references. I think both you and your boss should read them together.

slf
+2  A: 

I am experienced in many different programming domain, like GUI, web, RIA, network application. I am a good problem solver. Generally I know how to organize code in a clean way. And I am always hard working

That makes even me suspicious, and I'm not your boss. Excuse me for being blunt, but reality is that you aren't really as proficient in all those very different areas, from GUI to architecture, as you think you are (that would border on geniality). The implication is that architecture you designed is also not as good as you think.

May be the solution is not in achieving some ill-defined excellence, but identifying and fixing some specific faults you didn't notice or chose to ignore

ima
+1  A: 

A good architecture is one that meets the needs of the business.

One good principle to use is YAGNI You aint going to need it. Do not build something until you actually need it.

Shiraz Bhaiji
A: 

An excellent architecture is one that fits the needs of the problem. If you've done that, you've done a good job.

Chris Stewart
A: 

Well you said you were employed as Software Manager but you talk about Software Architecture. This is normally 2 differents things. Software Management is about Process and Planning, Software Architecture is about Design. Though interelated that is 2 different sets of skills which could be found in the same person but was your job's mission clear about the profile ?

Rebol Tutorial