The comment responses to this post are really depressing.<p>They seem to encourage the original poster to adopt a short-term, sycophantic perspective where she punts her desire to keep the code-base clean and maintainable in exchange for blindly following requirements and putting forward a good image. I know there are a certain class of people who recoil in instinctive disgust at the suggestion, even after being reasoned with and beaten down; I am one of them.<p>One of the posters even mentions the books that talk about this sort of thing, and then dismisses them as irrelevant to the true goals of management. Most of these books contain the wisdom of people who have seen many projects and products, and have a reasonable idea of what makes one successful from a technical stand-point. The reason they were written is because the authors saw enough projects fail when <i>not</i> following the practices they suggest. It isn't just wishful thinking written by technically minded trolls.<p>Reading all these comments I am reminded of the first section of a book I read recently which helped me realize I wasn't alone. I believe I have mentioned it on here in a prior post; Uncle Bob's _Clean Code_. One of the most salient points he makes in the first chapter is that the quality of the code-base is the responsibility of the developers, because they are the <i>only</i> ones who have the most concrete sense regarding the cost of bad code. In the long run, it will make everyone look completely incompetent, even if in the short-term things appear to be getting done at a very rapid rate. Eventually, your clients will care, your managers will care, and “I was just following orders” will not be an acceptable excuse because they were looking to you for intelligence and wisdom, not just units of work done without deep analysis.
There are a couple of implicit fallacies in the follow up comments that bug me.<p>1. Someone asked if the badly written code was really causing any problems, and then everyone thereafter seems to just take as an assumption that badly written code does not create any real problems. Well, badly written code often does cause performance problems and disguise bugs. I have inherited code bases where things were taking ridiculously long because the code was a convoluted and almost incomprehensible mess. Making it simpler and more comprehensible was a necessary prerequisite to make it operate at a reasonable speed.<p>2. There seems to be an assumption that you can write code rapidly or comprehensible code, but not both. In my experience, programmers who write incomprehensible code are not more productive than the programmers who write comprehensible code, often the opposite. There is no polite way to say this, but incomprehensible code is more often the result of less knowledge or intelligence than it is the result of a desire to get a lot done. Furthermore, stopping to think before coding can often lead to much shorter development times than just diving in and typing the first thing that pops into your head.<p>When I have been in the role of technical person with non-technical management, my implicit approach is "evaluate me on what I produce and how quickly I produce it, but stay out of the code." If I am being hired because of my knowledge of how to make computers do what you want, evaluate me on that, and let me figure out the best route to get there.
It's weird hearing people say not to focus on cleaning modules because they're a waste of precious resources. Down the road, the code is all you've got - you must keep it in as good a shape as you can. The more "technical debt" you acquire, the harder it's going to be 2 or 5 years from now to stay competitive. Hacks might sell version 1, they might even sell version 2 and 3, but come versions 4, 5 etc. it's going to be increasingly hard to add features and fix bugs without breaking the whole thing. I've been on two such projects in my short career and it wasn't fun. It's one thing to work with a complex codebase, and it's completely another to work with a badly mentained complex codebase - it sucks the pleasure of programming out of you.<p>As I've said - code is all you've got in the end, and if it's good, the shipped product will reflect that.
to me, this person's rant comes across as whining more than anything else. it reminds me of the old quote about theory being the same as practice, but only in theory. being in a similar situation, i'd counsel her to recognize that being a professional developer involves much more than writing code. sure, we were taught to espouse the pursuit of code nirvana when first learning to program, but when tossed into the world of industry, that pursuit is quickly replaced by pragmatism and understanding that not doing something right doesn't necessarily mean you're doing it wrong... i'd keep going, but at this point i'd just be rehashing edw519's points... <a href="http://news.ycombinator.com/item?id=669163" rel="nofollow">http://news.ycombinator.com/item?id=669163</a>
There's a chasm you have to cross to become "senior", whatever that means. One of the biggest skills you need to learn is not technical. That skill is understanding exactly how to apply our limited resources.<p>Should we worry about how well a certain module was written? Maybe, maybe not. Sometimes the answer really is, "It runs well and isn't hurting anything, so let's leave it alone. Opening up that can of worms dumps 47 new issues into our queue and now is not a good time to do that." Or the answer may be, "This has to be made right before we can add these 27 other things to the system or we'll all be in deep sh*t." How do you know which? Experience. Understanding the big picture. Understanding your customers and users. Understanding your dev team. You get the idea.<p>Taking on a lead role is not selling out if it's used to expand your horizons and make you an all-around better dev person. When you return to full time development, you'll be light years ahead of those who never had to manage the whole project. A little perspective goes a long way.
"It's extremely frustrating to work with individuals and in scenarios such as these. [...]<p>My strong point is that I communicate well with people, and I'm not afraid to take an issue up with someone"<p>Reminds me of Office Space: "I've got good people skills, damn it!!!"