|
Because this is so... subjective!!!
Right now at work some people hates me because I routinely replace 20 lines of jQuery (allegedly simple) with 1 Knockout statement (allegedly complicated).
[Edit] to make it clear, I am NOT rewriting any existing code. I am talking of new code, which I prefer to write with a short and side effect free knockout statement instead of the (usual) pile of jQuery event and DOM creation method.
Hey it's true, they look at it dumbfounded and say "it's unmaintainable" so the average programmer can't fix it, indeed!
Now I am in a quandary, I convinced the client to implement a quite dynamic almost SPA couple of pages, with almost 1000 lines of TypeScript and 600 lines of HTML and knockout (with binding and template).
To make it "more simple" I will have to balloon the code size to I dunno how much and spend zillion of hours debugging jQuery event handling and DOM creation spaghetti!!!
(To the point, I don't think I can make it with just jQuery, I have to give up.... it's more dynamic than Facebook for god sake! maybe I exaggerate, but I like to think so! )
Well this is the maintenance team which complains about it, my project manager says to forget about it and continue using knockout when appropriate (which my team mates are slowly starting to love too)
Now I get sprouted some vague insult... awful code.. you are so selfish and pretentious... why can't you follow KISS and SOLID principle insult every now and then!
Very tiresome!
While there is no more deaf than those that don't want to listen and I know it's a lost cause.. I still wonder about it...
What I sell to the customer, is not just humanely doable in a reasonable time frame with just jQuery.
Yet using Knockout I make it... "excessively complex" for some... (other developer)
Mmmm... just wondering what to think of it...
[EDIT2] I guess I am looking for a nice repartee to use in the conversation. Which is both convincing and easy to understand! Something like they sprout me SOLID, KISS, I coolly reply this is way more KISS than your KISS version!
(which I can't say, because their mere ignorance is proof that my code is not KISS )
[Edit3] To give you an illustration, some people were confused when I started to use lambda expression... (or maybe generic?) (I think I started to get a bad rep for overengineering when I was using these strange things)
modified 1-Jun-14 9:55am.
|
|
|
|
|
Super Lloyd wrote: Right now at work some people hates me because I routinely replace 20 lines of jQuery (allegedly simple) with 1 Knockout statement (allegedly complicated). If it does exactly the same, then what are you actually gaining from it, next to the chance of introducing new bugs?
And no, it's not subjective. All the world might fit in a single line of C, but it's not always 'simpeler' if you put things on a single line.
One statement, one line.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Well I didn't expressed myself correctly.
I am not bothering changing any existing code!
I write new code. But instead of writing 20 lines of jQuery (as they used to do) I write 1 knockout statement, which, as far as I am concerned is:
1. shorter to write
2. less buggy (wait, I had an other event handler on that field!)
|
|
|
|
|
by one statement I mean one statment!
not multiple statement on the same line.
example 1: helloWordd();
1 statement, 1 line
example 2: hellowWorld(); howAreYou();
1 line but 2 statements
example 3: studliLongMethodNameForAMethodThatDoesNothingMuch();
1 statement too!
example 4: a(); b(); c(); d();
1 line, 4 statements!
modified 1-Jun-14 9:45am.
|
|
|
|
|
Example 1 will not work.
Error:
Syntax error: No such command of function helloWordd();
Try: helloWord() instead.
PS. I think I like KISS, but have never found anybody willing to kiss me.
|
|
|
|
|
Super Lloyd wrote: I hate "KISS". Because this is so... subjective!!!
I worked on a project like that once. We had to code to the least common denominator, a lady with a computer science degree that couldn't code.
It was dehumanizing and drained the fun out of life one day at a time, but at least others could understand and maintain the code.
Since I was a contractor I didn't have a dog in the fight and went along with it because otherwise I would be the one maintaining the code and the others would be playing on-line games or going to shopping sites while I worked.
The final result was an abomination but it marginally worked. We had more JavaScript than I thought possible, at least 15 files with thousands of lines of code in each. Maintenance was a nightmare and every change just added to the mess.
Eventually I left it all behind and it is now someone else's headache.
If your manager is happy with knockout code just do it and let him/her fight with the maintenance wankers.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
JimmyRopes wrote: It was dehumanizing and drained the fun out of life one day at a time, but at least others could understand and maintain the code.
....
Eventually I left it all behind and it is now someone else's headache.
I guess that the way these things go....
|
|
|
|
|
Ha, the app I work on has over 70 javascript files.
|
|
|
|
|
Andy Brummer wrote: Ha, the app I work on has over 70 javascript files.
Sorry for your luck.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Super Lloyd wrote: I guess I am looking for a nice repartee to use in the conversation.
How about:
"You're welcome to explain to the CEO why your approach is 10 times more costly than my approach, and which is probably technically unachievable in the technology you're suggesting. You might be able to keep your job if you offer to the CEO a pay cut in order to cover for my additional time."
Marc
|
|
|
|
|
Haha, nice one Marc!
|
|
|
|
|
Super Lloyd wrote: [Edit3] To give you an illustration, some people were confused when I started to use lambda expression... (or maybe generic?) (I think I started to get a bad rep for over engineering when I was using these strange things)
I feel for you. We had dork who learned to code 10 years before and that was the only technology he was comfortable with. He still wanted to use ODBC and hated stored procedures.
Needless to say we didn't get on very well.
Super Lloyd wrote: [EDIT2] I guess I am looking for a nice repartee to use in the conversation.
I once had a discussion (I use the term lightly) with this dork.
Him - Blah, blah, blah.
Me - I disagree because ...
Him - Blah. blah, blah.
Me - I disagree because ...
Him - Blah, blah, blah.
Me - I would agree with you about that but then we both would be wrong.
Him - Storming out of the room saying I strongly disagree.
Me and everyone in the room laughing.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
JimmyRopes wrote: once had a discussion (I use the term lightly) with this dork.
Him - Blah, blah, blah.
Me - I disagree because ...
Him - Blah. blah, blah.
Me - I disagree because ...
Him - Blah, blah, blah.
Me - I would agree with you about that but then we both would be wrong.
Him - Storming out of the room saying I strongly disagree.
Me and everyone in the room laughing.
Well, at least you got the move!
|
|
|
|
|
JimmyRopes wrote: Me - I would agree with you about that but then we both would be wrong. That's a keeper
"When you don't know what you're doing it's best to do it quickly" - Jase #DuckDynasty
|
|
|
|
|
It stopped this guy in his tracks which was quite an accomplishment considering the size of his ego.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Allow me to explain, THE PERCEPTION PROBLEM, which has to do with the SIZE OF A PROJECT.
Back around 2000 - 2001 I worked with 3 other programmers who were Visual Basic 4.x,5.x,6.x devs.
VB didn't support true OOP principles.
Well, along came ASP.NET and we had a project which required a navbar which would allow the user to nav back and forth through the numerous forms so a user could enter his/her data in a structured way. This nav bar would also have the ability to put the form into edit mode -- when the user first viewed it the page was in read-only mode.
Roots of the Perception Problem
At first the project was small and the user was only going to have to navigate about 4 pages.
So those VB Devs said, okay, we just generate some HTML which we copy/paste to the top of every page.
No big deal.
I said, "Terrible idea. it'll break and drive you crazy. ASP.Net lets you turn that navbar into a control so you can write the code one time.
"Uh, our way is easier," they said. "I mean, hey, we copy and then we paste."
I went ahead and implemented mhy navbar as a UserCtrl and placed it on the few pages I had to develop. It worked well and when there was a problem I went to the NavBar class files and fixed the code.
Scope Creep: The Monster
Meanwhile, the project grew -- major scope creep -- because the users wanted more forms.
Now those guys were copy/pasting to something like 30 pages.
The navigation had to know which page was next, so they had these hard-coded values which indicated the next page and if there was a next page and all that. So they are typing these values in to these pages.
The Deployment Explosion
They finally deployed the beta to the internal users and it blew up every time they clicked the navbar to set edit mode or go to the next page. It got lost in the form flow. Total failure and the internal users think our group is filled with idiots -- kind of was.
The Big Fix - One OOP Control
The Project Manager came back completely dejected. I said, "Hey, I can put my control on there and those pages will work in a couple of hours."
"Sure, right. Go ahead and try it," they said.
Ripped their confusing copy/paste navbar out, replaced it with the UserCtrl and tweaked a few things and it worked great.
Summary of Problem
They probably could've gotten away with copy/past development if it had only been three pages, but as soon as there were more pages it became expoenentially more difficult to fix their problems because they had to go to every aspx and edit the nav code on their page. Crazy. Insanity.
Mine took a bit more work up front, but then you could go to one place (UserCtrl) and enhance or fix it any time.
That is the power of true OOP. TRUE OOP with TRUE OOD.
The Difference Is In The Disciplines
It is interesting because those VB Devs learned to code by typing. Type, see if it works.
I believe in that method for learning, but for designing, it is a terrible way to create code. These guys were really just advanced scripters -- even though a couple of them had MS certs. Ugh!
I on the other hand, started out learning C++ and OOP. I always questioned what the point of OOP really is. Why OOP?
Why? Why would we do things that way? I can write 2 lines of code that do that thing. Why OOP? Why?
Large Projects
Because for larger projects things need to be organized and OOD/OOP are really a way of organizing things so that when they get so complex that you can still manage them.
|
|
|
|
|
newton.saber wrote: So those VB Devs said
Therein lies the problem.
Once you lose your pride the rest is easy.
The report of my death was an exaggeration - Mark Twain
Simply Elegant Designs JimmyRopes Designs
I'm on-line therefore I am.
JimmyRopes
|
|
|
|
|
Yep, you know them (vb devs)...
|
|
|
|
|
Great example; thanks for sharing!
|
|
|
|
|
I like kissing, but I digress.
(with the tongue!!! OH_WAIT not KSS)
I'd rather be phishing!
|
|
|
|
|
"KISS" is in the eye of the beholder.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
KISS is not a bad concept in itself, at all.
Problem is that morons often erect it to a dogma to hide their own limits.
Don't bother about them; anyway you have your boss' approval.
Courage!
There are two kinds of people in the world: those who separate humankind in two distinct categories, and those who don't.
"I have two hobbies: breasts." DSK
|
|
|
|
|
Having been on both sides of this coin, I can sympathise with both parties.
I've introduced things like knockout and been met with resentment, but I've also been in the situation where devs have introduced stuff for no better reason than 'its new and interesting' or 'I've always done it like that'.
My advice, FWIW, is to follow these steps:
0. Be prepared to admit that you are wrong and they are right. Of course, it's not the case, but be prepared.
1. Put aside some time for you to train them in the things you want to use - with the caveat that this may be wasted time if you all decide not to use it.
2. Out aside some time for them to train you in their alternate techniques - with the same caveat.
3. All sit together and prepare a list of pros and cons for each.
4. Decide which has the better score in the pros vs cons lists
5. All agree on the outcome, be happy, and get on with it.
It helps if you have a relatively non-technical person involved in the process, as they can ask the dumb questions and make an independent assessment.
|
|
|
|
|
Ho, I can see you are experienced with that kind of situation!
Well, I will certainly keep that in mind for next time!
At this time it is too late, there was no sensible discussion possible with the other party!
The most agreeing exchange I had was: ME: "let's refactor it together the way you like", them: "I have no time for that"...
|
|
|
|
|
What I find more troubling is that you have a maintenance team and a new development team. Also, you aren't coordinating. Knockout is a big change. What kind of training have you done to make sure the entire team is up to speed with it?
When I made the choice to use angular, I went over all current major frameworks at the time and we debated the pros and cons before we all thought angular was a good choice. Then we built some prototypes with it just to make sure.
|
|
|
|