Reddit Reddit reviews Agile Software Development, Principles, Patterns, and Practices

We found 17 Reddit comments about Agile Software Development, Principles, Patterns, and Practices. Here are the top ones, ranked by their Reddit score.

Computers & Technology
Books
Computer Programming
Software Design, Testing & Engineering
Object-Oriented Design
Agile Software Development, Principles, Patterns, and Practices
Check price on Amazon

17 Reddit comments about Agile Software Development, Principles, Patterns, and Practices:

u/TransFattyAcid · 8 pointsr/webdev

The agile principles are based around the idea of iterative development. This invites what you're calling rework to make the product the best it can be.

Obviously, you're coming at this from a place of frustration because you want to meet deadlines but the "simple" solution is to build all these steps into your estimates. If you're not setting the deadlines, then you need to be up front with your manager about what you can get done in the given time. Maybe it'll work, but not be clean code (the P.S. here is that after it ships, you need time to make it clean). Maybe you can get features X and Y done, but not Z.

Refactoring and code reviews are part of the job. Yes, your manager is going to make suggestions you might not agree with and, yes, the senior devs are going to send you back to the drawing board sometimes. Sometimes it's because they're jerks and sometimes it's because experience has taught them something.

All in all, I'd recommend reading any of the following by Robert Martin. Clean Coder is perhaps most relevant to estimates and deadlines but they're all really helpful.

u/periphrasistic · 5 pointsr/OSUOnlineCS

Hmm, I had a very different impression: I thought that Architecture & Assembly and Networks were the two best courses in the program, that Data Structures, Algorithms, and Operating Systems would have been among the best had they been taught a little better (for the former) or were more rigorous (for the latter), and that the Software Engineering courses, along with Web Development, Databases, and Mobile/Cloud were the worst courses in the program.

For SE I, the primary problem, as I saw it, was that the information was either badly out of date, or covered in such cursory depth as to be useless. The course is heavily based upon the optional textbook, and if you actually read the textbook, you'll quickly discover that the overwhelming majority of the research being cited and presented is from prior to 1990, and hardly any of the citations are from after 2000. Likewise, the course focuses heavily on software development process models, specifically Waterfall and Extreme Programming. However, neither process is particularly popular in the 2016 job market; most organizations at least nominally use some form of Agile methodology, but generally not particularly well. In any event, the process model used by your organization will likely be something you learn on the job. Finally, the course almost completely ignores issues of coding style and writing code that can be easily understood by other developers (which is an entirely different skill than writing code which will pass a grading script), and the sections on system design and object-orientation, which should be the heart of a software engineering course, are entirely cursory. SE I is sadly a required course, but if you actually want to learn software engineering, you are far, far better served by carefully reading Robert Martin's Agile Software Development and Clean Code.

The less said about SE II, the better. That course is a disorganized mess and OSU should honestly be ashamed to charge money for it (the bulk of the course content, in terms of lecture time, consists of links to two free Udacity courses).

u/stevewedig · 4 pointsr/androiddev

I think Uncle Bob's PPP Book is the original book from 2002. May be more options by now though.

u/MegaGreenLightning · 3 pointsr/javahelp

I've read both Effective Java and Clean Code and highly recommend them as well.

There's also Agile Software Development (by Robert C. Martin):
http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445/ref=sr_1_1?ie=UTF8&qid=1451828712&sr=8-1&keywords=agile+software+development

This book contains among other things a description of the SOLID principles of software design. For example the Single Responsibility Principle tells you that each class should have only one responsibility. This reduces coupling and leads to small and more easily understandable classes. The book also contains some nice case studies showing how to apply these techniques.

While Clean Code deals with writing code and how to design methods and classes, Agile Software Development tackles the topic at a higher level and discusses how to develop and design software consisting of different classes and packages etc. It requires a basic knowledge of programming and OO, though.

Robert C. Martin has also created a series of purchasable training videos at cleancoders.com. These videos cover the topics of both books starting with the rules for clean code and then going into the SOLID principles and other advanced topics.

u/Midas7g · 3 pointsr/PHP

Object Oriented Programming is not for organization, or even for making parts reusable, although those are nice side-effects. OOP is for one thing: making your code easy to change. If you look at your code and discover nested if-elseif statements, or switch upon switch, you're definitely writing spaghetti code that is brittle and difficult to change.

If you use OOP for making your code easy to understand, you'll end up forcing concepts into your code that maybe don't really apply to the actual problem. For example, read chapter 6 from Agile Software Development, Principles, Patterns, and Practices. Everyone who starts solving the bowling problem will introduce the concept of "frames" but actually sticking with that object structure will needlessly complicate the design.

I develop by first writing a test, making it go green and then refactoring out the duplication. Then later when I need to make a change, I only have to understand a small bit of the code and I can make a change in a single place, confident that the places this functionality is shared will also behave in this new way.

My app is deployed weekly with new and occasionally radical features, is used by hundreds of thousands of people a day and hasn't had a single bug regression since we started programming in this fashion.

tl;dr: both of you are using OOP wrong.

u/purephase · 3 pointsr/rails

I don't think you need it explained from a Rails point of view. Ruby is an OO language, and Rails simply exploits that.

You need to learn proper design patterns in Ruby (which apply to most OO languages). Sandi Metz's Practical Object-Oriented Design in Ruby is pretty much the gold standard for Ruby and very readable.

It's based heavily off of Martin's Agile Software Development, Principles, Patterns, and Practices.

After that, you can look into SOLID but, in Ruby-land, I think the single responsibility principal coupled with the rules laid out in Metz's book (summarized here) is a good place to start.

Also, it's worth noting that if you have good test coverage it makes re-factoring much, much easier.

Good luck!

u/thomaslee · 3 pointsr/learnprogramming

Unfortunately there's no substitute for practice, but one way to help you along your way might be to approach this learning from a testing perspective:

Write a few high-level integration or "system" tests that drives your program at a very high level -- ideally such that it doesn't need to deal with your program's internals at all (e.g. if your program should process some files and prints some output, your test might generate your files, call your program to process those files, then check the output is what you expected).

Then write your program against these tests. If you mess up your internal design, you have your high-level integration tests to prove your program's correctness when it comes time to refactor.

Of course, while you're figuring out your internal design you can be using unit tests to drive the design of individual classes too -- but don't be afraid to throw those unit tests away if your internal design happens to need to change.

Lots more detail about this sort of approach in https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 -- though I must admit, outside of unit testing everybody seems to have different terminology for testing at different layers (e.g. what that book calls "system tests" I know other folks call "integration tests").

u/MrKurtHaeusler · 2 pointsr/software_design

Possibly one or both of Bob Martin's books.
Agile Software Development, Principles, Patterns, and Practices (comes as a Java or C# version, but many of the ideas will probably be useful if you are using an OO language) or
Clean Code

u/time-gear · 2 pointsr/6thForm

Projects on github is a good way to show them. And then you can talk about how to know how to use git (not worth mentioning IMO but still)

Books: https://www.amazon.co.uk/Software-Development-Principles-Patterns-Practices/dp/0135974445 is a book that outlined the SOLID principles for coding which are quite popular today. In the recommended section are some others by him as well

u/banuday17 · 2 pointsr/java

Sure, glad I could help. It sounds like you're having some difficulties with the fundamentals of object-oriented programming. The Java tutorials are good, but they are focused on the Java specifics and don't really go into the bigger picture.

For that, I would highly recommend Agile Software Development, Principles, Patterns, and Practices by Bob C. Martin.

u/dencan · 1 pointr/sweden

>[1] http://www.amazon.com/dp/0135974445/

Det där var ju en ganska tvivelaktig källa. Eller så missade jag en ganska stor bit av agil utveckling på högskolan.

u/CreeperShift · 1 pointr/learnprogramming

I recently asked my prof the same thing, and he recommended this:
https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445

A little older but apparently still very good. Haven't gotten to it yet tho so I can't really tell you more.

u/njw1108 · 1 pointr/agile

https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 could be a good start.

and Uncle Bob's blog has a lot of insightful thoughts as well https://blog.cleancoder.com/

u/htglinj · 1 pointr/dotnet

Robert C. Martin, a.k.a. Uncle Bob, initially wrote a book for Java (2002) before the C# (2006) book was written. The only version he seems to maintain, or at least I can find links for on GitHub, is Java.

The book has helped me understand concepts, and most consider Uncle Bob one of the essential authors of computer programming. The C# book has code throughout, especially Section 4, but I cannot find a downloadable source. You'd have to input by hand, page-by-page if you wanted the complete system.

u/sh0rug0ru · 0 pointsr/java

My favorite book is Growing Object Oriented Software Guided By Tests.

I also enjoyed Agile Software Development, Principles, Patterns, and Practices. The older version of the book is in Java, the newer version in C#. But, it's more about the OO principles than the specifics of the language, so I'd recommend the C# version. Here's a really good chapter from the book, containing a good study of both bad OO and better OO.

u/sethgecko · -2 pointsr/AskReddit

Not online, not for beginners, but if ever you are in a situation where you will have to maintain the code you wrote... this is something you will wish you read as early in your adventure into coding as possible:

Agile Principle Patterns Practices in C#

Agile Principle Patterns Practices in Java