16 Replies - 3091 Views - Last Post: 25 June 2010 - 11:20 AM
#1
Does agile development hurt the quality of code?
Posted 24 June 2010 - 07:52 AM
Agile development is all about getting working code out to your consumer, so that you can communicate with the consumer and see if what you have going on is really what they want, or if there needs to be some minor tweeks made. So the focus is getting a project up and running so that your consumer can see it.
My first concern was documentation and testing. I figured both of these would be lacking on an agile project. Turns out thats not the case. Documentation has turned into something that can be just as dynamic as the code. Test driven development is something that the agile process pushes as key to success. Test early and often.
So what could possibly be a negative? Design. I've always found the true beauty in a piece of software in its design. Did someone take the time to plan out how this software will work? Did they use design patterns? Did they try to use efficient algorithms? Are they using the correct tools for the job? Does everything come together and really mesh to make something that operates smoothly?
The problem I have with agile is, I feel like the design process is really getting overlooked. I see people spending time solving complex problems that amount to nothing more than jamming two pieces of software together. A lot of defects and bugs that come in are due to two pieces of software not working together nicely.
So can elegant pieces of software be designed on the fly, or are we just jamming working software in our consumer's face to get paid?
Replies To: Does agile development hurt the quality of code?
#2
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 08:29 AM
In school there were many classmates that I simply could not work with. I think the biggest problem was that I understood the problem and they didn't. Since they didn't understand the problem, and what needed to be done to solve it (implementation) the work ended up being shoved onto me. I quickly found out that I am natural at leading people but what I don't like about this personal trait is that people just blindly follow! I crave a challenge and need external points of view. I guess that school isn't a good place to find this because most people are just learning concepts and like to have someone lead them around like a bunch of...
Anyways, I found someone at school who knew what he was doing. It's too bad that we met in the last year before graduation because I would have really enjoyed working with him through out the diploma program.
The great thing about him is that he tended to know a lot more than I did and so when I had an idea he would either support it or give input on a better way to do things.
Right now he is the only developer that I would consider attempting agile programing with because we know each other and think along the same lines.
The pitfall that I can see with this type of development is if the members involved in the process do not think alike (or in the case of students, some don't think at all). You would be bashing against each other all the time!
I've thought of ways to get around this problem I believe that a strong understanding of the design of the system (or component of the system...or even a method) you are developing is required.
If you have a good enough design, test cases, and a full understanding of exactly what needs to be done then the process of agile programming is going to be a lot smoother.
So, I guess, I don't understand how you can feel that the design process is getting overlooked. I would have thought that the design process would be key to this type of development.
Then again, I've never done it so I'm curious to find out more about your experience.
-Frinny
This post has been edited by Frinavale: 24 June 2010 - 09:18 AM
#3
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 08:43 AM
It sounds like the design process is getting way overlooked to just opening the IDE and cranking out code. If this is the "agile development process," dump it fast. If you haven't spent a good deal of time on design especially in team development environments, then you shouldn't be cranking out code. Trust me when I say it'll mean more time fixing improper integration errors (no Calculus pun intended) than writing code, and you'll possibly end up frustrating the client. Once you have the design done and a high level overview of how the components should work together/be integrated, then start cranking out the code.
Remember, you aren't just handing off the clients a piece of software and running. You are also writing a framework for other developers to extend and maintain. As a rule of thumb, I write code as if the person maintaining it is a psycopathic killer that knows where I live. I really don't want to piss him off with crappy code and wasted time.
#4
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 08:56 AM
#5
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 09:11 AM
#6
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 09:22 AM
I do like a lot of the Agile in theory, but in practice, on a large scale if feels more like a something the business side of the company is forcing on developers in order to get things done faster. Maybe its because the full extent of the Agile model hasn't been fully embraced. There is a lot of untraditional practices in Agile especially for developers. Test Driven Development is one of the biggest that comes to mind for me as well as interfacing with the consumer of my solution.
I would like to see just as much emphasis on code quality and developers as delivering consumables and the customer. The Agile model in theory has that emphasis, but in practice it does not.
#7
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 09:43 AM
#8
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 10:52 AM
sbromley, on 24 June 2010 - 06:52 AM, said:
So can elegant pieces of software be designed on the fly, or are we just jamming working software in our consumer's face to get paid?
Actually the kind of design agile processes(like XP) advocate is quite a safe one- continuous redesign. Make it work, run failing tests, refactor, make it work, run failing tests,...... It continues this way till you have it right. And remember that your customer isn't after your design documents but his working software(which is the major goal of agile processes).
Refactoring which is an important component of XP, is in it's right a design (and redesign) activity. If you are refering to one-off design (using UML), i'll have you remember that requirements are in a state of continuous flux which prompts redesigning each time. So i'd rather make it work, then make code look elegant, maintainable and readable(refactoring). Agile processes don't overlook proper designing of software in anyway.
#9
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 03:26 PM
Quote
This sounds like a normal part of programming to me.
Quote
Maybe not the clients you are dealing with, but maybe they have IT people who will be maintaining this. As they can be your best advocates in the client organization, make it easy for them to maintain your code. Proper design and documentation is part of this.
Quote
This sounds to me like a get it working vs. get it working the right way moment. As project deadlines creep up fast and are in a constant state of flux, better to get it working the right way once and move on, rather than have to worry about coming back to it.
This post has been edited by macosxnerd101: 24 June 2010 - 03:33 PM
#10
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 03:57 PM
That said though, I would never use code that didn't work 100% right all of the time. It is a matter of getting it working right more than just getting it working.
#11
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 06:25 PM
sbromley, on 24 June 2010 - 09:52 AM, said:
The problem I have with agile is, I feel like the design process is really getting overlooked. I see people spending time solving complex problems that amount to nothing more than jamming two pieces of software together. A lot of defects and bugs that come in are due to two pieces of software not working together nicely.
So can elegant pieces of software be designed on the fly, or are we just jamming working software in our consumer's face to get paid?
I've done Agile in one capacity or another for going on 3 years. Specifically XP and I've worked for a signatory of the Manifesto.
XP has 4 Coding Practices:
1. Code and Design Simply.
2. Refactor Mercilessly.
3. Develop Coding Standards.
4. Ddevelop a Common Vocabulary.
XP has 4 Developer Practices:
1. TDD.
2. Pair Programming.
3. Collective Code Ownership.
4. Integrate Continually
(and for web applications I'd change that to "Deploy Continually").
Are you doing those? Are you doing a subset of those? Of the ones you aren't doing, why aren't you doing them and how might they address your issues?
#12
Re: Does agile development hurt the quality of code?
Posted 24 June 2010 - 06:31 PM
Ace26, on 24 June 2010 - 12:52 PM, said:
sbromley, on 24 June 2010 - 06:52 AM, said:
So can elegant pieces of software be designed on the fly, or are we just jamming working software in our consumer's face to get paid?
Actually the kind of design agile processes(like XP) advocate is quite a safe one- continuous redesign. Make it work, run failing tests, refactor, make it work, run failing tests,...... It continues this way till you have it right. And remember that your customer isn't after your design documents but his working software(which is the major goal of agile processes).
Refactoring which is an important component of XP, is in it's right a design (and redesign) activity. If you are refering to one-off design (using UML), i'll have you remember that requirements are in a state of continuous flux which prompts redesigning each time. So i'd rather make it work, then make code look elegant, maintainable and readable(refactoring). Agile processes don't overlook proper designing of software in anyway.
Kent Beck's (inventor of XP, TDD, and lots of other really good ideas) current philosophy when it comes to design and refactoring is one of "Responsive Design". You can see a presentation on it here: http://www.infoq.com...sponsive-design
#13
Re: Does agile development hurt the quality of code?
Posted 25 June 2010 - 01:14 AM
I am a Certified Scrum Master and for the past year have been involve in a team performing scrum (an agile methodology) as well as having previously brought scrum into a team. Often I hear people further upstream (Business Analysts, Product Owners, Managers and when starting out some Technical Architects)say that they are worried about the fact there is no design phase and that this could lead to an unscalable or poor design. However if done in the right way agile development leads to an inherently improving design.
All agile development methodologies use iterative development, most commonly doing a certain amount of work in a "sprint" before moving onto the next iteration where you do another set amount of work. This means that you will have to make some design decisions in each iteration for your current work, but only enough of a decision to cover you for the work you are doing. If then next iteration your work highlights this is a poor decision, you have a minimal amount of refactoring to do do create a better design.
People often mistake "design" with "schematic". A design is merely a plan for a project, and in agile development we are only planning the work we will be doing this iteration. A schematic is a complete read out of exactly what needs to be done and how, and this is often given in a waterfall setup. By just designing what is to be done this next iteration - making a plan of what you are going to do you allow the best decision to be made at the time of doing it rather than have to stick with a pre-defined structure that may no longer be applicable.
For a video by Ken Schwaber where he talks about the design process see "Scrum et al" or read the following.
#14
Re: Does agile development hurt the quality of code?
Posted 25 June 2010 - 07:03 AM
So then from an Agile standpoint is the design process that my team has implemented sound? Same questions from just a software in general standpoint?
Also for people that started recently or people that have been using agile for awhile, do the developers actually use TDD and pair programming? From The Neoracle's list, my team implements all those things except TDD and pair programming. I'm wondering how long, if ever, does it take for those things to catch on with developers.
#15
Re: Does agile development hurt the quality of code?
Posted 25 June 2010 - 08:48 AM
As regards design patterns, I can say, it is not neccessary to follow design patterns everywhere, as it might be an overkill - so sometimes, following a good design is better than following a design pattern
The question is - I am following a process which delivers quality output to my customer in time. As a team , we work on peer review, NUnit testing, automated testing , internal meets to know where do we stand , etc . ... but I am not following any methodology as such .
In this scenario , what is the benefit of moving to SCRUM .
|
|

New Topic/Question
Reply



MultiQuote











|