yagni

Tech Books you have but never read

Let's be honest. Many of us have books that were bought thinking "I might need this some day". That day has never come. Or maybe you spent $50+ on the book but only used it a few times. Or you bought it thinking it was the current technological trend. Post your list of books that you have but have never read, let alone used for a proj...

Language Wizards considered harmful?

Wizards can kick-start features. They can also obfuscate your code, and are anti-YAGNI. On balance, do you think Wizards are more useful or more harmful? ...

YAGNI - The Agile practice that must not be named?

As I've increasingly absorbed Agile thinking into the way I work, yagni ("you aren't going to need it") seems to become more and more important. It seems to me to be one of the most effective rules for filtering out misguided priorities and deciding what not to work on next. Yet yagni seems to be a concept that is barely whispered about...

When to violate YAGNI?

The YAGNI "principle" states that you shouldn't focus on providing functionality before you needed as "you ain't gonna need it" anyway. I usually tend to use common sense above any rule, no matter what but there are some times when I feel it is useful to over design or future proof something if you have good reasons, even if it's possib...

Decoupling vs YAGNI

Do they contradict? Decoupling is something great and quite hard to achieve. However in most of the applications we don't really need it, so I can design highly coupled applications and it almost will not change anything other than obvious side effects such as "you can not separate components", "unit testing is pain in the arse" etc. W...

Is there any hard data on the value of Inversion of control or dependancy injection?

I've read a lot about IoC and DI, but I'm not really convinced that you gain a lot by using them in most situations. If you are writing code that needs plugable components, then yes, I see the value. But if you are not, then I question whether changing a dependancy to a class to a dependancy of an interface is really gaining you anythi...

Should you create an interface when there (currently) is only going to be one class that implements it?

Should you always create an interface if there's a possibility that there might be something else that could use it, or wait until there's an actual need for it then refactor to use an interface? Programming to an interface generally seems like sound advice, but then there's YAGNI... I guess maybe it depends on the situation. Right no...

Does YAGNI apply to database design?

In code, it's generally pretty easy to add new classes to provide additional functionality and such. I have a fairly good understanding of refactoring code and what's involved so YAGNI generally makes sense to me. What I'm not as familiar with is working with and updating a relational database once it's deployed. I'm developing a li...

Does YAGNI also apply when writing tests?

When I write code I only write the functions I need as I need them. Does this approach also apply to writing tests? Should I write a test in advance for every use-case I can think of just to play it safe or should I only write tests for a use-case as I come upon it? ...

Reasons not to overdesign a solution to a current problem

G'day, While having a think about this question here about overdesigning for possible future changes it got me thinking. What reasons against can you provide to people who insist on blowing out designs because "they might want to use it somewhere else at some stage in the future"? Similarly, what do you do when people take the require...

YAGNI and junior developers

When writing code for a new system I don't want to introduce unnecessary complexity in the design that I might never have any need for. So I'm following YAGNI here, and rather refactoring as I see the need for more flexibility or as responsibilities becomes more clear. This allows me to move faster. But there is a problem here with jun...

Are KISS and YAGNI at odds with the trends towards increasingly more sophisticated patterns and practices like SOA, DDD, IoC, MVC, POCO, MVVM?

It seems to me that Agile methodologies encourage us to keep things simple, and lean, and not add complexity and sophistication until its needed. But the pace and volume of technology change encourages the use of increasingly abstract, complex and sophisticated tools and patterns to solve problems that we may not have yet (and may never...

Why is it so hard to enforce YAGNI?

I find myself breaking this pattern all the time. YAGNI - You Ain't Gonna Need It I am only a Junior Developer, but I find even Senior level developers doing the same thing. "Well, this system might use it, and this one, so let's design for it." Sometimes, I catch myself, but most times I run wild. Does anyone have any t...

Isn't there a point where encapsulation gets ridiculous?

For my software development programming class we were supposed to make a "Feed Manager" type program for RSS feeds. Here is how I handled the implementation of FeedItems. Nice and simple: struct FeedItem { string title; string description; string url; } I got marked down for that, the "correct" example answer is as follo...

How to avoid debugger-only variables?

I commonly place into variables values that are only used once after assignment. I do this to make debugging more convenient later, as I'm able to hover the value on the one line where it's later used. For example, this code doesn't let you hover the value of GetFoo(): return GetFoo(); But this code does: var foo = GetFoo(); return...

How far do you go with YAGNI?

I am developing a new revolutionary web application for the enterprise market. Sure, many before me thought that their web app would be revolutionary only to find out it isn't. (Or it is, but the business is not good anyway). So I'm am thinking, in order to find out if my idea has any traction with the lowest cost, to follow an extreme...

Is internationalizing later really more expensive?

Most people would agree that internationalizing an existing app is more expensive than developing an internationalized app from scratch. Is that really true? Or when you write an internationalized app from scratch the cost of doing I18N is just being amortized over multiple small assignments and nobody feels on his shoulders the whole w...

Is removing unused functionality a bad thing?

Is it possible for YAGNI to apply in the past tense? You created some functionality, it was used a little bit a while ago, but you aren't using it any more, and you don't want to maintain it, so you'd rather delete it. Is getting rid of unused or rarely-used functionality neccessarily a bad thing? Background: I use source control, so...

YAGNI and database creation scripts

Right now, I have code which creates the database (just a few CREATE queries on a SQLite database) in my main database access class. This seems unnecessary as I have no intention of ever using the code. I would just need it if something went wrong and I needed to recreate the database. Should I... Leave things as they are, even though ...

Did the authors of The Pragmatic Programmer forget about YAGNI?

The Pragmatic Programmer is highly recommended by many people. I've just finished reading it, and I can see why people recommend it, although I would point out that Code Complete covers almost all of the same material in much more depth. However, one thing that bugged me was the way the authors never mentioned any downsides of flexibili...