Quick and dirty versus good design

What do you do when your manager wants you to somehow implement something quickly and dirty, and you just know that this will have unpleasant consequences?

My manager wants me to develop a web application for the client and do it as quickly as possible. This is the first web application that we create for this client, and I consider it important that we do everything correctly so that we can use it when they inevitably ask us to improve it or create a new one.

I would like to spend some time creating a framework (even if it's just something simple like Stripes ) and setting up tomcat to use DBCP. I also think that we should use CSS templates and give at least a minimal amount of ideas for presentation and design of the application, because, in my opinion, nothing looks as unprofessional as a poorly designed web page (unless it is an email with really bad grammar).

The problem is not so much that we are under pressure to achieve this, but even more so that my manager does not feel that he can justify invoicing for extra hours for what he himself does not consider necessary. His “just do it as soon as possible” approach has already collapsed several times - once, for example, he told me not to develop code to handle a certain error situation, since this was very unlikely, and then when this happened, there was a big mess ( which I had to clean).

So what should I do? Am I really doing this "fast and dirty"? I decide the fastest way is to do it right and deal with the consequences if he requires me longer than he hoped? Part of the problem here is that, although I have already been involved in web development in the past, it has always been within the existing framework, so setting the framework from scratch is related to the learning curve for me.

+4
source share
19 answers

Keep in mind that, from his point of view, billing in a few hours makes selling less attractive to the customer. It can be a good marketing approach (even if it’s a terrible design decision) to write it quickly and dirty, so the client likes it, and when they want changes, he can pay more hours in the future because he now has a client " into his network. "

But my advice is: look around, he answers, so do it differently, otherwise you only create problems for yourself. If you want to do everything right, become a boss or find another company that is truly right in the right direction. But just going against the grain will only fire you or dog sledding with this guy, so this is life.

+9
source

Quick and dirty. What they want, what they are willing to pay for. Take the money and deliver it.

Later, when the system is uncontrollable because it is full and full of chaos there, and the customer is able to want and pay for a reliable, well-designed solution, take the money and deliver it.

See, you get paid twice!

In addition, the crap solution will be associated with some current manual processes. They may be charged. You get paid again!

No wonder your manager likes this approach!

+6
source

Despite the risks, I propose a management perspective . :-)

One of the problems that I encountered with some members of the team is that sometimes it is difficult to see the big picture. This is obviously an expression that developers can make about their managers as well - of course, managers (especially non-technical managers) cannot understand how hasty solutions will now lead to problems later. But I repeat that these are not just managers who can miss the big picture. Developers can too.

Once my team had to develop a simple demo, and I had two people who worked on it. It was probably a demo. Was there a chance that we can save and develop it? Sure. The chance was even decent - maybe (just making up the number here) 25% just for the sake of argument. Almost a month later, there were no results, and finally I called BS. It turned out that the developers were "engineers." Installing it modular, plug-in, verifiable, etc. I told them to stop, and I wrote a demo in one day. "The big picture" was to quickly provide proof of concept to the client, and if for some reason we decided that we wanted the demo to turn into actual production software - great - in the worst case scenario, we throw away one day worth it " hard work. " And that was the worst case. This was not the way I was able to make several hundred lines of code that got complicated.

Undoubtedly, sometimes managers make bad calls in the name of expediency, but just because I ask my team to do something quickly and dirty does not mean that I am short-sighted. Most of the time, this means that value performance is more important in situations where the right engineering law is. Unfortunately for some developers (of course, a minority), the proposal itself is blasphemy.

+5
source

If by “first web application” you mean a prototype, you should probably do it quickly and dirty. Your client probably wants to see something before committing something. However, you can do something quick; without making it dirty. If you were careful how you created the web application and wrote it, you can probably turn the web application into a work of art right after you released the first version.

+2
source

Start polishing your resume.

+2
source

I feel that sometimes you have to make choices based on integrity, and not reduce it to the requirements of expediency, or simply because you are under pressure from your boss. This does not mean that I have an answer to your question, only you must decide for yourself what is appropriate in this situation, with this client, in your organization. Ask yourself:

  • How much does your boss really know about the client’s desire?
  • Do you know better than your boss? Are your customer relationships stronger?
  • Where is the pressure to do it fast?
  • Does the customer mean the costs / benefits of being “quick and dirty”?
  • What organization do you work for? Do you consider yourself more of a consultant (very close to the client) than an employee or vice versa?
  • How well do you think about your boss (at your company or client? Just like how well do you think about yourself?
  • Is the code really thrown away or if it will really be used in the future
+1
source

If this is just a demo for the client, I think that a quick and dirty solution is enough, but in the end you work as a developer to protest if you think this will have unpleasant consequences. Uncle Bob in "Clean Code" tolerates the point well:

"What if you were a doctor and a patient who demanded that you stop all the silly hand wash in preparation for the operation, because it was too much time? It is clear that the patient is the boss, and yet the doctor must absolutely refuse compliance Why? Because the doctor knows more than the patient about the risks of illness and infection, it would be unprofessional (not counting the criminal) for the doctor to perform the patient.

So unprofessional programmers to bend the will of managers who do not understand the risks of creating unrest. "

+1
source

Let your boss learn from your mistakes.

If you are always trying to protect them from yourself, then they will never be able to learn from their bad decisions, and you will always try to mitigate their next bad decision.

It is also important that you do not protect them from the consequences of a bad decision, for example, quietly putting them on the weekend for something that you feel guilty for.

You can and should, of course, do it all nicely, without a hint of malice. Even better, diplomatically speaking for the reasons for each approach as early as possible, miracles can work.

Of course, some people never learn; -)

+1
source

Ruby on Rails. If this is an option. I have heard many times that this is the fastest way to get a CRUD site and work well.

[edit]

Building your own structure is a huge waste of time; you cannot build a world-class frame at any reasonable time. Do not reinvent the wheel. I heard many programmers say, "Oh, yes, I could build this soooo much better." Of course, but could you build it even close to a good 5-10 hours paid time, what will it cost your company to just buy it directly? Unlikely.

If this is what your company often does, you should speak with your boss so that you can find a complete solution to the “quick and dirty but still worthy” problem. This may mean extra time, but it will save time in the future.

[/ edit]

0
source

This is the case when you need to manage. Your boss does not see the need to implement a good design, because he does not see that in the end it will be easier. You can either convince him now, or make sure he sees the problem when the changes end up taking more time. At the very least, you can control your thinking in a few small tasks so that you can teach it to work with good design over time.

0
source

Just do the quick, dirty implementation. Your task is to turn the specification into a work program, and not analyze the trade-offs between direct costs and future benefits. I worked with engineers who insisted on adding many layers of indirection, wrappers, unused code, etc., for which no one paid, insisting that they know better than the prime minister. I was this guy too (a couple of years after I graduated), and that doesn't make you popular. I do not do this anymore.

0
source

Hmm, if your boss just wants to finance quickly and dirty, and you do not agree with the task, then find another job. You don't seem to like doing what you get paid.

0
source

I would be quick and dirty if what you were asked for, as jcollum is supposed to, Ruby on Rails is the solution.

The reason I went quickly is that if the user and your manager have a time frame and budget, and you can provide a stable solution that meets these and any other requirements, you should do it. The bottom line, if you work for someone else, it is about meeting their requirements, and not about your own ideas about best practice or structure design. However, if you can convince your manager and client of the long-term benefits of more upfront investments for a better long-term result, go for it and play fair with you.

My guess is that after you have done a few more implementations, you can better combine the fast and the good.

0
source

On the one hand, you are not necessarily involved in all the factors and pressures on the boss. Perhaps he knows that it is “one-time” and you will not be engaged in any business with this client.

The bottom line is that you get paid to implement what they tell you to realize. Yes, you should point out the pros and cons, but in the end, this is their solution.

But to be safe, document EVERYTHING! If people start to play blame, you can at least cover your backside. (You can do nothing good, but always protect yourself.)

0
source

My advice will be to say that there is a quick and dirty way to satisfy the requirements for X days / weeks / months and that if there are significant improvements or opportunities, then it will cost you to switch to something more that can handle what now required.

Something to consider here is YAGNI's idea if the client wants nothing more than the basics they wanted in the first implementation. There is also the question of what part of the structure you will build in this first round.

0
source

If you were responsible, I would suggest that you do it in the “right” way with a good design, even if it takes more time. The problem, although it is your manager. So it sounds like a conversation you should have with your manager.

Remind him (subtly) of how his approach has led to confusion, and suppose you need to pay more attention to the project. Suggest that this can be a good marketing decision to put a little more effort into this project, because relationships with this client can be crucial. Don't get into an argument, just make yourself hear. At the very least, this can make him stop and think about his decision again - perhaps he may have another conversation with the client about how much they are willing to pay.

In the end, respect his decision, but make sure that he understands that this is his decision , and you simply follow the orders. Thus, if the problem develops in the future, it will not become your problem.

If it doesn't fit the type, I think you're stuck doing it fast and dirty. I would document the situation, if only to minimize the future capture potential.

0
source

I would not blame the boss too much. Like many people say, he / she has a POV just like you. You need to adapt to the management of this type of demand, having studied some kind of rapid prototyping tool. I use the Microsoft platform for business and web applications (Java for scientific tools), so when someone wants to see a website prototype, I can quickly hack something on my local dev platform using ASP.NET. Usually for a prototype, ugly does not matter how functionality. If the client knows that this is possible, then they will be inclined to buy in beautification (if only its internal - then who cares about how it looks - ha!).

0
source

Think about what you need to be a "professional software developer." Being a member of a professional group means following certain codes and rules. This means that you are not just giving up your principles just because management is telling you.

If you really think that setting up a framework and using CSS templates is necessary to deliver a product of good quality, then insist on it.

Imagine that a civil engineer would say that a civil engineer was quickly and dirty done by his manager. Will he do it even if he knew that the design is of poor quality? What would be the consequences if he did this, for him personally and for construction as a profession?

I think that we, as software developers, should be more proud of our work and show greater professional responsibility.

0
source

I would interpret Q&D as Fast and Functional. Dirty ones are rarely quick, even to demonstrate or prove a concept. Whatever you do, you will still reorganize it. Just give him the time available and focus on YAGNI and the smallest sufficient solution.

0
source

All Articles