Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Please advise if it is required to learn design patterns if I'm studying for Android development?

share|improve this question

closed as not constructive by Glenn Nelson, MichaelT, GlenH7, Martijn Pieters, Joris Timmermans Mar 8 '13 at 15:28

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Let me put it this way, I would ask 20 other things during an interview before I asked a question about design patterns. – Job Oct 5 '11 at 16:13
I honestly don't know who upvoted this question 5 times. It's sort of a "Duh" question. If you are programming you should know the design patterns applicable to the domain if you want to write clean robust code. That plus the "advice me" kills me. – Rig Dec 31 '11 at 19:37
I don't think the fact that you will be doing Android development is relevant to your question. The typical design patterns are platform-agnostic (though arguably suitable for OO languages such as Java, C# o C++). So your question should be reworded to something like "Do I need to learn design patterns if I want to do Java development?". – Andres F. Dec 31 '11 at 21:28
up vote 15 down vote accepted

It will make you life easier if you do, but it is not essential. You'll be gaining the knowledge and experience of developer's before you. Also, you'll be able to commmunicate with other developers better - I once heard a podcast (can't remember which) where they explained that without the vocabulary of patterns, it's like joiners or carpenters having to explain to each other what a tennon and mortice joint, or a dovetail joint is every time they use one.

I recomment this resource:

you'll mainly want to focus on the 'Gang of Four' section. The descriptions here are very succinct. Good for people who find the Gang of Four book too heavy going, and who find Head First Design Patterns too patronising (sorry, but a Duck Simulator does not give me a good idea of how to apply these patterns in a real life situation.)

share|improve this answer
thanks for the link, maybe I'll finally be able to read about all the GoF patterns (I fall into the people you described). – jhocking Oct 5 '11 at 12:30
+1, I quit reading that book after the duck simulator. – Job Oct 5 '11 at 18:39
The duck simulator is definitely not meant to be patronizing in any way, but rather to help those new to Design Patterns. And indeed, as we've heard from many readers, the simpler examples have been incredibly helpful for those new to design patterns and non-expert programmers. And of course, they get a bit more complex towards the end of the book! If you're an advanced programmer, you're more likely to get more out of GoF. Hope that helps! – Elisabeth Oct 11 '11 at 15:25
Hi there, I didn't mean to offend, clearly from the Amazon reviews, many people find it a useful book, but it just wasn't for me! I like things explained in as few words as possible. – Paul T Davies Oct 11 '11 at 16:52

It is advised, because if you don't know them chances are you'll end up reinventing them.

share|improve this answer
so few words and yet cover the subject so good! – Gus Oct 5 '11 at 17:52

You never need design patterns to do X, but you will often have an easier time

I bet, you already use some patterns, you just don't realize, because you don't know that there's a name for e.g. "a method that works like a constructor for another object, and can be overridden".

Thats the Point of the patterns: to recognize similar Problems/Circumstances, so that you can systematically discuss them, implement them and see, when there are better alternatives.

Design patterns are not an end in itself, they are a nomenclature to simplify a complex world.

share|improve this answer

You don't have to learn design patterns to do Android development, but in my opinion, it's certainly a good idea, as it helps you understand the problem approach being used in a given set of classes, without necessarily having to read and absorb every line of code. Being able to look briefly at a few files and immediately say to yourself something like "Ah, they're using Composite here" is a useful skill to have.

Assuming you are developing standard Android applications, you'll most likely be using the Java programming language. Much of the standard library code for Java uses design patterns in one way or another, and in fact, this has been one of the criticisms levelled at Java, that its standard library is over engineered.

The Iterator pattern is one that immediately jumps to mind, and one you're quite likely to use. A good set of examples on other patterns in the JDK can be found elsewhere.

share|improve this answer

Why not? This is sort of like asking "Do I have to write good code on the android platform"... well no, of course not, but I am sure you want to write the best programs you can, so use the established structures to do it. Design patterns are not some esoteric black magic. Pick up GoF's Design Patterns, read it, and "Presto!" you know design patterns (the ones people talk about most, anyway). Besides impressing elitist know-nothings, learning design patterns will give you no benefit on any particular project if the project does not contain problems that correspond to a particular pattern, however, most projects share at least some of the common problems that design patterns aim to address.

share|improve this answer

No. But it helps understand the Android API which implements most of them.

share|improve this answer

A "design pattern" is just exactly what it sounds like; it is a pattern, or a recurrence of themes or ideas, relating to software design. While it is possible for you to read a book about them, chances are they won't really be all that useful to you without having an understanding of what good software design is and why.

So, is it required for you to learn design patterns? No, not really. It's much more important for you to learn good design, which you can and should learn while you are learning android development, or any other sort of programming. While you are learning good design, you will also learn the good design patterns, often by recognizing good design in code that others have written.

In other words, don't go at this thinking "I've got to learn design patterns" think of it like "I have to learn good software design skills".

share|improve this answer

Let's not overestimate the amount of patterns Android easily allows to be used. There's a bunch that weren't taken in in the API design itself, and as such will seep through as bad smells in a big part of your code (as I assume most code won't be business related but rather UI-related). Sorry for being a bit pessimistic here.

share|improve this answer

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