Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

After six months of development on a project, our stakeholders have had a "gut check" and have decided that the path that we've been walking (a custom designed application framework and data access layer) is holding us (the developers) back from quickly developing the features they would like to see. After several days of debate management and the development team have decided to scrap the current incarnation and start over using ASP.net MVC, with Entity Framework as the bases of the a 'quick and dirty', lets just get it done project.

In days following, our senior developer who has never worked with MVC or Entity Framework has finally gotten into a sample project and done some work. His take on ASP.net MVC, "this is not software engineering".

So my question is this; what do you do, when one doesn't think the code is complicated enough?

share|improve this question
32  
Adding complexity just for the sake of having complexity sounds like a good begining to a Monty Python skit. –  FrustratedWithFormsDesigner Mar 11 '11 at 20:31
14  
When management decide on what frameworks developers should use, alarm bells should go off instantly. If they do this to get "quick and dirty" solutions rolled out, even the "EVACUATE" sign lights up. –  biziclop Mar 11 '11 at 20:33
5  
In all honesty, I don't think the code is the problem. :( –  Andreas Johansson Mar 11 '11 at 20:33
5  
@FrustratedWithFormsDesigner While I was working with EJB2, I too had a feeling that it had been designed by the Royal Society For Putting Things On Top Of Other Things. –  biziclop Mar 11 '11 at 20:34
4  
How is "this is not software engineering" a take on ASP.NET MVC? –  mootinator Mar 11 '11 at 20:36
show 11 more comments

closed as primarily opinion-based by MichaelT, GlenH7, gnat, Bart van Ingen Schenau, Michael Kohne Jan 6 at 2:40

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

12 Answers

up vote 31 down vote accepted

Slap him in the head?

That's akin to someone saying, "I shall only use flint to start a fire." as you show him a lighter.

The stakeholders are right: They want to see value. As programmers, we're there to provide value -- not reinvent the wheel so we can feel like we're 'roughing it'.

They're paying your checks: If your complicated way isn't going fast enough, uncomplicate it. There's enough complication in this world without developers adding more just to feel studly.

share|improve this answer
2  
+1: Don't reinvent the wheel. If you want to do software engineering, go somewhere else and let real programmers step in to produce value instead of doing engineering. –  S.Lott Mar 11 '11 at 21:13
1  
+1 ofcourse, tell your lead develop he can do his complicated software engineering stuff on top of this framework and make something even more complicated –  Imran Omar Bukhsh Mar 11 '11 at 21:34
add comment

Your phrasing of the question assumes that the Sr. Developer's only complaint is that the new framework "isn't software engineering" and that he's looking for more complexity. Given this premise you're only going to get answers that reinforce your point of view; of course people are going to say that complexity is bad.

That might be absolutely true but I would say the first thing to do is make sure you correctly understand the Sr. Dev's point of view. He might actually be saying "this isn't going to let us fulfill all the requirements" or "we will quickly hit a wall."

share|improve this answer
add comment

Unlike other answerers and commenters, I will not suggest you to leave or to make the lead developer fired. This is normal. Programmers are used to challenges, and they do not like not having them.

The answer to your question "what to do?" is "keep working". Explain your lead that when a task is complex enough, a more powerful tool requires a more powerful worker. Here are a couple of challenges you face using a powerful framework.

  • Leaky abstractions. The framework you develop abstracts away a lot of things you liked to play with? Yes, the but what will happen when these abstractions will leak, when something goes wrong—and you won't be able to figure what outright?

    Crushing through all the framework and components code and infrastructure that lies below your abstraction is a challenging task, and does require a lot of experience. Aside from the linked Joel's article, a simple example: a stacktrace in Ruby on Rails web framework may easily reach 50 function calls. Doesn't look so simple, does it?

  • Keeping it simple. Yes, sample project doesn't look like a challenging task. A simple program looks simple in any language. You get used to such a simplicity, but when it gets more complex, keeping your code as simple as in the sample project becomes a challenge.

share|improve this answer
add comment

Given that you are six months into the project, I take it the problem is reasonably complex. So complex in fact that your team hasn't delivered a solution. Do you need more complexity?

Unfortunately, I think your lead is sadly mistaken about what software engineering is about. Good engineers use as many standard components as they can. How they put them together may be unique. When necessary they will design custom components.

I have a few rules I live by when designing and building things.

Steal from the best you can find: You do it every day with all your tools (unless you coded them yourself). The more of the work you get already done the more productive you can be. Its a very strange day, that I don't rely on the work of others.

Stand on the heads of giants: There was a time we did everything in machine code or assembler. Then someone invented language compilers and more languages. We stand on the the shoulders of those who have gone before. Many thanks to those who designed and built the tools we use. Now we have MVC that builds on top of other tools, and simplifies a new range of problems.

Keep it simple stupid: Things you find complex now will become incomprehensible when you have to fix it in a couple of months. (I've been there.) The human mind can only keep track of about 7 things at any one time. When you are programming that includes how you got there, where you are going, what your are doing, and what you need to do. It doesn't leave a lot of room for extra complexity.

share|improve this answer
add comment

Your question is missing the point.

Your stakeholders aren't getting the value they believe they should be able to get. This is normal. Everybody wants more for less.

However, the team should always be looking at getting more for less and figuring out what the stake holders really need. A better question might have been around the needs, how your framework is meeting the challenge of providing those needs and recommendations to better provide the value that is desired.

share|improve this answer
add comment

I dont know anything about ASP.net or its frameworks, and you dont say what language you are currently using. But in a general sense, I suspect that if you couldnt make headway before, adding a framework isnt going to magically change things. Especially since you are stepping backwards and starting over.

And unfortunately, 5 years from now you'll probably still be maintaining that 'quick -n- dirty' solution.

share|improve this answer
    
While I understand what you're saying about 'quick and dirty', I would much rather work with a more fairly common out of the box solution rather than a 100% custom implementation 5 - 10 years down the road. Finding resources like videos, tutorial, books and such help much more than trying to decipherer what one individual was thinking at the time he wrote a custom framework. –  Chris Mar 11 '11 at 21:51
1  
I dont think you actually understand what I was saying. I was not commenting on using or not using a framework. I was saying that after six months, with or without a framework, if there wasnt enough movement on a project - so much so that you think its smart to discard six months of work - the problem may not be the lack of a framework. –  GrandmasterB Mar 11 '11 at 22:11
add comment

I can empathize with that senior developer. When I did web development in the late 90's, frameworks were practically non-existent, and starting from scratch was the most commonly accepted practice, unless your company did a lot of the same kinds of websites for different clients.

I recently decided to update my skills (my day job is embedded software), and designed a web site for my sister-in-law's photography business. I started with Drupal, and although I expected the experience to be different, I wasn't prepared for how startlingly different it was. It felt mostly like installing and configuring rather than developing. I was almost done before I wrote a single SQL query, and even then, I only wrote 3 total.

However, rather than view it as a negative, I took it as a good thing. Rather than focus on making the basic functionality work, I was focusing on what made the site unique. After I passed a certain learning curve, when a feature would occur to me, it was often a 10-minute job to put it in, where the old way it might have taken days to get right. As a result, the site is of much higher quality than it would have otherwise been. It's not that I'm not being challenged, it's that my challenges are in the more interesting parts of the design rather than reinventing mundane functionality.

Your senior developer's mistake is in not considering solutions like this in the first place. It might take a little longer to learn to customize up front, but the payoff comes quickly.

share|improve this answer
1  
I feel the same way. I think our senior developer enjoys figuring out the little nuances which take days of hard thinking and deep code to figure out. Yet, for the rest of us, the over complex solutions while they do work, are difficult to understand and work with. Using a pre-defined framework cuts down on the mundane items and lets developers actually 'develop'. –  Chris Mar 11 '11 at 21:47
    
I find it crazy that you first consider "only writing 3 SQL queries" as a negative and then come around to thinking of it as a positive. –  Alb Mar 12 '11 at 2:12
1  
I second @alb. Most times the Drupal/Joomla crowd finds the whole 3 SQL queries thing to be wonderful, until the next request turns the "custom cookie cutter" approach into a feat of trial and error. –  Droogans Jan 6 '12 at 22:46
add comment

So, what is software engineering according to your dev lead? (-:

Since you're on the "quick and dirty lets get it done" path, you may not have the luxury to worry about code complications or debate the existentialism of software engineering.

If it works, it is good.

Good luck,

KM

share|improve this answer
    
The description at the top of this question should describe what "Soft Engineering" is for him. programmers.stackexchange.com/questions/35715/… –  Chris Mar 11 '11 at 20:53
    
I read your other post, and apparently his idea of Software Engineering is all about constructing Rube Goldberg machines... Ultimately though, this guy is going to have trouble letting go, but Pierre 303's answer on that other question seems like the advice to follow. –  Slomojo Mar 12 '11 at 2:15
add comment

Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. - Alan Perlis

Simplicity is great. To strive towards a more complicated solution just baffles me to be honest.

share|improve this answer
add comment

"My aim is to make things as simple as possible, but not simpler than that." -- Albert Einstein

"When deciding between two models which make equivalent predictions, choose the simpler one," -- Restatement of Occam's Razor

In other words, there is inherent utility in simplicity and one should not attempt to inject complexity and muck it up.

share|improve this answer
add comment

Complication should be something you strive to stay away from, not encourage or go after.

share|improve this answer
add comment

To answer your stated question: Tell them they are crazy, good code should be simple parts adding up to a complex but not complicated structure.

To respond to your situation: I too have been in a similar situation where management could not see that a little bit more time spent now would save much more time later. I overcame it through, what should not have been, a difficult and long meeting explaining this.

share|improve this answer
add comment

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