Either this is an obvious troll or you miss the point of software engineering.
The point of design patterns isn't "over engineering" or class reuse. It's about communication and maintenance. Here's a scenario. I'm quitting tomorrow and you have to take over this solution I wrote.
Let's say it's some sort of system that allows users to write some custom rules for some business case. Sound complex?
Here's what I tell you:
I wrote the UI using MVC which pipes into the Builder pattern to create a rules file. The rules file goes through the parser pattern and if that passes it puts it into the database as a valid rule.
There I've just described 2000 hours of development work in 2 sentences.
Try doing that without using known design patterns.
Let's put this into perspective. Even the author of the software is calling for a reality check that's missing from the summary.
From his site:
Update: Please do not think that this implementation is 30x faster than the Flash Player developed by Adobe. One(!) microbenchmark is never a number you should count on. I would like to make clear that I never said this.
I was going to mod you up, but instead I figured I would post a somewhat supporting reply.
I've been doing Java development for quite some time. Although I think being assailed by a retard with a baseball bat is worse than working with Java front end technologies, the discussion of which technology to use always brings groans from the development team.
What do you use? Web front ends with JSF or JSP? Do you use something like IceFaces or Trinidad which are implementations of JSF? Do you use Swing/SWT and shoot for some sort of RCP programming model with Java Web Start? Do you pick Adobe's Flex on the front end, Java on the server and go with the baggage of flash?
The one thing I wish Sun would have done with Java is put together a more cohesive and easier to develop front end. I can only assume MS runs circles around Java in this space.
This major weakness of the Java stack means I get trolled all the time by those MS guys! Curse you Sun and now Oracle!!
Combining your comment with Schmidt's I wonder if we'll end up with a society where everyone has a common name. If everyone is named John Smith, it would be hard to track you back to the correct facebook page or whatever.
Those are definitely good points, but just to add.
1) I agree with the generics comment and wonder what value they really have outside of having typed collections. I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it. At least in the work that I do.
2) While it's true that there are a lot of options, most of the key ones are pretty much standard now a days. Things like Log4J, Spring, and Hibernate are staples.
In fact if your project uses Spring you can pretty much swap out key technologies with little effort if they end up being deficient or get obsoleted in the future. If the project you had to maintain with the Struts cowboy didn't use it, well I guess you're pretty much fucked there.
I'm sure people have written competing MS technologies for similar reasons as that Struts hating guy. In our industry you can't pan a whole technology stack because some retards fuck up an implementation.
I don't really know much about.NET, but I can comment on the Java side.
While Java the platform has been slow to adopt features, it does have quite a thriving open source community that gives it a lot of additional functionality (for free as in beer I might add).
In fact some projects have sprouted up because of failed Java initiatives. Things like Hibernate came about because Java messed up Entity Beans so badly there wasn't a good way to do database access for example.
Java still has a lot of deficiencies on the front end, however. Things like JSP/JSF Struts/SpringMVC made it better than it was 10 years ago, but they still are a pain in the ass to use. I'm starting to get involved in Adobe's Flex development talking to a Java backend so I'm excited to see if that can mitigate some of Java's front end problems.
Thanks for the response. I gives me a lot to think about. I really want to leave AT&T probably for Verizon so I think I'll just put up with my crappy phone for now. Hopefully either the iPhone will come to Verizon or the Android platform will improve soon.
I wish these things came with a lease with an option to buy.
I think your post is interesting, and I'm sort of in a similar situation.
I bought an iPhone on launch day and used it until pretty recently. I would still be using it today, but the pins on the iPhone connector got corroded somehow and it was nearly impossible to charge or sync. I took it to the Apple store and they said my options were paying like 200 bucks to fix it or renewing my contract with AT&T and paying 99 bucks for an iPhone 3G. In retrospect I should have taken one of these options.
I decided instead to go with a crappy Pantech teenage girl phone because I didn't want to pay the repair costs or data plan anymore. Aside from texting, which it's good at, this Pantech is just terrible and I'm regretting not getting another smart phone.
I like some of the Android stuff on paper and was hoping to get one this fall, but your concerns are giving me pause.
It seems like most of your concerns revolve around sub-par software and ditched it for the more polished iPhone 4. Was that your only problems with it? Don't you think over time as Android matures those sorts of issues will go away?
I too am a happy Carrion Fields player, and several MUDs before it.
I've played a few graphical D&D like games Oblivion, Diablo, etc but they were never able to hold my attention the way muds do. I can only handle so much click, click, click, F5, click, click.
Since it's just text the development "costs" are low. It creates a dynamic environment that's changing all the time. New skills, spells, classes and areas come in frequently.
Muds are always evolving and they don't cost you 29.95 for 2 new areas and an additional class.
And when it comes to PK it's not even close. Muds are the chess to WOW's checkers.
Each class has around 100 skills or spells they can do and it takes a lot of experience to play at an expert level. In CF it's not uncommon for a skilled player to beat back many opponents in a raid or pk situation.
It's not for everyone, but if you're looking for the ultimate in role playing and PKing, do yourself a favor and give it a try for a few hours.
I agree with you that applications like Photoshop and other typical desktop applications don't transition well out to the internet. With that said, however, I don't agree that they can't be web applications. There's an assumption in your argument that the web applications need to be hosted externally to your LAN. What's to stop someone from developing an application like Photoshop and running it on a web-sever that resides on your Intranet?
That eliminates the hosting and bandwidth concerns, and unless the application needs real-time response, I don't think there are any other practical limitations.
Think of the benefits. You no longer need to have these big time applications developed for Windows/Mac only. It could be truly cross platform. Develop it as a web application and sell it as a WAR or an EAR for Java people and however it works for MS systems.
There might need to be a few more innovations in web development to make this happen, but we've recently seen AJAX libraries and tools to help make the browser work more like a desktop app. Maybe we're close here. Necessity is the mother of invention or so they say.
Are you still passing out invites? If so can you shoot me one at: mleitz1 at at at gmail dot com?
I'm afraid to try this out. It might just work.
Either this is an obvious troll or you miss the point of software engineering. The point of design patterns isn't "over engineering" or class reuse. It's about communication and maintenance. Here's a scenario. I'm quitting tomorrow and you have to take over this solution I wrote.
Let's say it's some sort of system that allows users to write some custom rules for some business case. Sound complex?
Here's what I tell you:
I wrote the UI using MVC which pipes into the Builder pattern to create a rules file. The rules file goes through the parser pattern and if that passes it puts it into the database as a valid rule.
There I've just described 2000 hours of development work in 2 sentences.
Try doing that without using known design patterns.
...had to bludgeon Netscape to death to win
Wrong! Joel Spolsky had a different take: http://www.joelonsoftware.com/articles/fog0000000069.html
They should just integrate better with existing gadgets so I don't have to wear fucking cargo pants and have a wallet that is 3 feet big.
Right and let's be honest: "No one's gotten a hand job in cargo shorts since 'nam." -Superbad
Oh man.
I don't know if any of these are valid counter arguments, but #9 had to be written by someone trolling this wiki.
9. The action-at-a-distance by Jesus, described in John 4:46-54.
How can you write that with a straight face? I mean come on.
There's actually a pinball museum in Las Vegas. It's worth a trip if you're ever in Sin City.
http://www.pinballmuseum.org/
Sounds like they immortalized your experiences in this Kool-Aid Man video game. Coincidentally also for the 2600. http://www.youtube.com/watch?v=nasBarHXf1U
There aren't enough mod points in the universe to mod down all the trolls that are going to be posting on this topic.
From his site:
Update: Please do not think that this implementation is 30x faster than the Flash Player developed by Adobe. One(!) microbenchmark is never a number you should count on. I would like to make clear that I never said this.
I was going to mod you up, but instead I figured I would post a somewhat supporting reply.
I've been doing Java development for quite some time. Although I think being assailed by a retard with a baseball bat is worse than working with Java front end technologies, the discussion of which technology to use always brings groans from the development team.
What do you use? Web front ends with JSF or JSP? Do you use something like IceFaces or Trinidad which are implementations of JSF? Do you use Swing/SWT and shoot for some sort of RCP programming model with Java Web Start? Do you pick Adobe's Flex on the front end, Java on the server and go with the baggage of flash?
The one thing I wish Sun would have done with Java is put together a more cohesive and easier to develop front end. I can only assume MS runs circles around Java in this space.
This major weakness of the Java stack means I get trolled all the time by those MS guys! Curse you Sun and now Oracle!!
Combining your comment with Schmidt's I wonder if we'll end up with a society where everyone has a common name. If everyone is named John Smith, it would be hard to track you back to the correct facebook page or whatever.
Choice? Oh man. Steve Jobs isn't going to like this.
Those are definitely good points, but just to add.
1) I agree with the generics comment and wonder what value they really have outside of having typed collections. I struggle to find a decent use of them and often see them used where the implementation limits future maintenance. I know in C++ templateing was a huge? feature, which generics seem similar to. I don't do any of C++ work so maybe I'm just missing the point but I struggle to see much value in it. At least in the work that I do.
2) While it's true that there are a lot of options, most of the key ones are pretty much standard now a days. Things like Log4J, Spring, and Hibernate are staples.
In fact if your project uses Spring you can pretty much swap out key technologies with little effort if they end up being deficient or get obsoleted in the future. If the project you had to maintain with the Struts cowboy didn't use it, well I guess you're pretty much fucked there.
I'm sure people have written competing MS technologies for similar reasons as that Struts hating guy. In our industry you can't pan a whole technology stack because some retards fuck up an implementation.
I don't really know much about .NET, but I can comment on the Java side.
While Java the platform has been slow to adopt features, it does have quite a thriving open source community that gives it a lot of additional functionality (for free as in beer I might add).
In fact some projects have sprouted up because of failed Java initiatives. Things like Hibernate came about because Java messed up Entity Beans so badly there wasn't a good way to do database access for example.
Java still has a lot of deficiencies on the front end, however. Things like JSP/JSF Struts/SpringMVC made it better than it was 10 years ago, but they still are a pain in the ass to use. I'm starting to get involved in Adobe's Flex development talking to a Java backend so I'm excited to see if that can mitigate some of Java's front end problems.
Thanks for the response. I gives me a lot to think about. I really want to leave AT&T probably for Verizon so I think I'll just put up with my crappy phone for now. Hopefully either the iPhone will come to Verizon or the Android platform will improve soon.
I wish these things came with a lease with an option to buy.
I think your post is interesting, and I'm sort of in a similar situation.
I bought an iPhone on launch day and used it until pretty recently. I would still be using it today, but the pins on the iPhone connector got corroded somehow and it was nearly impossible to charge or sync. I took it to the Apple store and they said my options were paying like 200 bucks to fix it or renewing my contract with AT&T and paying 99 bucks for an iPhone 3G. In retrospect I should have taken one of these options.
I decided instead to go with a crappy Pantech teenage girl phone because I didn't want to pay the repair costs or data plan anymore. Aside from texting, which it's good at, this Pantech is just terrible and I'm regretting not getting another smart phone.
I like some of the Android stuff on paper and was hoping to get one this fall, but your concerns are giving me pause.
It seems like most of your concerns revolve around sub-par software and ditched it for the more polished iPhone 4. Was that your only problems with it? Don't you think over time as Android matures those sorts of issues will go away?
I too am a happy Carrion Fields player, and several MUDs before it.
I've played a few graphical D&D like games Oblivion, Diablo, etc but they were never able to hold my attention the way muds do. I can only handle so much click, click, click, F5, click, click.
Since it's just text the development "costs" are low. It creates a dynamic environment that's changing all the time. New skills, spells, classes and areas come in frequently.
Muds are always evolving and they don't cost you 29.95 for 2 new areas and an additional class.
And when it comes to PK it's not even close. Muds are the chess to WOW's checkers.
Each class has around 100 skills or spells they can do and it takes a lot of experience to play at an expert level. In CF it's not uncommon for a skilled player to beat back many opponents in a raid or pk situation.
It's not for everyone, but if you're looking for the ultimate in role playing and PKing, do yourself a favor and give it a try for a few hours.
OW! My karma!
SO GOOD!
Wrong! There is another dimension but it's the exact opposite of this dimension, and there we all have goatees.
Ok. You first.
Finally I can figure out why Rational's products suck so badly.
I agree with you that applications like Photoshop and other typical desktop applications don't transition well out to the internet. With that said, however, I don't agree that they can't be web applications. There's an assumption in your argument that the web applications need to be hosted externally to your LAN. What's to stop someone from developing an application like Photoshop and running it on a web-sever that resides on your Intranet? That eliminates the hosting and bandwidth concerns, and unless the application needs real-time response, I don't think there are any other practical limitations. Think of the benefits. You no longer need to have these big time applications developed for Windows/Mac only. It could be truly cross platform. Develop it as a web application and sell it as a WAR or an EAR for Java people and however it works for MS systems. There might need to be a few more innovations in web development to make this happen, but we've recently seen AJAX libraries and tools to help make the browser work more like a desktop app. Maybe we're close here. Necessity is the mother of invention or so they say.
There's a pretty good library I've used recently called DWR.
If you're looking for a Java library to do some of the heavy lifting, check it out.