- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
I've heard fourth hand about situations like this before, but yours is the first I've heard first hand. Get real version control. Even CVS (which is free, and considered good only when compared to what was standard 15 years ago) supports shared sandboxes better than this. I'm used to editing files, and when I go to check them in the version control stops me because someone else edited that file so I have to merge their changes first.
I boggles my mind that anyone could use such a terrible version control system in 2006. No wonder fogcreek decided to compete with Microsoft in this area.
Admin
"Tell me that again, AFTER you have tried to figure out which of your 100 different backup copies of one file is the version you want. Don't forget that there are other files in this same project.
I will agree that for small school projects a backup plan is easier than learning version control, but once you know how to use version control it is easier. In addition, once you start working on non-trivial projects a backup plan will fail, while version control will work. Therefore you should get in the habit of version control now, before the flaws in your simple backup plan hit you on the rear end."
Admin
I don't understand why you all think convincing college students to use source code management would be so hard. When I was a college student, for our personal work we had to resort to things like toting around Zip disks and emailing ourselves our work.
Group projects were even worse. Having to carry around a Zip disk and have everybody copy it and constantly sending emails back and forth with our work was, at best, inefficient. Having a version control server that we could have accessed from our anywhere (just like many of the other university systems), along with a graphical client installed on the university computers, would have been an obvious benefit.
And since most college students are eager to learn skills they can put on their resumes, most would probably love to be able to say they have used version control. Heck, I would love to have had version control for many of my non-technology courses as well.
Admin
I think you are missing the point here.
Typically, recursion is something that is taught in an entry level programming class. The object is not to explain when to use it or under what situations it should be used. The purpose is to teach the student what recursion is and how it works. Math functions like factorial are some of simpliest cases you can use to illustrate the principle. That is all they are designed to do.
In any case, for a first year CIS student, recursion is less complicated and/or more intuitive than calculating factorial in a loop. The goal is not efficiency or to teach the student how to use recursion in the real world.
Admin
Straw man! Who seriously would be packing around 100 versions?
Yes, exactly. For the small projects, backup suffices. So what do you do when the student resists your complication of the situation with SCM? Remember, SCM will take longer. The student may be buried in coursework as it is. The benefit is only potential. If he can not see that benefit, it is unlikely he will use, in this case, SCM. Your answer amounts to "Take it on faith." It is not that I disagree on the use of SCM; I do not think your argument is as convincing to a student as you may think it is.
One of my instructors was surprised to see me coding XML by hand when he had told us where to download a program for dealing with it. Unfortunately, there were no instructions for the program. Given the choice between trying to learn a undocumented tool at the same time as I was learning the material and simply handcoding and learning the material, I took the sensible course. The latter involved only one change and was, thus, easier to handle. When I pointed this out, then my instructor got it.
Sincerely,
Gene Wirchenko
Admin
I have seen instructors say how to easily deal with a situation and see the students go in the opposite direction. Sometimes, it is because of the supposed inefficiency. Typically, they do not blame themselves when they crash and burn.
Sincerely,
Gene Wirchenko
Admin
No, I am not. The diploma program that I was in very deliberately avoided covering recursion. Things were packed as it was.
Show me something where I can not see the benefit of using it, and expect me to use it? Dream on.
I know the value of recursion because of other experience, but to expect a beginning computing student to see it with no Real World examples is unrealistic.
Sincerely,
Gene Wirchenko
Admin
One person's "toy project" is another's "en-ter-preyice kom-pew-ting". I use my ridiculous shell/perl/ruby hacks to do my ridiculous little day-to-day tasks, and still think it's nice they're versioned, thanks for asking. In fact, I've often hesitated to touch some of my old scripts that weren't versioned.
Also, as anyone who has worked on a "toy project" knows, losing a handy toy could be painful. Few people want to rewrite something just because they accidentally brutally did "rm * .o". People don't code toy projects just because they want to code for the heck of it, they want to produce something cool, useful or beautiful.
Also, one person's "source code control" is another's "whole-buncha-HTML control". I use Subversion to version my home page. Definitely a toy project. Beats the living whatsit out of keeping around "old version of this little directory here" things. Infinitely useful even when it's definitely a "toy project."
Also, always, always remember that today's "toy project" may turn into tomorrow's "flagship product". Okay, there's always the annoying case that some Future Employee of a Soon-to-rise Software Company will amuse themselves with "svn co -r 1 ..." and post some of the juiciest results here =)
Admin
I am not an expert on source control but I thought they are good for situations where multiple people are working with the same source and you don't want to clobber what the other person is working on.
It sounds to me like you are using source control in situations where backups would suffice.
Admin
It still sounds to me like you are looking at this from your perspective (If I cannot see the benefit, I will not learn or use this technique) as opposed to a first year CIS student who is simply learning a technique without worrying about how they would apply it in real life. The student just wants to learn, pass the test and then get a job. I don't know about you but the only thing college prepared me for was giving me a foundation and teaching me my first programming language. Everything else was learned on the job (95%+ of the knowledge I need). It wasn't even mandatory in my CIS program to learn anything about databases. Now, I cannot fathom how I would do my job if I didn't know how to use a database. I learnt the basics in a few months on the job and that was that.
I suppose there is not that much point in debating this further. We can just agree to disagree on this.
Admin
Eh, did it also skip big-O notation, databases, parsing, and sliding windows?
I'd suggest asking for your money back.
Admin
I personally think it's a GREAT example to use when talking about recursion. Why?
* It's simple enough that you can trace through the recursion trivially, and simple enough that it makes sense by looking at the function,
* It's a good demonstration for what you want to think about before you choose to use recusion (so in its case you don't do it),
* It provides a good base for demonstrating tail recusion, since there's also a simple-to-use tail-recursive version, and
* You don't have a dependence on other knowledge, like trees, to get recursion.
The Fibba-whatever numbers (I don't claim to be good at spelling) also provide I think all three of these, though a bit more complicated.
Admin
Which is why you move on to OTHER examples of recursion after the simple things. I think a good sequence would teach recursion then trees. Since many tree algorithms are easily expressed recursively, the students will have the background to see what's going on.
Or, currently in the course I'm TAing (essentially; technically I'm a teaching intern) people are working on a program that solves mazes by recursive backtracking. (Sort of.) There's an extra credit problem which is to write a problem that solves Sodoku puzzles; something easily done with recursion. (Actually the exact assignment is to write the maze solver WITHOUT using recursion, but I think makes a good demonstration on where the recursive solution is oh-so-easier to at least come up with. Last assignment used recursion in trees though.)
Admin
a) i said line of C.
b) i didn't say i was proud of that.
c) i was being sarcastic.
point is that imho the things you learn as a CS student make it easy to pick up a new programming language as long as it is somewhat like the ones you've briefly reviewed in class. I don't know C, but i do know OO. C can't be that hard, can it ;)
Admin
C? OO??
;) Can be quite a difference there.
Admin
It is.
To sum it up, yes, it can be that hard, don't start thinking that because you know Java you can grasp C in a pair of days.
Ah, and if you want another domain the "OO" you know (and which one anyway? global OO theory, Java's OO, Smalltalk's OO?) will NOT help you understand (and may hinder your progress in), functional programming is the way to go (MLs, Haskell, Lisp, Scheme). If you think that OO is the silver bullet and that will make every language trivial, you're grossly mistaken.
Admin
http://en.wikipedia.org/wiki/Irony
Admin
Noooo!
Sarcasm is hard enough!
Admin
yes, and http://en.wikipedia.org/wiki/Emoticon
Admin
you've got to be kidding. aren't you?
they teach Haskell and Lisp here. I absolutely loved the course. I concluded that: yes it is truly the way to code (tm) but no, it will never be used outside of the campussus around the world.
if you think that FP "is the silver bullet and that will make every language trivial," then imho it is you who is grossly mistaken...
Admin
I hail from MIT and they forced us to learn CVS (VSS is the worst piece of junk ever) the first week of my Software Development Laboratory. If you didn't learn it, you failed. So there are universities out there teaching the right stuff. However, I still have yet to find people that really know about rep exposure, rep invariance, modularity, etc. And this is even more disturbing... when I go into a new client the first thing I ask for are the design diagrams (MDD, OODs, whatever, give me a friggin uses diagram if that's all you know) and each time I have been rebutted with laughter. At this point I remember that I am a consultant and thankfully have no tie to the company's long term lifespan :)
Admin
Scheme is excellent for Artificial Intelligence and is used in the real world as it is the only language that has the ability to "learn." Any high-level AI project will be using Scheme or some other LISP derivation.
Admin
Sorry forgot to put the original message I replied to...
I hail from MIT and they forced us to learn CVS (VSS is the worst piece of junk ever) the first week of my Software Development Laboratory. If you didn't learn it, you failed. So there are universities out there teaching the right stuff. However, I still have yet to find people that really know about rep exposure, rep invariance, modularity, etc. And this is even more disturbing... when I go into a new client the first thing I ask for are the design diagrams (MDD, OODs, whatever, give me a friggin uses diagram if that's all you know) and each time I have been rebutted with laughter. At this point I remember that I am a consultant and thankfully have no tie to the company's long term lifespan :)
Admin
Yeah, but do you have a backup system that keeps things in a neat little stack where you can pull stuff (ie, get the file in full, or make a diff) by revision number or date, with stored comments that describe why you decided to make a great big backup that day, and ability to look at the comment history for each single file? I sure wasn't getting those with backups, but once I started using Subversion, all that came free with it, and was simple to do.
Think of it as a backup system that knows some interesting tricks, and that can be even more useful if someone else wants to touch the thing.
Admin
that highly depends on what you might call "high-level AI" and what field of AI studies you are in. it is true that a lot of AI studies use some form of FP, but there are also many others that don't.
Admin
I never even hinted at this, I merely stated that OO is not the silver bullet and can't help you understand, say, the functional programming paradigm.
Now FP will probably never be used as widely as IP or OOP currently are indeed (mainly because it's too hard), but if you think it's never used "outside of the campussus", well, maybe you should step out of your cubicle from time to time.
Admin
That makes plenty of sense to me and is what I would do. Unfortunately, all too often, all I have seen presented is the factorial example. If the only example of recursion used is factorial, recursion looks as if it is a stupid idea.
Sincerely,
Gene Wirchenko
Admin
Backups don't support branching.
<font size="1">(Yes, I really do bother with branching even for 'toy projects'; sometimes I want to explore an idea without screwing up the toy.)</font>
Admin
I think I work for that company, now. It's terrible.
nu_ro_empmloymentApp.htm.. internship_application.html... masterLu_test/... mLuFengShooei/... masterLu_2005/test... it goes on.
To add to the excitement, we've got no test environment, and client files could exist in (at least) one of (at least) FOUR places... Oh, and 99% of our stuff is in ColdFusion. What a damn nightmare.
Admin
Hallelujah! I'm not the only one!
Of course, I'm an SCM lead accustomed to Rational ClearCase -- think of it as the expensive version of Subversion -- so that might explain why I use version control and branching even on toy projects. Sometimes, if I'm in a pinch, I'll emulate branching with backups. It's not pretty, but I'm so used to being able to branch files that it really feels constricting to not have that capability. I also write fanfiction, and have seriously considered putting those into version control. It's great to have that version history. The best part is that unlike backups, which only occur when you think you might mess something up or are making a substantial change, the version control system saves your bacon even when you didn't expect to need the backup.
Admin
This is what I love to see! Serious conversation/debate. I love WTFs that invoke the discussion of improvement rather than just comments.
Admin
I did something like this once, though it was my first programming project, ah to be 16 again....
Admin
Back in highschool, for backup I did the whole "zip the directory and put a number on it" thing. It worked pretty well back then. I didn't have the means for SourceNotSafe, or CVS back then. I was the only one working on my projects also, so that was never a problem. Today, it's common for more than one person to work on the same project. Version control is a necessity.
Strange though how this topic has shifted...
Admin
We have had such a programmer in our organisation, he called himself, with a lot of emphasis, a "professional". Even since using the word "professional" in our orgisation does not constitute a compliment and it's great for insiders communication.
Admin
Truth is that even on one-man project of a one-week toy project/test/prototype, an SCM is invaluable and will save your day more often than none.
I even found out that Andrew Hunt and David Thomas recommended just that in their "The Pragmatic Programmer: From Journeyman to Master" (which I recommend reading, several times. You'll like it and you'll gain from it)
One of the great strengths of SCMs comes from their very low overhead once you've built using them in your muscle memory, while the initial week or so requires that you remember using them, they soon enough become an automatism and you only get the benefits back.
Admin
Weirdly after c and data structures etc. I found software configuration management to be the most useful CS class that I took at University.
Of course I never took the 3rd year AI classes, so I may have missed something.
Admin
Daily shit to me working as a Software Engineer whos major task is cleaning up the mess others had produced. Examples:
Oh really? Here's another one:
Never heard of underscores? Of course there was no comment about the 'own...' anyway.
I think I'm not alone saying that people programming this way should be instantly fired.
Admin
Berkley Uni makes a lot of lectures available as podcasts. I have listened to psychology, operating systems, and other subjects. The quality of the lectures is appaling. I feel sorry for American students getting such alow-grade education.
Admin
This could have been solved with a Cygwin version of CVS.
Admin
My first programming job was at a games developer - In the interview I showed them the source code to my 3D engine and let them look at whatever they wanted, as well as showing off some compiled demos.
They liked that a lot.
In my second job, the interview consisted of
Boss "Do you know what an alpha channel is?"
Me: "Uh.. yeah"
Boss "Then youre overqualified. You're hired!"
Needless to say, the quality of the programmers at this place is about 1% of the ones at my last job :(
Admin
Somebody pass me a towel.
I just threw up all over my keyboard and lap.
Admin
I wish that shocked me, but I'm actually pleasantly surprised when i DONT see that... which 'ardly 'ever 'appens. I'd be happy to see an installation on any web server that didn't have an _old, _new, .bkp, .01052002, or whatever tacked onto something.
Admin
I have the same issue - an ex-coworker is very sloppy about this, and we STILL have a bunch of miss-named classes hanging out.
I've always wondered why IDEs don't have any sort of spell check (I've never seen it). Given that the naming standard is usually SomethingLikeThis, it shouldn't be hard to have the spell checker check "Something" "Like" and "This". Too many weird technical words to make it feasible?
Admin
Good Post
Admin
Nice Thread
Admin
Nice Thread http://msdotnetsupport.blogspot.com Microsoft .NET Team
Admin
Hello test.com
Admin
You said worse?
It could be like the last place I worked. Their motto must have been:
Why have dev, test and prod when you can have dev, test, prod, sandpit, pst (performance stress testing), saf (software assurance facility), qatf (quality assurance test facility). Wait, we need intregration testing? How about another environment....
Admin
In a developmestruction environment, you have to look for the opportunity. See, if you have an enterprise that's succeeding despite a developmestruction platform, what you have is a very, very stong business model with craptastic implementation.
Be the one to point out the bullsh-t, and build a solid performer instead, and you can make out like a bandit.
I inherited such a developmestruction environment years ago. I pointed out the problems (hint: start by pointing out its strengths, even if you have to reach for it. If you start by bitching, people assume you are taking sides and won't trust your feedback) and produced a much higher quality solution to the problem. My solution worked well, and continued to improve as my understanding (and coding ability) improved.
Now, some 4-5 years later, I've built a million-dollar company from the ashes of a failed developmestruction environment. Our growth rate is 40-70% annually, with strong reviews from our clients.
Yeah, developmestruction needs its own acronym or something, it's a real word with real meaning, especially around here at TDWTF. I propose DvMST.
But realize a few, very real properties of a developmestruction environment:
They are a sign of incompetent IT leadership. (so become the (competent) IT leader - the pay is often wonderful)
They are a sign of a strong business model. (it takes alot of money to fund a developmestruction environment due to the poor return on investment. So the bigger it is, the better the end result if you come up with something that doesn't suck)
Despite the craptastic implementation details, they represent an answer to real problems that the organization was trying to solve. Pay very, very close attention to these problems, and look for the strengths in how the DvMST solution actually worked from the user's perspective, and don't pay attention to the bad details of the implementation of the solution, at all. Make sure to implement the features of the DvMST product that the users praised.
Watch for DvMST. If you play it carefully, it's an incredible opportunity!
Admin
I feel the author's pain. I'm doing the same thing in a hybrid ASP/PHP on IIS custom site and CRM for a client.
Unfortunately due to the company's piecemeal attitude toward outsourcing and app design, I have no incentive to spend 40 hours fixing all the code (rewriting the entire site) to make sense, so I just go ahead and create productDetail_test_2.new.asp and chuckle/cry to myself.