| | #11 (permalink) | |||
| Resident Slayer | Re: Untangling the Knot Quote:
In my case, the first version of the system was written by a bunch of typical "web developers": they knew how to "script" but the concept of modular code, or coding for supportability were alien concepts (that's why we're in the middle of our 3rd rewrite!). If you take Symb's bullets above: Quote:
The specialist sees these options as mutually exclusive: the generalist sees them as pieces of the only practical solution. Obviously you can't carry all three to their logical--but in reality absurd--extremes. Its essential to see the fact that hacking, clean-up, and rewriting each are a piece of the solution, and the cleverness is not in the coding but in balancing the approaches to not just maximize the value of your time, but to make it *look* to the outside observers that you're doing them a huge favor in getting them out of the mess the previous gang of idiots got them into. Forget about what the "perfect" approach is, realize its all about communications, alignment of goals and getting people to understand what they're really getting for their money. This isn't about strictly following some ideal, its about making sausage, and its never pretty, but it sure can taste good with the right combination of "perfection" and "git'r'done," and remembering that those silly garnishes make the difference between fast food and haute cuisine. Art is never finished, only abandoned, ![]() Buffy ---------------- "If you do not agree with anything I say, I'll not only retract it, but deny under oath that I ever said it!" __________________________________________________ ______________-- Tom Lehrer "The shrinks diagnosed me a sociopath with paranoid delusions. But they’re just out to get me cause I threatened to kill them." Forum Administrator Hypography Science Forums - Science for Boys and Girls! Its not for nothing that we hang out here. | |||
| ||||
| | #12 (permalink) | |
| Explaining | Re: Untangling the Knot There are other options Symbology. Alternatively you could do a cost/benefit analysis of all of the available options (there's probably still many more) including the current status quo (just doing things in an ad hoc manner). Work out an estimate of all costs to date (pick a suitable time span, 1-5 years or however long) fixing things under the current process and then project these expenses into the future including a percentage increment each year. Do the same for each potential solution. Once you have justifiable figures on current/projected costs, which are hopefully much more than at least one of your (palatable) solutions, you will know which path to proceed along with management. If it can save money the option will be listened to. I hope this helps. ---------------- Corollary to the Peter Principle: Once you have promoted all of your competents to their highest level of incompetence you must change your management philosophy from top down to bottom up, because the staff at the bottom are the only competent ones in your entire organisation. Last edited by LaurieAG; 05-12-2008 at 10:28 PM. | |
| ||
| | #13 (permalink) | ||
| Questioning | Re: Untangling the Knot Quote:
So thank you. That makes good sense. And I think I would rather spend some personal hours working up the cost benefit analysis and keep the decisions above the table, than instead coding after hours and sneaking in the changes - and deal with the fall out of resentment from programmers having their code replaced, and "I didn't tell you do do that" from the managers, and any blame for reworked code that isn't perfect the first time. Of course then the hazard is they may still decide to cram it all in there, and that there isn't time to do the reworks (typically the opinion). But then I can let it go that I clearly warned them in writing. I'm looking forward to finding the utopian job where none of this is an issue, and everyone believes that doing things right the first time is the most important thing. ---------------- Point: Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. ~ Charles Mingus Counter Point: The simplest solutions are often the cleverest. They are also usually wrong. | ||
| |||
| | #14 (permalink) | ||
| Explaining | Re: Untangling the Knot Quote:
.---------------- Corollary to the Peter Principle: Once you have promoted all of your competents to their highest level of incompetence you must change your management philosophy from top down to bottom up, because the staff at the bottom are the only competent ones in your entire organisation. | ||
| |||
| | #15 (permalink) | |
| Doing the Impossible | Re: Untangling the Knot If everything were done right the first time there would be no place for innovation or improvement. I have no problem with redoing things so they are better. I know that I do the best I can with what I am given for each project, and I know that it will be replaced down the line by someone who may well think I was a fool. Bill ---------------- aka TheBigDog - Hypography Full Freaking Moderator Become a Hypography sponsor! The truth is incontravertible; malice may attack it, ignorance may deride it, but in the end there it is. - Winston Churchill TheBigDog's recommended reading: The Science of Success - Charles G. Koch A neutron goes into a bar and asks the bartender, "How much for a beer?" The bartender replies, "For you, no charge." | |
| ||
| | #16 (permalink) | |
| Slaying Bad Memes | Re: Untangling the Knot Some of the valuable lessons I have learned on the job: 1. Learn to write well, and express a coherent thought persuasively -- on paper. People are far more likely to follow you if they understand you. 2. Learn how to use a graphics application (like Canvas) to draw the kinds of diagrams that are worth at least 1,000 words. Suddenly, two hour meetings become 30-minute meetings. Any programmer who can draw intelligent diagrams automatically becomes a lead programmer. 3. Learn the Ladder of Abstraction!! If the only way you know to explain what you did is to give a blow-by-blow description of the sequence of all the individual actions you performed, then I'm talking to YOU. You need to rise above the "sea of details" and be able to describe software, requirements, problems and schedules at an appropriate level of understanding that fits your audience and the time available. So you can give the 1-sentence answer, the 1-page answer, the 15-minute summary, and the 1-hour detailed presentation (all to the same question) -- without bogging your listeners down in petty minutiae. 3a. If while giving a listener an explanation of your software, you see his/her eyes start to flicker shut, you are at too low a level of abstraction. Go up one rung. 3b. Learn to listen to yourself talk while you are speaking. 4. Prioritize functionality! Code the most important features FIRST. Bells and whistles have to wait. 5. Show the programmers a DESIGN before they get caught up in the coding. By definition, a "DESIGN" is on paper. If it's in your head, it is NOT a DESIGN -- it's just an idea. 6. Design your interfaces with utmost care. That way, a poor programmer might produce poor code that can be "isolated" from the rest. As long as the ONLY contact his code has with the rest of the system is, say, four well-defined integers, then unintended consequences can be kept to a minimum. 7. Design the User Interface FIRST!! Write a 10-page User's Guide before the first line of code has been generated. Whoever circulates the first clear User's Guide, controls the design of the system. 8. Design the database SECOND. 9. Learn to perform at least a basic Cost/Function/Risk trade study. 10. Be generous. Give away all your secrets! Give away all your experience! Hold nothing back. ---------------- Hypography Forums Moderator -- - - - - - What concerns me is not the way things are, but rather the way people think things are. Epictetus, Greek Philosopher The map is NOT the territory. Korzybski, Polish-American Philosopher Last edited by Pyrotex; 05-27-2008 at 02:30 PM. | |
| ||
| | #17 (permalink) | ||
| Slaying Bad Memes | Re: Untangling the Knot Quote:
In the sense of correct functionality, everything MUST be done right the first time, or the project fails. A compiler that produces execution aborts, or a database that becomes corrupted through normal use, is worthless. Projects that depend on such as these, are in grave peril. Everything should be "right" in that regard. But you may still have a minimum solution on your hands, one that is difficult and cranky to use. Consider the original IBM job control language (JCL). It drove ordinary programmers insane--they quit their jobs and took up water colors and knitting. And yet, it performed exactly as required--it controlled the execution of everyone's jobs exactly as they requested. It wasn't IBM/JCL's fault if people did not know what they were requesting. It is in the arena of being "RIGHT" (quality, performance, flexibility, efficiency) that TheBigDog is correct. We can't always afford to get it RIGHT the first time. We seldom know what RIGHT even is, the first time around. As with JCLs, it took 20 years of experience and innovation to understand what an operating system OUGHT to be doing, and how we should be conversing with it. A database MUST be "right" the first time or you're screwed. But there is plenty of time afterwards for you and your descendents to make it RIGHTER and RIGHTER and RIGHTER. ---------------- Hypography Forums Moderator -- - - - - - What concerns me is not the way things are, but rather the way people think things are. Epictetus, Greek Philosopher The map is NOT the territory. Korzybski, Polish-American Philosopher | ||
| |||
| | #18 (permalink) | ||
| Questioning | Re: Untangling the Knot Quote:
Thanks, Symbology ---------------- Point: Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. ~ Charles Mingus Counter Point: The simplest solutions are often the cleverest. They are also usually wrong. | ||
| |||
| | #19 (permalink) | |
| Questioning | Re: Untangling the Knot Here are a few thoughts from today's discussion between Pyro and myself: The reason why we can untangle knots in algebra is because we have the equal sign to move things across.
Paraphrasing an earlier point made by Pyro: The difference between a genius and a wizard is that once a genius explains what he did, everyone goes "oohhh, I get it!" After a Wizard explains what he did, everyone is still left in amazement. To my observations, illusionists are very good at hiding things "on the other side" just like we do on the other side of the equal sign in algebra. Just consider the equal sign the magic hat or the curtain. Similarly in computer science we use "tricks" like hashing to make a data entry disappear into the ether and reappear at will. By getting obstructions out of the way, we can focus on the task at hand until we have solved that particular tangle or issue. Following that metaphor relative to the start of this discussion, I have seen managers perform magic in getting obstacles out of the way so that the programmers can focus on the issue at hand. To my experience the main way I have been able to accomplish it myself has been with documentation (as Pyro gave in his excellent list), and coding frameworks. The frameworks can hold partial or incomplete aspects in place, until such time as they can be completed or replaced with solid components. I think it is these frameworks (often in the form of meta data about the original application) that may be the main tools which can be used to untangle the knots. Per Pyro's link to Layers of Abstraction: If a rule works at one layer, it is not normally going to work at another layer. I would say this is generally correct. But using functions we can usually abstract a collection of "cattle" and rewrite the function for "livestock" instead using proper meta data. The cattle owners tend to get upset when I tell them I have a module that can be used for both cattle, sheep, and goats. But if I am just counting heads of livestock and running them into a chute, it's the same process. I just point it at a herd and let 'er rip! (By the way I would equate that chute with the equal sign metaphor. Using it we can isolate one animal at a time to transform them as needed.) ---------------- Point: Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. ~ Charles Mingus Counter Point: The simplest solutions are often the cleverest. They are also usually wrong. Last edited by Symbology; 06-01-2008 at 04:32 PM. | |
| ||
| | #20 (permalink) | |
| Questioning | Re: Untangling the Knot An observation I was describing in my discussion with PyroTex today is one that comes from my experience. When I have to assimilate multiple functions which I observe are all serving a similar purpose (insert appropriate Borg reference here) :
This falls in line with what I have observed of releases of major software such as Windows 3.0, 3.1 (yechth!), and 3.11 OS/2 v1 (as if), v2 (God help us!), and v3 and basically all other major software and drivers. The copy you want is always the 3rd version. "Third time's a charm" ---------------- Point: Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. ~ Charles Mingus Counter Point: The simplest solutions are often the cleverest. They are also usually wrong. Last edited by Symbology; 06-01-2008 at 05:22 PM. | |
| ||
![]() |
| Bookmarks |
| Tags |
| management, metaphors, programming, teaching |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Untangling woolly mammoth DNA | Hill | News in Brief | 1 | 10-12-2007 08:05 PM |
| Knot Tying | Turtle | Community Polls | 18 | 02-17-2007 11:43 AM |
| Matters made of space "folded" by energy like a china knot | Xiaoyu | Astronomy and Cosmology | 0 | 02-27-2005 10:21 AM |
All times are GMT -8. The time now is 11:57 AM.











.






