| last updated:19 Aug 2002 12:07 UK time |
![]() |
| JOS Statistics - Recent Comments (Comments added for week ending Sun 17 Mar 2002) | View Other Weeks |
| What do you want from this forum? | Sun 17 Mar | Timothy Falconer |
| Personally, Id prefer it if we stick to topics stemming from Joels articles, such as writing functional specs, UI design, running a software company, interviewing, the software industry, great books, software marketing, project management fundamentals, etc. Do we really need another how-to resource for specific programming technologies? |
| Sun 17 Mar | Mike Gunderloy | How about 'all of the above'? Certainly the number of responses to the specific technology questions seems to suggest that lots of people do find those discussions useful. After all, many of us have given up on Usenet entirely as a gaping suckhole with a very poor rate of return with time invested. So 'take it to Usenet' isn't necessarily a useful response. I suspect a lot of us here could get behind a 'forget this topic' function that would enable pruning the list. But when you come right down to it, it's up to Joel to provide the functionality and set the tone here. While he's playing King Log, we're going to get random chatter, homework questions, and technology discussions, as well as Joel-related topics. |
| Sun 17 Mar | Timothy Falconer | Good points. I went looking for an indication from Joel what the scope of this forum should be, and there it was, staring me in the face: 'A public forum for open discussion of topics raised on Joel on Software.' IMO, most of the last seven or so topics don't qualify (visual basic homework problem, what to use for simple copy, how to disable flash, how to write ASP code, what do you think of .NET, etc) Are they useful to some people? Sure. Perhaps he should create another forum for 'Practical Programming Advice' so the people who came here for the Joel on Software topics don't have to sift through advice on specific technologies. |
| Sun 17 Mar | Jan Derk | Timothy Falconer wrote: 'What do you want from this forum?' Good point. I agree that the amount of off topic (read less interesting for the selfish me) posts is slowly growing. My fear is that this ever increasing popularity will make it worse and might even kill these groups, because many posters don't want to look at 'how can I program Hello World' posts. So what's the solution. Here's my proposal: Add multiple topic groups. Like: Discussions about Joel's articles, Software design, Homework questions, whatever, to keep areas on topic. Add moderation to move/edit/delete posts if they go off topic. Allow emails to be sent if somebody responds to your post. In short: Put up VBulletin to kick this forum in 2nd gear and keep everybody happy. The bad news is that Fogcreek already mentioned that they were not interested in that. |
| Sun 17 Mar | Christopher Wells | Nothing. Sometimes I get some anyway.
Whenever you post a new topic title, do you lose an old one (does an old one scroll off)?
Actually, here's something I want. Has anyone found a way that doesn't involve my installing non-standard s/w, to automatically or semi-automatically archive or keep available to me all messages here?
In a real newsgroup |
| Sun 17 Mar | Albert D. Kallal | Actually, I think my last post does qualify. In fact, I could argue that this post is more off topic then mine! This post has nothing to do with software development! Clearly mine does. In fact, I can site at least 4, or more articles that Joel has written on the very question I asked. For any of you who just think that I would come here with a question on how to copy a simple file...you are *V E R Y * mistaken. I also did NOT ask for example code, nor ask how to solve the problem in a particular language. My question is about code dependencies, and the future trends in software development. Please read my response in that thread. The real issue is about code dependencies. Anyone who develops software would see this as issue. Code to copy a file is like breathing air....it is a non issue. Very much of what this discussion board becomes is what we the readers make of it. Thus, I hope some people read a message and see a larger topic. This means taking some time and effort to think and contemplate what the issues of the day are. If you don’t make an effort, then my question seems dumb. If you do make an effort, then it centers on one of the largest issues we developers are facing today. Joel has a great style of writing. So, when he says we should all read the book PeopleWare, he also gives a great little story as to how, and where he found that book at Microsoft. Things I like: ** Problems that developers encounter, and how they were solved. ** Joel’s articles on how Excel ate Lotus 123’s lunch (and thus also how Word ate WordPerfect). It was not marketing, it was not bundling, it was not discounting. At the end of the day Excel and Word ate 123 and WordPerfect due to certain decisions. Learning those decisions was perhaps one the greatest secrets that Joel exposed about Microsoft. It is also a means that I can make my software company better. Anyone who offers articles how they beat the competition are gold (problem is, most don’t write those articles). ** Joel’s Articles on functional specs. Everyone talks about them, but Joel’s articles on this subject are brilliant because they are so dead simple as to be boring and UN-cool. You could read them, and say they lack complete substance. But then you folks would be missing the whole point of the matter. Joel also made a brilliant observation about the difference between “threaded” discussions boards, and non threaded. For this type of group, I actually agree with Joel’s decision on this. The reason for this is that the more “trivial” responses and noise is reduced. We are losing some good conversations as a result, but the benefit is reduced noise. I can only hope that people make a true effort to read posts here, and then make a intelligent response to them. That is the goal we all should shoot for. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com |
| Sun 17 Mar | Timothy Falconer | I agree about non-threaded posts. The best web discussion forum I've ever used is at The WELL. We all have our favorite, I suppose, but I'd love to have more sites that use this interface. You can try it out in their free conference |
| Sun 17 Mar | Timothy Falconer | More proof that 'no one reads anything' (I included HTML tags). here are the links again: The WELL: http://www.well.com free conference: http://engaged.well.com/engaged/engaged.cgi?c=inkwell.vue |
| Sun 17 Mar | James Ladd | Timothy, I can see your point, but I would not want to limit this forum to just items related to what Joel has to say. Someone may ask a progamming question, but the spin-off discussions on the management of that problem are often more interesting that the programming solution. I hope you can see my point. |
| Sun 17 Mar | Mark W | This forum has turned in to, for better or for worse 'Tapping the brains of people who read Joel on Software and like posting to message boards.' This board appeals to a certain demographic, and this is the stuff that some of the people in that demographic want to discuss. (Why I never got into marketing, I'll never know.)
As Joel gets more popular, the group is going to expand, and 'old timers' are going to be upset about the group losing focus, etc. etc. I think this happens everywhere. Every newsgroup I read (I started reading them circa 1993) has had a thread like this that seems to be running since it's inception. I think they occur in even years. 'You know the sixth guy in this group is beginning to post sleightly off topic stuff.' These are simple growing pains.
The way I see it, this thread is a sophisticated 'us v. them' where the 'old timers' are complaining about the 'newbies' (who else would be posting useless questions?).
|
| Simple Batch copy – What software would you use? | Sun 17 Mar | Albert D. Kallal |
| I have a old program that was written in clipper (before me), and then after a few years some changes where needed. The original programmer was long gone, but we had the source. I of course came along and modified the source code (this was 1993). I did not have clipper, but did use FoxPro and the runtime distribution kit. That means this simple little program in dbase could be changed, and then converted to a STAND ALONE exe file. The above approach is seems fine. Just this week I was called in by these folks to *modify* the software. My thinking is that this little and simple program should be upgraded to something that is not ms-dos based, and can be supported for another 8 years. Remember, I came along in 1993, but that little piece of code had already been in use for a few years. The software is a *SIMPLE* little program that copies a few files. These files have nothing to do with database. DBaseIII was no doubt used at the time since the ms-dos batch commands *could* have been used, but they are very poor at prompting the user for a date. Also, a nice language with a if/then/else structure of course made this whole thing a lot easier to write (dBaseIII also has a nice “file exist” function). The program simply looks for the existence of two files (with a known name). For each of these two files, the user is prompted for a date. When the user hits enter, the files are copied to a archive directory with a format of: 16Mar02.snt. Thus, the language also needs some ability to convert a date from 03/16/02 to the above format. Of course now the software will need to prompt for 4 files (and thus actually 4 dates). Usually the date will be the same, but sometimes the operator will change several of the dates. At any rate, the default date (today) is displayed, and the user can choose to modify it. My first choice is to use windows scripting. After all, I want to keep this as simple as possible. My 2nd choice is of course VB. Building a VB install package via the VB package and deployment wizard seems like over kill in this case. I could certainly just create a exe file in VB, and if I say away from any ActiveX controls, then I could simply email the client a nice and tiny exe file. (the resulting VB exe would be less than 50k). Of course not using the date picker in VB will also kind of suck when it comes to entering dates. Of course windows scripting is even worse from a user interface point of view, and cannot place up a small form that prompts the user for more than *one* date (I am assuming that the only reasonable means here is to use inputbox). In addition, I don’t get any kind of “mask” for the date input. What should I use to develop this little copy program? Perhaps this one case where I should continue to use the old program, and simply modify the dbase code? Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com |
| Sun 17 Mar | Sonny | Delphi, no question about it. Much better than VB, believe me. Been there, done that, ain't never goin' back! Having been a Delphi user for about 4 years now (ex-Clipper, ex-VB, exPowerBuilder) I don't understand why people automatically assume that WindowsApp = VB. Is Microsoft broadcasting some subliminal frequency that doesn't register in my frontal lobe? More importantly, why do so many people seem to so actively avoid Delphi? Clearly they have never tried it, despite the 'best tool for the job' mantra they so love to spout. Sorry for the rant, but like every other Delphi user I feel like some elite group with this amazing secret that nobody knows. Albert, do yourself a favor, expand your horizons. Sonny Also from Edmonton, Alberta, Canada (Oilers Rule!) |
| Sun 17 Mar | Ged Byrne | There are some good little Basic scripting languages that are great for this type of thing. They are written by enthusiasts and keep things simple. I'd recommend IBasic for something like this. http://www.pyxia.com. IBasic costs just $20, and will only take a couple of minutes to learn. It creates a small, standalone exe that requires no supporting files. |
| Sun 17 Mar | Anonymous Coward | ActiveTcl (http://tcl.activestate.com/) |
| Sun 17 Mar | Timothy Falconer | i'd go with either prolog or lisp ;) |
| Sun 17 Mar | Timothy Falconer | BTW, these kind of questions are why i avoid most newsgroups. I'm hoping we get fewer 'do my homework' requests and simple-task-how-to's here. That's what USENET is for. This forum has the chance of being a geniunely useful place to talk about the larger issues of software development & management. |
| Sun 17 Mar | Albert D. Kallal | Actually Timothy, I thought long and hard about posting this question here. I did in fact post the question for several reasons. The question from a programming side is *completely* trivial. In other words, the question is not one of a complex algorithm. In fact, I posted the question because the problem is in its self so very trivial. However, the question of what tools use in this case is *extremely* complex. This question is about the larger issue of code dependency. For example, it was suggested that I use Delphi. While I have done a good bit of Pascal, it does seem to be overkill to install, and learn a *large* and complex development system to copy 4 files? It was also not explained to me if using Delphi would reduce code dependency (however, that does seem to be the #1 battle cry of Delphi people). Don’t tell me to use Delphi. Tell me that Delphi does a better job of reducing code dependency, and then I’ll use it! However, it does bring up the very issue of code re-use. Joel has had a whole bunch of articles on this. This is about the issue code dependency. Perhaps I should have chosen a much more complex problem! In fact, my subject should have been: “How to reduce code dependency” The last ten years has seen a march towards the idea of re-usable components. The model has been ActiveX (com). I believe that this kind model is great from a inter-application point of view. In other words writing applications that can be used as a com object was a great leap forward. I do lots of this with Word, Outlook and many others. This is very much a dream come true for Bill Gates. He outlined the world where applications would them selves would be come re-useable components in Byte Magazine more than 10 years ago. I am a very strong believer in this concept, and benefit every day from it (his dream has been true for a some time now). Of course some IT people consider application automation a loaded gun on each persons desk. You just have to look at the Melissa virus to get a taste of the dark side of com automation (Melissa ONLY worked with OutLook, and not OutLook express...due to the fact that OutLook is a com object). Inter-application communication is the #1 thing that MS has over the Linux environment (sure there is Cobra..but until applications are written to this standard, this is of no use to anyone). While the application interoperability march has been a real bonus, the idea of shared components (not applications) has been a true disaster. If you look at windows XP, it has a huge amount stuff in there to prevent the system dll’s from being changed, or updated by software being installed. We were supposed to be able to use those dll’s are we not? In other words, the trend in the industry is now swinging back in favor of *reducing* dependencies. Too much code today is breaking. The industry is finally waking up to this. The .net initiative of course is the extension of the com object model *accross* the net. Again, if the model is used for inter-application communication then this I believe this is good. This model will NOT WORK if it is used to increase dependencies for applications that need simple components (yikes...now our code will break when something *across* the net is screwed up on the other end!). I suppose I would support the use of a map control that gets me any map in the world (and those maps come from a .net server). The trade off for dependency here does seem to be worth it. In fact, the ideal solution here would be for Microsoft to re-introduce a linker for its products (remember those things?). I need to create a stand alone utility with *NO* dependencies. In other words if write using standard tools, then I wind up using ActiveX controls. I believe in this case that I should be able to *link* the code from these objects into a stand alone executable. If the linker could pull the actual date picker code from the mscomcts.ocx then I would be fine. The code I need from mscomcts.ocx is no doubt much smaller then the 700k size that it currently is. I don’t care about 700k. However, if I use 3 or 4 controls for 3 or 4 controls from re-useable libraries, then I now have a very large hunk of code to distribute. In addition I introduce the possibility of now breaking other applications (since the dll’s/ocx that I now must distribute can overwrite existing components). A linker that pulls only the code I need into a nice small .exe is what I need. The equivalent in the .net would be allow the com object to actually be copied to my PC, and only a *connection* would be established. Anyway, in thinking about this problem. I going to continue to use the 14 year old dbase code. As Joel said: Don’t throw out the old code. He is right on, and in my case also! To anyone who though this was a simple programming question, well you missed my point... Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com |
| Sun 17 Mar | Christopher Wells | > “How to reduce code dependency” You can use the MS C/C++ compiler to make an executables with no dependencies (except dependencies on the O/S DLLs). C/C++ will still be readable for at least another 10 years ... another 50 years, given there are young C/C++ programmers today. > Of course not using the date picker in VB will also kind of suck when it comes to entering dates. I haven't tested it but perhaps http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/CommCtls/DateTime/DateTime.asp shows how to use the Date and Time Picker Controls in comctl32.dll (which you may assume are already on the system). > Perhaps this one case where I should continue to use the old program, and simply modify the dbase code? If you do, ensure that the client owns and keeps a copy of the dbase IDE (they'll need it later). |
| Sun 17 Mar | Timothy Falconer | This is why I love Unix/Linux. We're talking a five line shell script, I'm guessing, yes? Geez, even LDOS on the TRS-80 had a better job control (batch) language than MS-DOS. I'd give anything to go back and tell the appropriate Microsoft person (or Bill Paterson): 1. make DOS a decent command interpreter 2. use / instead of \ for directory seperators 3. use LF not CRLF for text files |
| Sun 17 Mar | Timothy Falconer | As for the larger issue of the appropriateness of the topic... I do see the importance of minimizing hard-wired widget dependencies, and the moving target that is Microsoft. Your initial post & title seemed to say primarily 'here is my situation, what would you do', not 'what do you use for simple tasks to minimize dependencies'. The latter point is in there, but it's kinda lost in the description of the problem. My apologies if my words caused offense. |
| Sun 17 Mar | Christopher Wells | If you want to know something about batch files, try http://gearbox.maem.umr.edu/~batch/batchtoc.htm |
| Sun 17 Mar | Albert D. Kallal | Actually, Windows scripting (vbscript) is just fine from a file copy point of view. The scripting language can even define and use applications as a com object. This means you can open applications, and use code from that application. This is great, and in fact for scheduling and automating certain kinds of software it is unbeatable. The ability to use applications as a com object in a batch file can boggle the mind. You can launch Excel, do some calculations, load, read sheets and print some stuff, save it, and then launch the next application in the batch file. As long as the application is written to the com standard, it can be automated via vbscript. In fact it makes vbscript *too* powerful and dangerous in many cases. Some admins are now starting to ban the use of vbscript. In other words, the lack of features in windows scripting is probably second to none. For roll out of software in a network, I can’t think of anything better. The real problem here is not really the script part, but the part that needs to ask the user for a date. It should default to today's date, and also have a nice input mask so the user does screw it up. It should also not allow a user to enter illegal dates. Also, notice the requirement that today’s date of 03/16/2002 be converted to a file name of 16Mar02.snt In other words, your scripting language better be able to convert 03 to the string text 'Mar', or you will have to start writing some code! Vbscript has good bunch of string manipulation stuff (much the same as vb). Thus Vbscipt does do a fine job in this area. However, it sucks on the user input side. The old dbase code does 1 thing well, and that is prompt the user for a date with a default, and checking! By the way, I would probably change the whole file copy mess, but then again, that software was built around 16 years ago. This system was upgraded to run on Linux only this year, along with Windows clients (before that, they were green screen terminals via rs232) The only pc all these years was a billing submissions pc with a modem. The software (Medical billing system) is still very old. We did dump the old text word processor and now have integrated ms-word into this system (I was called in since I happen to be fluent in the database system running on the Linux box, and also with windows development). Ms-word was again great here since when you hit alt-f11 in word, up comes the visual basic IDE. I suggest you all try hitting alt-f11 in ms-word if you have never done so. Imagine, every single copy of word has visual basic! This goes back to Bill Gates dream of each piece of software being a re-useable and *programmable* component. Well, folks we are living in this dream. Windows, and their applications are now com programmable objects. The problem is that some people would call this something other than a dream. Actually, as mentioned I do love com. It enables amazing automation, and inter-operability between my applications, and stuff like the ms office suite. Everything is simply a programmable and re-useable object. It is also why I believe that Linux is not ready for prime time (at least on the desktop). Without com, most of the above stuff can be done in Linux, but it is a real pain. Thus Linux does not even come close to windows when you try and integrate applications. Of course the Linux/com debate does not belong here in this thread! |
| What must the great programmer know? | Sat 16 Mar | Richard J. |
| Management only goes so far. But strong management skills need strong programmers to manage. What do you think that a passionate programmer should know? I think there are at least two things: computational theory and algorithms. I dont think knowing these two makes an incredible coder, but I think incredible coders know them. I had only been studying computation a couple of weeks while holding down a full-time job, but already I feel an order of magnitude better. After learning to speak the language of tuples and graphs, my APIs are clearer; less complicated. Or at the very least, it takes me less time to come up with them and know their soundness. Whereas knowing algorithms keeps me aware of how to implement these designs, keeping my performance-devouring tendencies in check. ;-) |
| Sat 16 Mar | Jared Levy | I disagree; understanding algorithms is often of secondary importance. The goal of any programming project is the development of solid bug-free code that satisfies the customer's requirements and is maintainable for future changes. Performance is just one portion of that goal, and is only relevant in the portion of the code that forms a bottleneck. Also, at least in the performance tuning that I've been involved with, sophisticated algorithms play a minor roll. Instead, I've focused on minimizing how often the code performs expensive operations, such as accessing a database or allocating memory. Still, I'm not sure how to answer the initial question. Outstanding programmers have a general ability and way of thinking that involves a lot more than a particular knowledge base. Of course, additional knowledge and experience make one a better programmer. |
| Sat 16 Mar | Ged Byrne | Richard, Computational theory sounds good. Where do I go? |
| Sat 16 Mar | James Wann | The only great programmer is one who is appreciated by her team and management for her contribution. Stories of miracle working by programmers are often signs of poor management, not great programming. |
| Sun 17 Mar | Tony | Most software development is easy. Great programmers only worry about the hard bits if they exist firstly, and secondly work it out generally from first principles. Knowing and algorithm is 'handy' but little more. Ever noticed that the terms 'Research' and 'Development' often go hand in hand. Good developers are good researchers to. |
| Sun 17 Mar | Richard J. | Ged, here is a link. It is a sweet little book, and if you're not disposed to liking it anyway, the comments have other suggestions. http://www.amazon.com/exec/obidos/ASIN/053494728X/qid=1016358761/sr=1-1/ref=sr_1_1/002-1164014-8317633 Tony, I think that good software dev *can* be easy. But I really want to talk about orders-of-magnitude improvements in programming ability. To be an amateur poet, it is like solving a nice maze, only to find out later you're in another one. Somewhere it ends, but few know where. I don't think knowledge of algorithms makes an incredible programmer, but incredible programmers know them. At least intuitively. Because part of the job is inevitably optimizing. I think I would also add knowing security to the list. If only because it implies a deeper understanding of data. |
| Sun 17 Mar | Ged Byrne | Thanks, This books looks interesting. I had heard of the computation theory when reading about Turing, but only as an historical reference. For some reason the book is much cheaper in the UK. Makes a nice change. I think I'll make it my next book once Code Complete is finished. http://www.amazon.co.uk/exec/obidos/ASIN/053494728X/qid=1016378921/sr=1-10/ref=sr_1_0_10/202-0344247-0149431 |
| Sun 17 Mar | Tony | Richard, you say, 'But I really want to talk about orders-of-magnitude improvements in programming ability' My point is that algorithm and computational theory knowledge do not map in any way to an order of magnitude improvement in programming ability. How does one define programming ability anyway, I may be able to write slick, tight functions but may be hopelessly inadaquate at developing a complete system, or vice versa. If you have a head full of computational theory and algorithm knowledge then all you have is an ability to memorise. Good developers, work out what needs to be done and research the best solution, that may or may not mean discovering an algorithm, maybe for the 2nd or 3rd time in a career. Everybody knows not to re-invent the wheel. |
| Sun 17 Mar | Timothy Falconer | What every great programmer knows: 1. how to read other's code (which is usually more like playing a massive game of concentration than reading a book) 2. how to instinctively refactor their own code to make it more generally useful, more readable, more concise 3. how to sit down and *STUDY* a computer book or manual, straight through, for its own sake 4. how to use a debugger and a profiler 5. when to give up for the day and go home |
| Visual Basic Code Issue | Fri 15 Mar | chad Steinacker |
| I’ve been trying to figure this problem out for over 2 weeks now! Can you please send me what you believe the Visual Basic code should look like for this problem? *Assume you have a bank account that compounds interest on a yearly basis? In other words if you deposit $100 for two years at 4% interest, at the end of the year you will have $104. At the end of two years you will have $104 plus 4% of that, or $108.16. Create the Visual Basic program that would read in deposit amount, a term in years, and an interest rate. The program should display the running balance on the form, or a separate form. The program should also: · Check for invalid data being entered. · Display a message to the user indicating the mistake, and · Give them the chance to re-enter the correct information The form must contain a minimum of three (3) command buttons: · Calculate. Takes all the value entered by the user, and displays the answer. · Clear / Start Over: Must clear the values entered by the user, and clear the displayed answer(s). It must also reset the focus on the main form ready for the user to begin entering data. · Exit Anyone thats willing to send me the code for this PLEASE DO... Ive just recently started on VB coding and this problem has me stumped! HELP is needed. Thank you- |
| Fri 15 Mar | James Wann | Is this somebody's homework? |
| Fri 15 Mar | B | 'a minimum of three (3) command buttons'... Will extra points be awarded for additional buttons? |
| Fri 15 Mar | Mike Gunderloy | Mr. Steinacker also has e-mailed this question to at least some of us posting here. I wonder if I should quote consulting rates for doing homework? |
| Fri 15 Mar | James Ladd | Hmmn, I replied to this, but it doesnt seem to have come up. |
| Fri 15 Mar | James Ladd | I tried again to post a reply, but only these short ones seem to come up. Oh well. Ill be helping Chad, its the community thing to do ! |
| Fri 15 Mar | anon | Do your own homwork |
| Sat 16 Mar | p.h.b. | Um, this is a site about software management. If any of us knew how to code, do you think we'd be managers? Frankly, if a young programmer came up to me with this problem, I'd tell him that using the Chomsky Normal Form almost makes the program write itself. Then I'd stare at him, daring him to say he didn't understand me. |
| Sat 16 Mar | Frederik Slijkerman | I'm sorry, but if you can't figure this out alone, you'd better start working in a grocery store... |
| Sat 16 Mar | Christopher Wells | Maybe he's practicing at being a software manager and at persuading other people to write code for him. Not a bad ambition... If it's schoolwork, sending code would not be a community thing to do IMO; instead (which would take longer), walk him through whatever difficulties he is having at doing it himself ('what trouble are you having with writing the code yourself, where are you stuck?'). |
| Sat 16 Mar | Timothy Falconer | Perhaps it's been too long since I started out, but this problem seems exceedingly simple.... almost a 'Hello World' for basic UI design. The point, I'm sure, is simply to see if the programmer can wire together a basic GUI app. Definitely a homework assignment. No doubt at all. |
| Sun 17 Mar | Tony | Maybe we could use this forum to sell stuff too. I can just see the topic... 'For Sale - Nissan 180B, good tyres $900'. |
| Sun 17 Mar | James Ladd | Wow, a 180B with good tyres. SOLD !! |
| Best books for programmers | Thu 14 Mar | Cindy Brown |
| Code Complete. Read it BEFORE you learn how to program. Programmers Book of Rules by Ledin and Ledin (my version is 1979) ISBN 0-534-97993-9 Again, readi t BEFORE you start writing code for people. |
| Thu 14 Mar | randy | A few more recommendations for developers and development managers: Under Pressure and On Time by Sullivan (MS Press)- Great for covering the basics of developing software for wide scale distribution. Slack by DeMarco- Speaks to the need for some 'slack' in organizations in order to effectively maintain and leverage human capital. Software Engineering Economics by Boehm- A bit of a classic, but still relevant for determining how to effectively make decisions using analytical methods when managing large scale software projects. |
| Thu 14 Mar | Andrew Simmons | Am I the only person in the universe who doesn't like 'Code Complete'? It's just too long and verbose for my taste - 50 pages on code layout is at least 49 pages too many. On the positive side, I really like 'The Practice of Programming' by Kernighan & Pike, and the updated version of 'Programming Pearls' by Jon Bentley. Both very well written, and neither requires a fork-lift truck to pick it up. |
| Thu 14 Mar | Alex Givant | 'Pragmatic Programmer' - I like this one. Read it! |
| Thu 14 Mar | Dan Sickles | Andrew, your not the only one. I dragged it (Code Complete) out and dusted it off yesterday after reading all the posts here and after skimming through, I remembered why I never read it all the way through and why it needed dusting. It's 3 to 4 times longer than it needs to be. I'll second your vote for 'The Practice of Programming'. I also really liked the assembler book I got from the Library after I saw one of the first Midi sequencers...it was the first one on the shelf. Writing a real time application to an early midi interface in assembler is a great intro to CS. Who knew there were 'easier' languages? |
| Thu 14 Mar | Alyosha` | I *liked* Code Complete. Well, no ... actually, I like reading code with consistent indentation and naming rules. Anything that convinces other engineers about the importance of human-readable code is a Good Thing in my book. The one book that I didn't enjoy was Godel, Escher, Bach by Hofstadter. I didn't 'get' it, and I fear, there's nothing there to get, short of a pedantic rambling on nothing in general and everything in particular. It reminded me of the madman in Pi who tried to find patterns in everything ... |
| Fri 15 Mar | Gabriel Lima | Good to know I am not the only one. Actually, I bought 'Code Complete' mostly because Joel has it in such high regard. But when I started to read it, I became a bit dissapointed. Yes, it is very informative, but it is a real bore to read. I love 'The Pragmatic Programmer' though. I have read it several times. It is a very good book filled with insights on how software development should be done, it gives some great ideas on how to think pragmatically in order to improve one's way of thinking and working, and best of all, it is fun to read. |
| Fri 15 Mar | Ged Byrne | I love code complete. I'm half way through and I've learnt so much. Reading it has been like somebody coming to me and saying - the full stop shows where the sentances end, the spaces separate the words. Suddenly I discover why I find it so difficult to read. |
| Fri 15 Mar | Timothy Falconer | ... on Code Complete being a dull read ... I usually find that the more I have to work to learn something, the more I get out of it. It's the difference between reading and studying. Think Code Complete is dull? Try reading a few technical specs and RFCs. Read a couple of those, then read Code Complete ... you'll think it's a real page-turner. Another thought... the people who really like Code Complete (like me) are probably the ones who have spent many years in programming purgatory, banging their heads on the desk repeatedly over the lack of craftsmanship around them. Reading Code Complete is *very* enjoyable to this group, since we're sitting there thinking 'EXACTLY!' over and over and over. |
| Fri 15 Mar | Timothy Falconer | My suggestion: Effective Java Programming Language Guide by Joshua Bloch. Java's rep for being slow comes from 4 things: 1. before JITs came along, it *was* slow 2. incorrect compile vs. VM preconceptions 3. Netscape 3/4's 'Loading Java' message when it loaded the VM (and their awful VM implementation) 4. bad programmers that make common mistakes The first three points are moot. The last point is answered very, very well in Bloch's book. Java isn't slow if you do it right. This book gives more useful advice towards this end than any I've seen in print. |
| Fri 15 Mar | skautsch | I'll pipe up for Code Complete. I wish every undergrad CS would master it. It helped me a lot at the time that I read it, and I wished I had done so earlier. Another good contribution by McConnell is 'Rapid Development'. It explores the boundaries to realistic scheduling, and should also be read by junior developers before they're asked to give estimates. I'll have to disagree with Joel's negative assessment of 'Slack' by DeMarco. Although I had some disagreements with DeMarco, I thought the book did add some material to 'PeopleWare'. However, I agree that 'PeopleWare' is more of a 'must read' than Slack. |
| Fri 15 Mar | mackinac | Ged gets the sarcasm award in this thread. :-) Someone who has been doing software development for a while is likely to feel that way. It is more appropriate for someone just starting programming. I'd say best to read it just after starting programming to have a little experience. Why do books have to be so big these days? #1 book: 'Peopleware' ObLink: http://www.canonicaltomes.org/ |
| Fri 15 Mar | Banana Fred | I am greatly indebted to CODE COMPELTE. I read it during my last year in college and it was a real eye-opener. I was studying computer science and did not know much about software engineering in the real world. Yes, CODE COMPLETE is a bit verbose, but it is an easy read and filled with informative footnotes and references to background research reports. I recommend this book again and again to college students or people on my QA team that want to learn more about 'real' programming. |
| Fri 15 Mar | Steve Wheeler | Personally, I'm also one of those who likes 'Code Complete.' I also like 'Writing Solid Code' by Steve Maguire and 'Math Toolkit for Real-Time Programming' by Jack Crenshaw. For good books that aren't directly related to programming, I'd recommend 'A Whack on the Side of the Head' by Roger von Oech. |
| Sat 16 Mar | Sammy | There's also 'Programming Pearls' by Jon Bentley. Basic sorting and data structures? Writing correct programs? Sounds dull, except that most programmers I know don't understand how to apply these concepts. Instead they take up a lot of time in meetings because they just know Methodologies and Java, but haven't read any dull books. Do I sound bitter? ;-) I think companies should stop spending time talking about Quality, when they can't program. |
| Sun 17 Mar | Baruch | I'm freshly out of university though I've been hacking computers and programs for quite some time now, only in the last few years did I start to really program for a living. (Doing side projects along studying). I've like 'The Pragmatic Programmer', and dislike 'Code Complete' I bought both of the since Joel recommended them heavily. I enjoyed the pragmatic programmer even though it was a bit too light at times, and disliked CC because it was so heavy, it is probably a good tome for those just starting who didn't yet get these insights, but for me it was mostly a 'duh!' all along, though I didn't finish it yet. 'The Cyberiad' is so much funnier :-) The Gang of Four book 'Design Patterns' was an eye opener for me, I've read it a year or two ago and it gave me some insight on the various patterns that I use/see when I program. I've yet to really design with patterns, but it's a good book if you need to design software, the insight gained by reading this book is useful even if you dont use it directly. |
| Sun 17 Mar | Mike Gunderloy | Based on those evaluations, I'd guess you would enjoy Fowler's REFACTORING. |
| Tools we love, tools we want | Sun 10 Mar | Mike Gunderloy |
| What obscure little software tools make your life as a developer easier? Conversely, which tools do you _wish_ someone would write for you to use? |
| Mon 11 Mar | Mark W | Here here! Regular Expression is an essential tool. I use Homesite a lot (okay, so I just do HTML) but it's also very useful for other kinds of programming, and the search & replace is excellent. |
| Mon 11 Mar | pb | I still haven't found a Windows text editor that I like as much as BBEdit Lite. They all seem to include too much garbage and don't feel refined. Any suggestions? |
| Mon 11 Mar | David Fischer | Re: a good windows text editor. I recently discovered Metapad (http://liquidninja.com/metapad/) and it immediately replaced C:\windows\notepad.exe. For a basic text editor, this is great! |
| Mon 11 Mar | Jutta Jordans | I found WndTabs by Oz Solomonovich (http://www.wndtabs.com) a very helpful addition to VC6, it organizes your open files on tabs so you can easily change between them without using the windows menu. It has some other helpful features as well, for example it makes your life with CVS a little more comfortable since it shows if a file is write protected (I think this feature comes only with the registered version, but registering costs only 10 $ if I remember rightly). I am still looking for a better debugger that will integrate with the Visual Studio and is a little more stabile when debugging multithreaded apps than the normal MS debugger. I get bluescreens a lot when debugging multithreading apps, and of course they are somehow due to my own mistakes, but finding these mistakes is what a debugger is for, isn't it? Have fun, |
| Mon 11 Mar | Roman Eremin | Automated or semi-automated refactoring tool for Object Pascal, C++ and C#. |
| Mon 11 Mar | Sanborn | Tools I use: * I like Python's interactive interpreter a lot. But I wish it were better. Like those Scheme interpreters. Maybe I should switch. * Apache's Ant is the best replacement for make, when using Java. * Notepad is becoming quite the nice but absurd tool, ever since I learned the whole .LOG trick (if you put .LOG as the first line, notepad will timestamp the bottom). But hmm, Metapad does this too. Tools I want: * Better groupware, and none of this madness that takes 256 MB on each client. Ideally, it mainly uses a web interface. I am looking at Scoop (which runs Kuro5hin), SourceForge/Savannah, and perhaps Userland's products. I don't think the efficiency of tech has been close to realized for large projects. * I wish there were simple memory-leak commandline tools for Java. I hate needing to reinstall a copy of JProbe just to find someone's brain-dead memory leak. I'm thinking of writing a free replacement. Ideally, software is like Google -- it just works, none of this license garbage. |
| Mon 11 Mar | Tom Seddon | visual assist: http://www.wholetomato.com/ I'm lost without it... highly recommended. Send these people your money! I second the WndTabs recommendation. That's great too. |
| Mon 11 Mar | Mike Gunderloy | Tools I use...there are so many it's hard to know where to start. For editing, I use CodeWright (version 7 just shipped), http://www.starbase.com/ (though one thing I would love would be an external editor that integrated better with VB6 - that won't matter to me much longer). For XML stuff in general, it would be tough to live without XML Spy, http://www.xmlspy.com . For storing random bits of information I've beeb pleased with Vault, http://www.personalmicrocosms.com/ . I'd love a diagnostic tool that could look at a Windows event log and say 'you dummy, you need to do x, y, and z' to fix your Active Directory installation. An FTP client with an Explorer interface that was more stable than FTP Voyager would be nice. Also a newsgroup client that runs under Windows and didn't suck rocks (yeah, I know, there are good ones I could run on the Linux box). |
| Mon 11 Mar | Chad Hulbert | GViM and grep, even on Windows. |
| Mon 11 Mar | Mark W | I use Action Outline and Treepad for knowlege storing. Action Outline will even export numbered outlines, and /*comment headers*/ (though I've found that it won't save or export when I entered a C++ program into it). Both are shareware, but there's an excellent compact version of Treepad that I keep on floppy with all my notes. ( http://gpsoft.hypermart.net/ao.html ) ( http://www.treepad.com ) I'll second that endorsement for XML Spy. I just wish it didn't associate itself with EVERYTHING right down to .txt files. I've been using Xnews for newsgroups and so far (these past couple of days) I'm happy with it. ( http://xnews.3dnews.net/ ) I tried Metapad too, and it takes a full second or two longer (on my 233mhz win95 machine) to load than notepad, so I never did that replacement thing. I also keep handy a boot disk with expand.exe (which will extract those file.ex_ files that microsoft loves), pkunzip.exe, and spinrite5.exe from Steve Gibson ( http://www.grc.com ). http://www.bootdisk.com has some good boot disks. http://www.collakesoftware.com/ has programs that will compact .exe files and embed .dll files into them. Extremely useful in the right circumstance. ExamDiffPro is a good (but I'd love to find a better one) source/diff program for windows. SpaceMonger is great for tracking down and freeing up space on your hard drive, or any networked drive. Calipers is an essential tool as a designer - works like real calipers, measuring the pixel widths and distances with ease. I don't have links for those last three, a Google search should turn them up. |
| Mon 11 Mar | Michael K | There are two tools that I really love: Clipmate http://www.thornsoft.com/ and Snippets http://www.softcircuits.com/snippets/. Clipmate remembers everything that goes into clipboard. I just wish the user interface was a little better and keystroke shortcuts were a bit more thought through. Snippets is a very simple program that allows you to store snippets of ASCII text in a File manager-like tree and search through them. Every time I come up with at new piece of reusable code I put it into Snippets. You don't need to install the application, it just needs to be zipped up and copied to give it to somebody. It would be great is somebody wrote a collaborative version of Snippets. I have registered copies of these programs already, but I would definitely pay for improved versions. |
| Mon 11 Mar | Mark W | We seem to like tree based editors. There's a good overview of them here: http://john.redmood.com/organizers.html This is what I use RoboType for. http://www.zdnet.com/downloads/stories/info/0,10615,77481,00.html The difference is when I want to paste that code, all I have to do is type the command I set: '?subroutine ' will be replaced by whatever I set RoboType to replace. (the '?' can be any number of symbols, I chose ? because it's easy to type and won't be accidentally triggered) |
| Mon 11 Mar | mackinac | I don't think of them as obscure, but I'd be lost without find and grep. awk can be handy. And I make plenty of use of emacs (and XEmacs) not just editing but ediff, shell, vm (mail), and regex in substitutions. Sometimes I wish for a better RPN calculator. |
| Mon 11 Mar | Michael K | This reminds me. I'd pay for a visual tool that would assist in creating and interpreting various flavors of regex expressions. Does anyone know if stuff like that exists? |
| Mon 11 Mar | Vincent Marquez | I didn't see anyone post this, so here goes: TextPad. This has to be one of the best text editors out there, I use it for everything. Its cheap too ($20 I believe), and has syntax hightlighting for about every langauge out there. I've converted all the developers in my Compay. |
| Mon 11 Mar | Mark W | The O'Reilly book on RegEx is great, though I wish it were more of a reference and less of a teaching manual. Agent Ransack has a regex builder built in, and it will let you test for a pattern. I remember the builder being so-so, but the test pretty good. Then again, I don't recall ever seeing another Regular Expression builder so... http://www.agentransack.com/ 100% positive reviews on download.com |
| Mon 11 Mar | James Wann | I'm fairly vendor neutral when it comes to the technical tools. However, when it comes to doing my todo lists and doing task discovery, I tend to use theBrain http://www.thebrain.com/ . The interface is a bit on the fancy side (it really is just an animated graph editor :-P ), but the way it lets you arbitrarily associate information visually is quite nice. |
| Tue 12 Mar | Gerry Shaw | re: RegEx testing tool. Mine only works under .NET but the idea is simple enough to implement you could write it your self for a different engine in a few minutes. Now if your willing to pay me... http://www.organicbit.com/regex/ |
| Tue 12 Mar | Gabriel Lima | One of my favorite tools that I always install once I get to work on a new machine is a small registry hack from Microsoft called 'Command Prompt Here', included in the Microsoft Power Toys for Windows 95 (although it also works on NT and Win2K). It adds allows you to open a DOS prompt in any folder from within Windows Explorer. Very useful indeed. |
| Tue 12 Mar | Philippe Back | http://web.singnet.com.sg/~axon2000/index.htm Is pretty cool to support thinking in all kinds of situations (capturing knowledge from users is quite effective with it). |
| Tue 12 Mar | Marcus Zetterquist | My number one tip: Email effects from www.sigsoftware.com! It's for Windows and Mac OS 9 and X. Shareware. It's a simple little drawing program (think Illustrator) that you draw ASCII art with for your email signatures! We use it to make small drawings directly in our source code. Simple UML diagrams, view hiearchies, tables etc. Example: if you write a function that does something to a linked list you can actual make a little drawing directly in the header file with little boxes for the nodes and arrows for the pointers! If you need to draw some boxes on a piece of paper to figure something out or to explain something - take a few minutes to put the drawing directly into your source code where it belongs! Yes - you can copy drawings back into Email effects to edit them! /Marcus |
| Tue 12 Mar | Jeff Darcy | Re: Windows editors. I've been using EditPlus (http://www.editplus.com) for years now, and couldn't do without it. I'm probably the only guy I know who hacks UNIX kernel code using a Windows editor, but I also use it for all of my Python, HTML, etc. Tabbed multi-file interface, configurable syntax highlighting (I wrote the first Python syntax file for it in about ten minutes), easy external-tool integration, etc. It's also one of the most stable programs I've ever used on any platform; after using it all day every day for years, I can still say that I've never seen it crash, weird out, or even display text incorrectly. Re: tools. The tools I'm always personally looking for are (1) better parsing tools and (2) better bug-finding tools. The first category is pretty self-explanatory. I've gotten pretty good at using yacc/lex over the years, because quite honestly I've never found anything that really seemed to be all that much of an improvement. Part of me still believes that there should be a tool that does all the grunt-work of turning a complex config file into an easily-manipulated parse tree requiring no more than a single concise description encompassing both lexical and syntactic elements, but I have yet to find such a thing. Don't tell me XML is the solution, either. XML is great, but I want to be able to parse files whose format was designed without XML in mind, and I wouldn't want to use an XML-based programming language either. To some extent I believe XML exists as a concession to the belief that more general forms of parsing are too hard, and I'm not ready to surrender yet. In the second category, of bug-finding tools, I'm thinking of things that go beyond strict type-checkers and memory leak detectors. Dawson Engler's MC (http://hands.stanford.edu/osdi2000/) seems to me like a huge step in the right direction. It lets you augment or annotate *real code* with concise and readable descriptions of rules the code must follow, e.g. checking pointers before dereferencing them, matching locks with unlocks, etc. In a way, it does for the control part of the code what strict type checking for the data part. We need lots more work like this, creating ways to guarantee code safety and correctness without sacrificing performance or putting programmers in straitjackets (take that, functional-programming weenies). |
| Tue 12 Mar | PeterM | grep, Perl (Win32 & Unix) find (Unix) UltraEdit (Win32) |
| Wed 13 Mar | Timothy Falconer | Can't say enough about Araxis Merge: http://www.araxis.com/ $124 for a diff utility? Damn right! Plug this puppy into WinCVS and you'll find yourself using it hourly. It's very well designed ... an example of software done right. |
| Wed 13 Mar | Sonny | I develop C/S applications with Delphi on the front and Oracle on the back. I couldn't function without the following three: DOA (Direct Oracle Access) http://www.allroundautomations.com/doa.html is a translation of Oracle OCI from C to Delphi. Database access speed is un-freakin-believable, even multi-threaded queries. Moreover, it makes app distribution a snap - as long as the client has the Oracle client installed all you need is the Delphi-compiled .EXE. To hell with ODBC/DAO/RDO/ADO or whatever the hell they're calling it this week. Did I mention the blazing speed? TOAD (Tool for Oracle Application Developers) http://www.toadsoft.com is the ultimate tool for any Oracle developer. Interestingly enough it is written with Delphi using DOA! Finally (and this will be the one that proves I'm certifiable), I wouldn't be near as productive as I am without Ozzy, Megadeth, or Judas Priest screaming in my ear. San Francisco's 107.7 The Bone http://www.1077thebone.com is the finest I've found. Thank goodness for streaming audio! |
| Wed 13 Mar | Mark W | I'll double that TOAD endorsement. |
| Wed 13 Mar | Colin Davies | PL/SQL Developer for Oracle development (much less expensive than TOAD) (www.allroundautomations.com) TreePad for organizing miscellaneous bits of text, code, etc. (www.treepad.com) UltraEdit for text editing (www.ultraedit.com) PowerDesk for file management (www.ontrack.com) Enterprise Architect for UML modeling (www.sparxsystems.com.au) ER/Studio for data modeling (www.embarcadero.com) MKS Toolkit for UNIX utilities on Windows (www.mks.com) CS-RCS for version control (www.componentsoftware.com) |
| Thu 14 Mar | Michael Chansky | I completely agree with EditPlus. I also regularly use DJGPP's Bash for Windows. Tab completion is just too handy to ever use DOS. And TortoiseCVS. It's a CVS extension for Windows Explorer that modifies the icons to indicate the status of a file reletive to the CVS tree and lets you do all your CVS stuff with context menus. |
| Thu 14 Mar | Doug Alcorn | RE: Regular Expression Building Tools In (X)Emacs, there is a tool called re-builder.el. It 'provides immediate visual feedback about how well the regexp behaves to your expectations on the intended data.' Here's one link: http://groups.google.com/groups?selm=87puv66dxt.fsf%40magrathea.outer.space.org and here's another: http://www.emacswiki.org/cgi-bin/wiki.pl?search=ReBuilder |
| Thu 14 Mar | Mike G. | Rather than using MKS Toolkit or DJGPP's bash, I've had lots of luck with Cygwin. Very nice. The X Server also works, which saves a lot of money vs. Exceed. |
| Thu 14 Mar | Mike Gunderloy | You can actually get some command-completion in the Windows NT/2K command processor. See http://support.microsoft.com/default.aspx?scid=kb;en-us;Q244407&SD=MSKB& . Still a far cry from bash, of course. |
| Fri 15 Mar | Sonny | I downloaded and tried TreePad Plus after seeing it mentioned in this thread. What a fantastic tool, thanks for the recommendations! |
| Fri 15 Mar | Glade Warner | Four Windows tools I can't live without: 1. TopDesk from Snadboy. Freeware. It allows access to desktop icons underneath all the open windows. Currently a little hard to download. http://www.snadboy.com lists an email address to ask for a copy. 2. VIM. Vi editor improved. http://www.vim.org 3. Cygwin utlities. (Mentioned by others). grep, tail, other Unix commands. http://www.cygwin.com 4. Flashdesktops from http://www.flashdesktops.com Flashdesktops ($25) is a virtual desktop manager that allows quick switching between screens. I setup all the business screens (Word, email, etc.) on one screen, compilers on another, applications on another, etc. |
| Sat 16 Mar | Roman Zabicki | IntelliJ is a great Java IDE. It has some wonderful refactorings built in. Great auto-completion, class-browsing, and live templates (macros for doing common things like iterating over an array). It also has a local mini source-repository built in (in the beta version) There's support for ANT and a couple different source repositories. |
| Sun 17 Mar | Frederic Faure | My own favorite programs include: - Windows Commander (http://www.ghisler.com/) - Namo WebEditor (http://www.namo.com/; fantastic WYSIWYG editor) - Opera as my web browser (http://www.opera.com/) - FreeAgent as my news reader (http://www.forteinc.com/) - UltraEdit (http://www.ultraedit.com/) - WebCopier offline browser (http://www.maximumsoft.com/) - CRT and SecureCRT for telnet/ssh access (http://www.vandyke.com/) - CD Labeller (http://www.ziplabel.com/) - SmartDrawer (http://www.smartdraw.com/) - LotusOrganizer as my PIM (http://www.lotus.com/organizer) - FileCompare (http://www.oneysoft.com/) - WorldTimeClock (great if you work with teams in different parts of the world; http://www.programming.de/) - ActionOutline (http://gpsoft.hypermart.net/) My Ą.2 Fred. |
| cyclic includes | Fri 08 Mar | Keith Paton |
| What do others think about cyclic includes as in a.h includes b.h b.h includes a.h Is this ever justified? |
| Sun 17 Mar | John McQuilling | One approach that is used in the standard libraries is to prevent a include file from being included twice. This is done by checking for a preprocessor variable and only including the code if the variable is undefined. It may not be elegant but it prevents problems. |
| For ASP developers | Sat 16 Mar | Wanderley Miyata |
| Just curious: 1. When writing a lot of ASP pages, do you guys write on every page or use ? 2. Do you guys use one ASP page for each task or just one page (like Joe)? And if you use just one page, you code everything there or split it into multiple include files? 3. Encapsulate VBScript code in a COM DLL or just be lazy (as me)? Im finishing a big ASP project and I wonder if everybody has the same approach. :-) |
| Sat 16 Mar | razib khan | for most server-side apps i try to segregate presentation from logic. the logic i tend to stuff in a few files that reach toward the database and offer some level of abstraction. the presentation i tend to disperse in multiple files that generally cluster around the outermost logic file (furthest from the db). it kind of ends up looking like so.... presentation presentation presentation presentation < - logic logic -> database presentation presentation presentation kind of like a tree :) if two web pages are really closely related (say a page with a form that takes info and the page that outputs a copy for you to print out) i might keep them together and mixed code and tags. but usually i find that the more i do this the more i mix presentation and logic without thinking about it. include files i use a lot for the header and footer information that standardizes the layout of the pages (style sheets, and maybe session info that i use throughout the site). p.s. i used to think that putting all the presentation in one file saved time, since i didn't need to open multiple files-but i ended up wasting time figuring out what was where and wading through gallons of comment just to get my bearings. on the othe hand, i find that the most code oriented files i can arrange it however i feel is the most 'logical' with less concern about dispaly (no concern actually), so i'm more confident stuffing a lot of lines of code into these (as long as i make things modular and comment i don't seem to have a problem) |
| POLL:Programming taking toll on personal lives? | Sun 10 Mar | Bella |
| I want to take a survey of how long hours affect programmers personal lives. Do you feel your long hours have taken a lot away from qualitiy of time with your spouse and/or family? Do you often wish for a way out? Also, some demographics may be helpful. For easy parsing, please reply in the following format: If you are single, type in your reply: STATUS|S If you are married, type in your reply: STATUS|M If you have kids, type in your reply: KIDS|number_of_kids Knowing age may help... AGE|your_age Thanks. |
| Mon 11 Mar | Tony E | >>Easier said than done, no? What if you work in a >>team where everyone is in their 20's, live right in the >>big city, and can work 60 hour weeks, and you don't >>want to anymore? Eventually you will realise its just not that important, do you see yourself sat on the porch in later life looking back and saying 'I wish I'd spent more time in the office'? |
| Mon 11 Mar | Ged Byrne | STATUS|M KIDS|1 AGE|30 Nowhere near as disruptive as her career - teaching. I spent my entire sunday evening glueing pages onto cardboard for display. |
| Mon 11 Mar | Jutta Jordans | STATUS/S KIDS/0 AGE/30 I live alone, I do not have a boyfriend or family and therefore little reason to quit working at 5pm, but if I seriously do overtime for more than a week in a row I just break down. I work about 40 h a week and I am rather flexible when the schedule is tight and I have to stay longer at night or come to work on the weekend (something that has happend only once at my current job). But I try to compensate this as soon as possible by leaving early on another day or taking half a day off. It is my strong believe that there is only a certain amount of time you can spent on a task every day/week/month. Trying to work more than that is neither productive nor healthy. Have fun, |
| Mon 11 Mar | Michael Chernin | Depends. Are you also a lifer, or do you just do programming because it's part of a greater (if vague) goal? People can fruitfully work long hours if they're creating something that needs to be created. Maybe a lot of that work goes to waste, but the mind is learning during those days. Creating something important is just as important as having a family or reading books. Working for money isn't. |
| Mon 11 Mar | Mike Gunderloy | STATUS|M KIDS|1.5 AGE|42 I still work 90-hour weeks, but actually the quality and amount of time with my family is quite good, because both my wife and I work at home. I do far more parenting than most dads. |
| Mon 11 Mar | Bella | 90 hours weeks? You may want to check your numbers. You must be taking breask during the day, otherwise I can't possibly see how you can 'father more than most dads' working 90 hours a week. I think your '90 hour' week at home is not at all like actually being in the office for 90 hours. If you worked 5 days a week, that would average 18 hours a day, which is working from 6am-midnight. Not enough time to eat and sleep. This will lead to a speedy death. If you worked 6 days a week, that would average 15 hours a day, which is working from 7am-10pm. No way you're seeing your kids in this case. If you worked 7 days a week, that would average 13 hours a day, which is working from 8am-9pm. 7 days a week. What else can I say? Either your number are way off, or you're a very deulded man. |
| Mon 11 Mar | Bella | Jutta, it must be nice to be able to work 40 hours a week. Im my world, that's unheard of. Unless there are firms that are willing to trade off bigtime with salary and a limited workweek. You may be in for a shock if you ever change jobs. |
| Mon 11 Mar | x | I used to work ~60 hours per week, partly due to a troubled (unrewarding) homelife, partly due to boss who encouraged people to work by inducing fear. Spouse is now on medication for schizophrenia, I now work 38 hours/week to be able to help give us both 'a life', and it's now a much better situation all round. I've heard oldsters say that they divorced after working insane hours for a few years; which is the cause of that and which is the effect may be left as an exercise for the student. HTH. |
| Mon 11 Mar | mackinac | Bella> it must be nice to be able to work 40 hours a week. Im my world, that's unheard of. Where is that world? I work mid-Atlantic USA doing software development. 40 hours/week is the norm, with extra hours and some weekend work near deadlines when we find out that there is just too much unfinished stuff to do. Severe overtime for a few weeks may happen on really badly managed projects, but I have not gotten stuck with one of those. To me the overtime is a relatively minor problem compared to my long commute, which consumes 10 hours of my time a week, or the less than optimal working conditions and project management which make the 40 hours more stressful than they should be. |
| Mon 11 Mar | Banana Fred | STATUS|S KIDS|0 AGE|28 I used to work lots of overtime, but after being burned by a dot-com or two, that won't happen again. My work has been 'asking' people to workends to ship a product with an overly optimistic schedule. My girlfriend gives me grief for working on the weekends, but I know she is right. It's 9-5 for me from now on.. |
| Mon 11 Mar | Mike Gunderloy | Either I wasn't clear enough, Bella, or you're misunderstanding me. Or both. I am typically at my desk 5AM to 9PM, 7 days a week. But that doesn't mean I am constantly working during that time. Subtract off 3 hours for meals and meal prep (I do most of the cooking around here) as well as feeding the animals around the farm, and there's the 13-hour day. But that doesn't mean I'm coding that whole time, any more than an 8-hour office day means coding for 8 hours. I work with just about the same intensity that I did when I used to go into an office. So I claim those 90 hours as the equivalent of 90 office hours, even though there are lots of breaks and multitasking. This morning, for instance, I just got done taking a ten-minute break with our toddler to go play with the baby chicks. Now he's in my lap helping me type. Presently we shall read my e-mail and his Cat in the Hat. Then perhaps he'll play with dinosaurs while I write something. So, I work 90 hours the same way that most office-goers work 40 hours. |
| Mon 11 Mar | Ged Byrne | Mike, You have a sweet set up there. Its what I hope for myself one day. |
| Mon 11 Mar | Frederik Slijkerman | Except that 5 AM is perhaps a little early to start. :-) |
| Mon 11 Mar | noone | If you are single, type in your reply: STATUS|S Knowing age may help... AGE|25 I have screwed my life so much that it does not really matter whether i screw it up a bit more by programming. So it does not affect me. |
| Mon 11 Mar | Mike Gunderloy | Frederik: I start when the rooster starts :) In the winter it's somewhat later. |
| Mon 11 Mar | Semi Free Corporate Slave | S/34/0 is easier to parse :) I work at a startup. I get in around 10 and leave between 6 and 8 (average ~ 45 hrs/week.) I don't work weekends except in emergencies. I'm definatly in the minority. I get in after most of my co-workers and leave before most of them (most people work ~ 80+ hrs/week.) Also unlike most of my co-workers, I'm not perpetually burnt out. When people ask me to do something, they get it on time (mostly) because I know how much I can do and really try not to accept more than that. None of my managment seems to be complaining much, other than when I tell them they really need to go home early once in a while instead of sitting numb in their cubes staring into space. If I eventually get laid off for not overworking enough, then hey, I guess I'll just have to get another job. |
| Tue 12 Mar | Bella | To the people who work at home. Do you worry about what will happen if your work at home job goes away? Do live somewhere where you can get a new job? |
| Tue 12 Mar | tchaos | M/2/30 Situational fire-fighting/pre-release chaos notwithstanding, I'm home by 5 and on weekends, as family time is more important to me than burning myself out. Of course, I'm almost always in the office by 6AM, because I'd rather be gone in the morning while my family is asleep, then in the evening when they are awake. |
| Wed 13 Mar | Mike Gunderloy | Do I worry about getting enough work at home? Constantly. At the moment one major contract is drawing to an end at the end of this month, and there's not another one signed yet to take its place. But that's not really much different from any other sort of freelancing business. Keeping the work flowing is always tough when you're working for yourself. The big disadvantage I have is not that I work at home, but that I am in an extremely rural area and am no longer willing to travel long distances to client sites. It's all a matter of trade-offs; in our case, we prefer this as a place to raise kids over places where I could get more work that paid better more easily . |
| Wed 13 Mar | Bella | Mike, Yea, that spells potential disaster, if you've painted yourself into a corner, and are uncommutable to an office job, and are not able to find work at home gigs.... I never understood how people can get a job in a remote location, where they are 100% dependent on one employer. (IBM is a great example of this) When that office/plant shuts down, it's time to move, or work at the bowling alley. And of course, when 100 homes come on the market at once, with no reason for anyone to move in and buy them, the bottom falls out harder than you can comprehend. Talk about putting all your eggs in one basket ! I guess your lifestyle has been great so far, cheap remote real estate, good hours, etc. but that was a function of one job, which can be lost in an instant, which you are now grpappling with....False reality? How long a drive would you need to make to find a programmer job in an office? |
| Wed 13 Mar | F.J. Weiland | M|1|42 My hours traditionally tend to be fairly heavy, on average say 50+/week, with work on weekends or at home in the evenings. 40 hours is a noticeably light week, and crunch time can easily take that to the far side of 80/week, including camping out at work overnight in the lab. I have kind of a bad commute now, also, which doesn't help. The commute also is why I'll sometimes stay over at night if I'm too tired to drive home safely. Yep, it does cut into my personal life quite a bit. My wife and I don't like that, but it's the breaks of the game, pretty much. It's been worse, though. Just wondering, those of you who have responses posted that follow the pattern more or less of 'I'm just doing my 40', 'it's just a job', 'I'd rather not burn out', 'I just get up and leave' etc. -- have you ever considered the possibility that your actions may be making somebody else on your team have to work harder than they otherwise would? If you're seeing the other members of your team at the office pull down heavy hours, and you get up after your 40, when was the last time you tried to see if there was anything you could do to help? How can you actually in good conscience get up and leave if you know you're only spending half as much time as your teammates are without at least trying to find out what's up? You may be the one who's right, you may be 100% better than they are, great if so. They may be complete idiots... anyway you look at it raises a great opportunity for improvement. Oh wait - here's a kicker - when was the last time you voluntarily went to your *QA guy* and worked through the requirements and designs for your part of the system to make sure that: 1) the conditions your code may be subjected to are identified 2) what your code is supposed to do under those conditions is identified 3) these things are coordinated with the other stakeholders on the team 4) the interface (human UI or other system ) supports all this 5) the QA guy understands what your code is supposed to do under specific conditions so he can write tests for it. 6) all this is expressed in a format that makes the lives of those who must use it easier rather than harder? 7) ...etc. Well, if your answer is 'never', then you've got people around you who are working harder than they need to because you're cutting corners you should not be cutting. Have you considered that your teammates might be approximately as deserving of their time at home with their families as you might be with yours? At 42, I'm among the older of those I've seen on this group so far. Some of you on this group are closer to my daughter's age than you are mine. I served a good while in the Army at a various levels, and in the civilian world as well, I've led teams ranging in size from 2-3 and commanded a unit as large as 260 soldiers. I've had more or less three careers in the last 20 years. Bottom line, been around the block a few times and know a fair amount about being part of a team and running one. In the Army, we had a term that applied to just doing your little slice and skating out the door - the G-rated version of the term was 'screwing-over your buddy'. There were a lot of ways to screw over your buddy, but one way was to not carry your share of the load when the whole team is trying to carry a common burden. The mission was always too big for one person alone - the mission was a team mission. No individual was done until the team was done. Sure, everybody had their parts to play, but you help each other out whenever possible or practical (some skills are really specialized and could not easily be shared, I know). If you're so good, and you might well be, that you can do in 40 hours what it takes a teammate 80 hours to do, then you owe it to the team and to your teammate to see if you can help them learn how to do things faster, too. Maybe you can't, but at least you checked into it. The person you asked if you could help will probably remember that you did, also. Someday, the shoe may be on the other foot. Wouldn't it be better if your shop had a team of people who could all get your amount of work done in 40 hours / person / week? Then you'd all be happier. Or, you'd all be more efficient and may be able to beat out a competing firm for a contract because you know you can under-bid them and still make money? Many good things can come from trying to help out to make things better and not just bail-out when you've got your piece done. I'm a QA Manager, in case you hadn't guessed from my comments above. I'm one primary consumer of information and artifacts regarding the system behavior. When it is never developed, or when it's never made visible to me, then I'm one of those who pays for the short-cuts taken upstream by those who don't want to 'burn out'. Guess it's ok for us to burn out. |
| Wed 13 Mar | Mike Gunderloy | Bella - Nope, I'm not dependent on a single employer. Well, only in the sense that I'm self-employed. These days, I'm doing consulting work for a couple of clients, editorial for a couple more, and writing books and articles. With one major job about to end I'd like to slot another into those hours, but it doesn't have to happen immediately. For that matter, we could keep going for at least a year with no income coming in beyond book royalties. So I'm not particularly worried. An office job? I'd have at least a 2-hour one-way commute. I've done that in the past (crossing Los Angeles), but I'm not about to do it again. Something will always turn up. |
| Wed 13 Mar | x | FJ, We usually have more than one day's worth of work 'scheduled'; e.g. a 6-month 'new project', or something shorter. I am *not* going to attempt to finish it all in one day and night, even if my bosses *would* appreciate my (succeeding at) doing that. Something that worked successfully for me recently was to make a WAG ('wild-ass-guess')schedule at the beginning of the project, measured in weeks. Then a weekly status report, saying what's done, what's not done, whether the project has slipped, what the blockers are, *adjust* the schedule at the end of every week, and publish it to the bosses. (There's some advice about how much to adjust/revise your estimated schedule in, I think, the book called _Rapid Development_). Net result: I was usefully employed every one of those weeks (they managed to feed me input as needed, or find something else to do temporarily if some expected input was delayed); I didn't burn out; the WAG schedule 'slipped' 2 months, but everyone knows exactly why and they had plenty of time to adjust their end-dates, and to adjust the feature set which they're attempting for this release. I've been out drinking with my QA manager, berated him for working such long hours as he was working if the hours were contrary to his desire, told him that it wasn't necessary (citing myself as an example), let him blow some steam, and he feels better now for whatever reason. QA people imho tend to feel less job-secure than developers; wrongly, if I have any say in that ... I would far rather lose a developer or two than any QA. Also managers can feel less secure, as they try to protect (make up for any perceived deficit left by) their underlings. I've also (per my manager's instructions) made it explicit in writing that no single person here will be held responsible for missing some important ship date; that if we succeed then we will all succeed, and that if we fail then we will likely all be fired en masse; and that if anyone has nothing much to do (near the end of a project), the QA manager has plenty and go see him. The QA manager characterized that to me as an 'evil' email (since it mentioned our all being fired), and said that as a result of it several people came to ask him how they could help. So, that went well. In the end, I don't want my family to burn out. If this company can't survive without my working 60+ then I just need to find another company; that's where my loyalties are; but, so far, they seem to be surviving. I used to work long, and I benefited from it then, and now not. HTH. |
| Thu 14 Mar | Jutta Jordans | FJ wrote: >Just wondering, those of you who have responses posted that follow the pattern more or less of 'I'm just doing my 40', 'it's just a job', 'I'd rather not burn out', 'I just get up and leave' etc. -- have you ever considered the possibility that your actions may be making somebody else on your team have to work harder than they otherwise would? Hey, I was one of the 40 h people, and I think you misunderstood my point. To me it is not 'just a job'. My work is the most important thing in my life. My colleagues are too. I would never think of letting them down in any way. For one thing we have a pretty straight forward 40 h policy in our company, you are not only 'allowed' to leave after an 8 h work day, you are by all means expected to do so. We have a monthly release cycle and by the end of the month things tend to get a bit rough sometimes, most of us work a little longer then. In the more relaxed times you see people leaving office early. It works really great that way. We do not get paid overtime (even though we might be in for a bonus of some kind for extra weekend efforts or the like, I got an invitation to a David Copperfield show last year after working on sunday). We are expected to compensate by taking a day off. Also I think that none of my colleagues (neither programmers nor QA nor management whom I consider colleagues too :-) ) would gain anything from regular overtime done by me or any other developer. 40 h in front of the screen is enough. You do not stop thinking anyway, the best problem solution pop up in my head at night. Working longer on a regular basis wears me out. I had that on a previous job and it ended up with me being seriously ill and unable to work for almost a month. This I consider letting my fellow programmers down. And working well together with the QA department or not has nothing to do with the time you spend at work either. In the oppsosite. I would guess that a company relying on their employees doing serious overtime all the time cannot be that keen on quality anyway and therefore QA might find it harder getting heard. The longer programmers feel they have to work, the less time they will want to spare on tasks other than coding. Jm2c, |
| Thu 14 Mar | Matthew John Wills | M|0|25 >> Just wondering, those of you who have responses posted that follow the pattern more or less of 'I'm just doing my 40', 'it's just a job', 'I'd rather not burn out', 'I just get up and leave' etc. -- have you ever considered the possibility that your actions may be making somebody else on your team have to work harder than they otherwise would? FJ, Commonsense (and a multitude of literature - Peopleware) proves that overtime is worthless. If people hang back and work longer hours then they invariably: a) Introduce more problems than they solve b) Slack off anyway So there is no real reason to feel guilty (assuming you are working the hours you are paid to work). I work 37.5 hours a week and get as much done in that as I would in 60... Seeya |
| Thu 14 Mar | James Wann | STATUS|S KIDS|0 AGE|28 All the response formats on this message board *proves* the theory that user's don't read instructions :-P Long hours don't affect my personal life much. It's only when hours creep into my official 'play time' - (ie. any time friday night to sunday night) that it starts to become bothersome. It's too bad that long hours are the norm in the software industry. I'm hoping it will fully change in the next 10-20 years, when more Gen-X'ers who grew up and evolved with the computer industry will become 'management'. They'll lead the push for the essential processes that are necessary for a healthy software organization. In general, there's a shortage of good technical managers in the industry. It definitely rears its ugly head every time I see a job posting looking for a '.NET Architect with 10 years of .NET experience.' - oops, I'm digressing...(and not following instructions :-P) |
| Fri 15 Mar | William C | STATUS|S KIDS|0 AGE|30 Typical week: Monday, 12:30pm - 11:00pm in the office Tuesday, 12:30pm - 4am in the office Wednesday, sleep in, work 3-4 hours at home Thursday, 12:30pm - 4am in the office Friday, sleep in work 3-4 hours at home Saturday or Sunday - if girlfriend working, I will work some more hours from home (becaue I might have worked less during the week knowing that she was working that weekend). I work long hours (I love this stuff!) but that is so that I can spend more time with my girlfriend (and because I just don't want to stop sometimes -- did I tell you I love this stuff! :) I'm working at least 50 hours a week, but I spend so much more time with my girlfriend because the hours are flexible. Basically, I go into work 3 days a week. Work from home 2 days a week. If I know I'm going into the office the next day, I'll force myself to leave around 11pm. If I know I'm NOT going into the office the next day, I'll leave when I'm tired (4am, 5am, sometimes 6am). This is why ALL workplaces should have flex hours. They get more hours from me (at least 50), they are more productive hours (less context switches, it's real quiet at night), and I'm happy because I can see my girlfriend when she's not working (she's a nurse so her hours are all over the place -- and I adjust my work days accordingly). The philosophy at my workplace is 'work the hours you need to work to be productive'. Let me tell you, it does not get any better than that. Another guy I work with comes in at about 11am and leaves at 4pm (to pick up his little girl). He'll take care of her until she goes to bed. Then, he will work from 9pm-2am at home. So, he still puts in his hours. And gets to spend time with his daughter/wife. So his personal life doesn't suffer either. Again, all companies should let their programmers have flex hours. It's a win-win situation. |
| Fri 15 Mar | Mike Gunderloy | Came to contract on a chunk of another book today. So much for those looming spare hours! |
| Fri 15 Mar | Bella | What exactly do you do, Mike? Contract for a book? Are you a proofreader? |
| Sat 16 Mar | Mike Gunderloy | What do I do? A little of everything. In this case, the contract is to *write* part of a book -- something I do quite frequently. I also write software on a contract basis, edit some magazines, write articles, and poke at some projects that might some day ship as shareware. Used to do a lot of training, too, but that was too much travel. |
| Books | Wed 14 Nov | Joel Spolsky |
| Its about time that I updated my crufty old list of recommended books at http://www.joelonsoftware.com/navLinks/fog0000000262.html . What books should I have up there? Ground rules: to keep this conversation on track, everybody gets to vote for ONE book, and one book only. I really want to hear what people think is the SINGLE best book on painless software management. |
| Wed 13 Mar | William Harold Newman | The treatment of project management books seems good. But I think there should be more pointers to technical programming books as well. There should be a book on algorithms. I realize you're only treating things at the level of _The C Programming Language_. So maybe you can't say people should read the book cover to cover. But there should be an algorithm dictionary on a programmer's desk, running into rather advanced algorithms so that he has some perspective on how tricky things are done well. I love _Introduction to Algorithms_ by Cormen et al., but I don't know enough other books to say it's the best. And Russell and Norvig's _Artificial Intelligence: A Modern Approach_ arguably belongs on the list near _Goedel, Escher, Bach_. If you had to choose only one of the two, I'd probably choose _AIMA_. There should also be pointers to good books on other key subjects. A given programmer might never need to read any one of these books, but when he ventures into the appropriate field he should know where to look instead of making it up as he goes along. I know I'm not supposed to recommend a third (or second, for that matter:-) book but I'll cheat by giving one as an example of the principle: Schneier's _Applied Cryptography_. Great books on compilers, databases, multithreading, fault tolerance, numerical analysis, basic circuit design, and so forth belong here. Also, it'd be worth saying something about good general rules for finding books, e.g. idiosyncrasies and biases of different publishers. Joel probably has a few opinions of his own here (and better knowledge than I of what written opinions are legally actionable:-) so I'll just plug for 'say something about this' instead of giving an example of what to say. |
| Wed 13 Mar | S H H | Thinking in C++ get's my vote. It lead me to actual understanding of what it means to write effective, maintainable code and what real oo programming is about. |
| Thu 14 Mar | steve jenson | Anti-Patterns |
| Thu 14 Mar | steve jenson | 'Patterns of Software', a wonderful series of essays wandering through the world of software development with a healthy dose of personal experience thrown in the mix. |
| Thu 14 Mar | Mike Woodhouse | 'Refactoring - Improving the Design of Existing Code' by Martin Fowler (pub 2000, Addison Wesley, ISBN 0-201-48567-2) is probably the second most useful book on the practicalities of development (after 'Code Complete') that I've read. It puts a structured framework on much of the effort that I expend on other people's code and gave me a basis to explain to others how I wanted them to approach enhancements. Even though all the examples are Java-based and I'm mostly not Java-literate, it works for me. |
| Thu 14 Mar | anders pearson | i agree with your comments on K&R but i feel i should point out that it should never be considered an example of how to write solid, secure C. almost every example in the book is a buffer overflow waiting to happen. the fact that so many programmers out there learned C from this book goes a long way to explain why there is so much insecure, fragile software out there. |
| Thu 14 Mar | Arnaldo Riquelme | UNIX Network Programming http://www.amazon.com/exec/obidos/ASIN/013490012X/qid=1016150498/sr=2-2/ref=sr_2_2/102-0760874-0140967 Advanced Programming in the UNIX(R) Environment http://www.amazon.com/exec/obidos/ASIN/0201563177/qid=1016150550/sr=2-1/ref=sr_2_1/102-0760874-0140967 Although gear towards Unix , win an understanding of C both of this book should make you a great programmer. |
| Thu 14 Mar | Rich Ruh | Great book list. One of my standard interview questions to anyone who has been out in the field for awhile is 'You're working with a computer science intern who is about to graduate, and you want to give him/her a book as a graduation present-- a book to get them started in their career, to sit on our shelf for years and help them be a better software engineer. What do you get them?' The answer is, of course, in mostly in how they explain their answer, not the specific book. I get a few answers like 'Learn C++ in 21 Days'. These people haven't figured out that today's technology will be obsolete next Tuesday. A surprisingly large number of people can't name a book at all. I usually find an excuse to end those interviews quickly. For those that are left, most will answer with 'Code Complete', or 'Writing Solid Code', but there are a few others that come up from time to time. 'Design Patterns' gets a few votes, but I personally feel you have to code for a few years before you can appreciate that one. A few of the more daring name a non-computer book. My personal answer to this question is 'Zen and the Art of Motorcycle Maintenance'. |
| Sat 16 Mar | Bert Fernandez | I ask a similar question of software developers I interview: 'What books, maganzines, or websites have/do you read that shaped or impact the way you do your job and why?' There's no 'right' answer (okay, maybe 'Joel on Software' ), but I'm hoping for an answer that will provide me additional insight into the developer. As for my book recommendation, I'm suprised people haven't mention 'Object-oriented Software Construction' by Bertand Meyer. Some may find it a little dry in its textbook-style presentation, but I love its rigorous, systematic approach. If you've ever heard of Design-by-Contract, this book is the source. Another thing people may not like is that the book uses Eiffel for its examples (on one level, the book is describing the basis for Eiffel's design), so you'll have to apply the principles presented to your language of choice yourself. Nevertheless, the rationale is clear and the principles are solid. I read it early in my career and it really shaped how I write software. I should mention I read the 1st edition and I love my 1st edition hardback copy. The 2nd edition looks to be much expanded (which doesn't necessarily make it better) and comes with a copy of the book on CD, but I haven't seen it in hardback. http://www.eiffel.com/doc/oosc/ |
| Sat 16 Mar | David Rubin | The Mythical Man-Month and The One Minute Manager. These two books should be the foundation of every software managers library! |
| Sat 16 Mar | David Rubin | Oops, I was only supposed to vote for one book. OK then, The Mythical Man-Month! |
| How to disable Flash in IE | Fri 15 Mar | Colin Davies |
| I hate Flash intros - is there any way to stop Internet Explorer from running them? |
| Fri 15 Mar | Mark W | If I'm not mistaken, IE considers flash an Active X and if you disable Active X it should disable flash.... |
| Fri 15 Mar | Christopher Wells | I don't have Flash installed on my machine. Whenever IE asks me whether I want to download and install it, I press the 'no thank you very much' button. |
| Fri 15 Mar | Colin Davies | I finally tracked this down: http://www.macromedia.com/support/flash/ts/documents/remove_player.htm |
| Fri 15 Mar | Banana Fred | but if you unregister the Flash Player ActiveX control, you'll get an annoying 'Do you want you to download Flash?' message box on any web page that uses Flash. I think that's much worse than any Flash ads.. Just in case anyone here LIKES Flash, you can now download the new Flash Player 6 today: http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash |
| Managerial Acccounting | Fri 15 Mar | MatteyBoy |
| Yesterday, in search of some insight into software development management, I dusted off my Accounting Textbook from college. I found two very interesting things under Managerial Accounting. (Which is a form of Acct. designed specifically to provide guidance/information for decision makers.) It led me to this theory: Many Generally Accepted Accounting Principles (GAAP) are mired in the 1930s, and this is harming software development(*) (1) Accounting to Man. Acct. Theory, there are three kinds of departments: (A) Cost Centers. Manufacturing, HR, etc. (B) Revenue Centers. Sales Departments. (C) Investment Centers. Mortgage Departments or asset management firms, which both incur large costs now and (may) bring larger returns later. Under Man. Acct. Theory, Software Development Departments are COST CENTERS. Managers of Cost Centers are evaluated _solely_ on thier ability to stay below budget. This logic explains the slow machines and lack of cutting-edge tools in our industry - if the only measure of the department is cost ... we need to cut cust. Now, there is a solution: In manufacturing operations, you can come up with a standard cost for a unit. Then, if you make more units, you can spend more money - as long as you have demand and the cost of developing each unit is below standard cost So, if we had a unit for measuring costs (not KLOC, more like Function Points), we could prove our expenses we just. We could also set a standard, instead of having budgets that spiral downward in tough times, and we could come up with some measurable proof of ROI. (Did you notice that that extra $10,000 on HardWare and Training Last year netted us 200 more function points, and at $200 each standard, we made $30,000?) But, sadly, realistically, we just dont have this. So we live in GAAP. (2) My book surprised me by saying that every level of management should be involved in the budgeting process - but not ANY of hte people actually doing the work. The argument was that lower managment had a better idea of reality than upper management. What about the people doing the work? Then I remember that GAAP was written in the 1930s, when American business was much more entrenched in a caste mentality, and a technical middle class hadnt fully emerged. The Typical level 1 Supervisor back then MIGHT have MAYBE had a high school education. Involving labor in budgeting was simply unrealistic and not practical - they didnt have much to add. Today, a typical Software Department might have someone with a degree in accounting, business, a couplea CS guys, etc, etc. They probably each have years of professional business experience combined with a great deal of experience in create project plans and living with the consequences of budgets. They may have more time with thier current company than thier manager. Why not involve them (to a slight extent) in the planning process? My guess? Because the accounting books say not to. This leads me to my solutions: (1) Software Companies seem to be generally better at this than companies that do something else as a core function. Obviously, Wal-Mart sees its money in retail sales, not automation. Exceptions about for sales force automation, etc, etc, but, overall, Software is a cost Center for these companies - while technology companies may see Software departments as having direct effects on revenue. (2) SW Companies led by programmers, former programmers, or other folks who have a great deal of experience in technology are much for likely to get it. (IE Yahoos Semil might have problems with this.) (3) SW Management Programs and MBAs with an emphasis in E-Commerce(etc) should teach something like Joel Spolskys Article on Converting Capital into Code through programmers. (http://www.joelonsoftware.com/articles/fog0000000074.html) (IE - The idea is that when you invest in hardware and tools and morale budgets, you get more stuff done, which you can then sell for more money.) thoughts? (*) - GAAP was created in the 1930s as a response to the great depression. |
| Fri 15 Mar | Bella | Your technology budget should be based on one simple factor. If your software makes more money (or causes more savings) than it costs to create and maintain, then it is worthwhile. Otherwise, it is not. |
| Fri 15 Mar | mackinac | Interesting ideas here. I have, myself, been thinking that some of the problems we have with SW development is because management thinking is stuck back in the early part of the 20th century when the low level workers were doing production line work, not thinking type work. The basic goal of a mid-level manager is to advance their career and if lower costs is the way to do it, that's what they'll do. But this doesn't seem to explain the whole problem. Developers' salaries, office space, PCs, and software tools are all expenses. Why do so many companies seem willing to hire numerous developers and skimp on the support items which are a lot cheaper? My hypothesis: a manager's status and, thus, future career prospects, depends on the number of people managed, not on their output. Note on Bella's comment: It is not sufficient that benefits exceed costs. Benefits must exceed the benefits of any other use of the funds to make the expediture justifiable. (i.e., best ROI) |
| Fri 15 Mar | Doug Withau | Has anyone ever read any books by Goldratt? http://www.amazon.com/exec/obidos/ASIN/0884270610/qid=1016234486/sr=8-1/ref=sr_8_67_1/002-9398894-1701601 He hits on many of the same points. Basically he argues optimizing an accountant’s equation may not be the best thing for the business in the long run. His books are written as a novel, like Deathmarch. You have to work past the fabricated story, but he makes good points. I would recommend it even though it is directed at manufacturing managers more than software folks. Knowing about bean counters helps you understand why letting the VC’s into a startup can cause a quick and painful death. They impose cost accounting so they can understand the balance sheet. If you’re a manager and you’re sacrificing long-term profits for local accounting optimization, are you really advancing your career? You could probably go to the unemployment office and ask the people in line. |
| .NET, Visual Studio.NET, VB.NET, C# | Thu 14 Mar | matt |
| Its been about a month now since version 1.0 of Visual Studio.NET was officially released. So I was wondering if anyone started using .NET either full time or part time? If so what language are you coding in and what are your thoughts on the overall environment and framework? |
| Thu 14 Mar | Matthew John Wills | Matt, Might be worthwhile for you to check out: http://discuss.develop.com/ Seeya |
| Thu 14 Mar | Mike Gunderloy | I'm using .NET roughly 70% of the time now. Of course, most of what I do is writing, which is only vaguely related to the actual market for software. But I do have utility & web work that I've ported over. Working in VB .NET mostly, with a bit of C#, and a mix of Windows Forms and ASP.NET applications. Personally, I like the .NET Framework and the tools for working with it. For me, one of the key indicators of that is that VB6 now feels clunky and wrong when I need to work in it. |
| Thu 14 Mar | Jan Derk | Mike Gunderloy wrote: 'VB6 now feels clunky and wrong when I need to work in it.' We, the Delphi developers, have been telling you that for years ;) |
| Thu 14 Mar | B | I've used ASP.NET and C# in a couple of projects where I have control over the server and love it. I'm just using Homesite as my IDE with a color coding scheme, and it does the job. My ASP.NET code is much much cleaner than my ASP code. |
| Fri 15 Mar | DB | I'm using C# at home and converting an existing Delphi project to it. It's... interesting. Kinda clunky still in comparison to Delphi, but has a few niceties Delphi does not, and performance is better than I expected. What I'm really pissed at is that it forces IE6 on you. As IE6 caused random reboots on my PC, I uninstalled the lot, created a new Win2K VMware virtual machine and am using that for .NET development now. Unfortunately the uninstall of .NET on the 'real' machine hosed my Delphi 6 install, and after uninstalling D6, now *nothing* that uses the Windows Installer will install. God I hate MSI. For the first time ever it looks like a reinstall of Win2K is going to be required as I've exhausted every possible avenue of fixing this one. |
| Fri 15 Mar | Ged Byrne | DB, You say performance is good. How does it compare to Delphi? |
| Fri 15 Mar | Dave Rothgery | Ged> For what? I don't know Delphi, but I primarily work in VB.NET now (and used to primarily work in VB6 and VBScript). There are definitely areas where VB.NET is much faster, and areas where it's slower. Windows.Forms definitely have more overhead than VB6 Forms, but I don't think this is a big deal very often; most GUI activity involves waiting for the user, not the system. On the other hand, a lot of back-end stuff is significantly faster. |
| Big Pile of money. | Thu 14 Mar | Ged Byrne |
| In his review of Capitalism for Programmers joel says: If you spend enough time in this industry its almost impossible to avoid suddenly finding yourself with a big pile of money that you are going to have to manage somehow. http://www.joelonsoftware.com/navLinks/fog0000000262.html I wish, I wish. Am I alone in finding it not only quite possible, but very easy, to work in this industry year after year and not even find yourself with a tiny pile of money? |
| Thu 14 Mar | A.N. Mouse | I believe he was referring to the pile of money you are managing for you employer... certainly not our own... God knows mine would be more like a hole than a pile. |
| Thu 14 Mar | F.J. Weiland | IMO, probably not going to happen as much anymore as it did for a while. I would say that timing has had a good bit to do with it to date. Until the last couple of years or so, we had a pretty good run going. BTW - I'm excluding the instances of folks making piles of money from IPO's. I'm just referring to folks making a 'pile' from their fees or paychecks. |
| Thu 14 Mar | MatteyBoy | I would have to add the caveat 'If you're world class, and work for a world-class SOFTWARE company ...' You will find yourself in a big pile of money. In other words, if you are working in the IS department of a bank, you might not end up with $ one. If you work for eBay and move your way up the ranks - you're gonna get some. If you are working for a non-Software company, I'd say the only way to make a pile of dough in software is to work for that company when it's a small startup. Then, when and IF the company hits the big time, everyone is going to get some stock, not just the 'core' specialty folks. (Generally, the executives, managers and the people actually making the product - hence the reason to work for a Software Company, above.) Then again, Your Milage May Vary. When Prince Machine was bought by Johnson Controls a few years back, I understand that every employee got a bonus - the long-standing executives were the ones that got millions, but I understand that some of the hourly folks with 30 years of exeperience got in the high 6 figures. Or I could be totally wrong. That's the problem with rumors. :-) Still, the owner of a private company who sells to a public company might not have the same sense of .. um ... 'Social Justice.' |
| Thu 14 Mar | Bella | Joel's comment was in context of reccomending a book on personal investing. Ergo, he clearly was referring to managing your OWN pile of money. Though 'Big Pile' is a relative term, I agree, you almost had to go out of your way to not have a serious income surplus over the last few years. For those who are still poor, it's not how much you make, it's how much you keep, and it's how you make it work for you. There are plenty of mailmen with higher net worths than doctors. |
| Thu 14 Mar | Ged Byrne | To be honest I've only been at it for 4 years. I've been doing the job for 10 or so, but I've only just managed to get the Job Title. The last boom gave me the foot in, which is surprisingly difficult without a degree or Lucky Break. Hopefully my Big Pile of Money will come in time. |
| Thu 14 Mar | Mark W | I'm hoping to turn my steady trickle of money into 'enough to be comfortable in the long run without sacrificing too much now.' Mostly by socking it away and taking advantage of any and every payback program my employer gives me. Which reminds me, I have to update my employer match info for my 401k. See my posts on the 'Why are you programming' thread for my thoughts on pipe dreams of one big pile of money. As far as piles of money to manage for the company. Now that IS a pipe dream, especially in today's economy. |
| Thu 14 Mar | Malcolm | re mailmen, 'The Millionaire Next Door' give good coverage of folks that become millionaries through good old hard work, savings, and frugality. Nothing earth shattering in this book, but it does remind you that you don't need to latch onto a booming IPO to become rich. |
| Fri 15 Mar | Mark W | Charles 'Chuck' Schwab wrote a few good books in investing 'Be Your Own Stockbroker' for example, and the financial tools on his website (schwab.com) are good. Especially the retirement calculator. I re-test myself every few months to year or so with that thing. Andrew Tobias' 'The Only Guide to Investing You'll Ever Need' or something like that is also an excellent book. 'Millionaire Next Door' is also good, but the sequel 'Millionaire's Mind' is only so-so. I reccomend them all. None of them are get-rich-quick schemes, like Robert G. Allen. all of them are based on reality and are very practical. |
| Should programmers admin their workstations? | Wed 13 Mar | Doug Withau |
| In the Teaching Laziness thread http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=4579&ixReplies=22 I said that developers should not have permission to administrate their workstations. “a programmer” replied that he would quit if they did not have control over their machine. If he worked for me I would say goodbye and have a nice life. Letting someone change their computer whenever and however they want introduces random variables. I personally don’t need that headache. Any IT person would say that you couldn’t let users change or install anything they want. Are programmers special? Are we better or worse than the general computer user? Programmers, is control of your workstation worth quitting over? Managers, what is your stand? Has anyone ever actually quit over this? Please, give concrete examples and stories both good and bad. Im talking about a situation with more than 3-4 people working together. |
| Wed 13 Mar | Banana Fred | At the company where I work, one of the departments wanted to use something like Microsoft SMS to create standard workstation disk images, allowing admins to 'push' new apps or upgrade anti-virus software, for example. Needless to say, the programmers in that department were pissed. Rather than reducing the number of variables, the programmers' computer configurations would be changing beneath them, possibly creating app conflicts. Plus, the IT department would then need to support and maintain the highly evolving and overly complicated build tools and configurations. Each programmer has their their own favorites tools or settings, which improves their productivity. Why do you insist the programmers NOT have control over their computers? I can't think of any reasons that would improve individual programmer productivity. |
| Wed 13 Mar | Dario Vasconcelos | I really think that with all the things you have to keep at the top of your head and the tools you need to develop sophisticated applications, there is an actual need to install utilities, reference guides, etc. In my machine, I have winzip, a sniffer, two java decompilers (sometimes one will make the job when the other won't), a news reader, a graphical FTP, a custom telnet that will do ssh, a graphical utility (to measure, crop and view images), gnu diff, vim, a utility for global replace of strings over directories, etc, etc; I wouldn't live without most of these gadgets and not many of the other programmers here use them all. But when I used to do C++ Windows programming, the mixture was even worse. So, I would say that is a bad thing to forbid administration permissions to programmers. I still can't think of a situation where you'd find REAL troubles if you'd let your programmers configure their machines. I can only guess you mean denying authorization on them upgrading their programming tools: that can cause a real mess, but it is not a very likely situation if you have experienced programmers. |
| Wed 13 Mar | Jan Derk | Doug Withau wrote: 'Should programmers admin their workstations?' You don't thrust your programmers to admin their own computers. Yet, you do thrust them to design your applications and hack your source code? Strange... I've seen too many situations where programmers had to wait hours for the administrator to show up from lunch to make a trivial change. Or the guy went home early... It's inefficient. If your administrators are available 24x7x365 that's a little less inefficient, but still inefficient. The psychological part is worse: Not many programmer will be happy campers, knowing that you don't thrust them with something that most of them consider trivial. Having fun and feeling in control keeps the moral higher. And high moral is what gives you high productivity and quality code. Sure tell that you don't like them to mess up their computers. But I would say: any programmer that regularly causes trouble by messing up his computer, should not be a programmer at all. |
| Wed 13 Mar | Rich | I do believe that in general programmers are much better at computer admin/maintenance than other users. I would hope so. Sometimes showing a bit of trust can go a long way in relationships within a team. I'm assuming everyone on your team are adults. Treat them like it. If they can't handle the responsibility, then it's a problem. |
| Wed 13 Mar | Bill Carlson | Okay, this is an effective troll and I'll take the bait. I suppose the question is only meaningful if you know whether you're talking about 'programmers' or 'engineers'. A 'programmer' being a soulless automaton whos job it is to append source lines onto a 15 year old COBOL file or change fixed constants when business rules change. Okay, lock his workstation before he hurts himself. An engineer, on the other hand, has the job of creating art on the canvas on bytes. Dramatic? Sure, but accurate. This person may hurt themselves, but stands to benefit from an open computer. It's narrow minded and egotistical to assume that the manager can anticipate every utility and application that would be useful to a given person now and in the future. Or even evaluate whether a given program has value. This kind of thinking goes right along with 'you must wear a blue shirt and kacki pants', 'no personal effects on the desk', 'no more than 15 lines in a function', etc. This thinking works when you want 100 people to do the work of 10 (big company), not when you want 10 people to do the work of 100 (small company). It all comes down to cultural precident. You're correct to tightly control which libraries/DLLs get linked in, which APIs are called, and which technologies are used. But we're not laying brick here. A bucket of morter and a fancy spatula are going to cut it for some, but not others. |
| Wed 13 Mar | chunks | Is this a troll? I have never worked in a situation where developers did not have control over their own workstations. |
| Wed 13 Mar | mackinac | There can be so many variations in system installations that it is hard to respond to this. In most of my recent work environments I had a Windows NT workstation. As long as I could install some extra tools that I wanted, such as XEmacs, I didn't have any problem with sys admins working on the basic OS stuff. With my current PC I have the admin password and can do whatever I want to. On one assignment we had HP-UX workstations administered by an IT group. For the most part we had the tools we needed and just let IT worry about admin. However, the sys admin group wanted the workstation placed on the desk tops. From their POV it was a good idea because it kept the machines out of dust on the floor. The developers protested because it took up precious desk space and was noisy. Is it worth quitting over? Maybe in a better job market. As a developer I prefer to work in an environment that is supportive. If IT is hostile to users that is probably a symptom of a broader problem with the company culture. I'd want to be somewhere else. |
| Wed 13 Mar | Damian | The admin where I work and I have a good understanding. It goes like this 'You do what you like on your PC, but if it breaks, you fix it' That works fine by me. Part of my job is evaluating new tools. If I had to call the admin over every time I wanted to install something, I would go nuts. I wouldn't be able to do my job properly, and the admin wouldn't be able to do his, because he would always be over with me being hassled about some thing I wanted to install. In the end, everyone would be unhappy. And yeah, in a workplace like that, eventually I probably would quit. It's like Joel's example in one of the articles about an admin hassling him to stop coding and clean up some space on the server, it is a waste of valuable time. Damian |
| Wed 13 Mar | anon | It depends. My first job was at Nortel writing telecomms code on a mainframe (which was shared with everybody else, naturally ... it was *fast* after 17:30): there I had no super permissions, used their standard tools, glass terminal, no problem at all, very tidy and professional. Here we now use PCs, and everyone administers their own ... except for the 'test' machines, the version control software (VCS) server, and a few other servers, which are actually administered by someone or some few of us when needed but which aren't just randomly hacked up by any/everyone. IT doesn't support our machines, they wouldn't even if we wanted them to: they support some standard configuration with email installed on it and not much else, not developer tools. I will insist on a standard build environment, for anyone who builds non-prototype software (which includes all developers): a specific compiler version and standard libraries, for example. I also insist that anything be buildable on any machine that has the standard build/tools environment installed: what this means is that if you're using *.LIB and *.H and *.TLB and all of that, these must be in the VCS. Special things (device drivers) have explicit 'how to install the build environment' instructions. I doubt that I need to relate any war-stories that might illustrate why this policy seems sensible to me; people are reminded 'why' occasionally if someone temporarily breaks this rule. Some people are early adopters, and some late; e.g. some still use NT v4 on their workstations, and some use XP; and various Solaris versions. A benefit of this is early (pre-formal) testing of the product, another is just to keep some people happy, also people choose their own source browsers and what have you. I don't know disadvantages. Some people (especially but not only testers) use Ghost or VM to run multiple O/Ses on one machine. To save money, we don't use standardized hardware; e.g. we don't throw away all computers whenever we buy one newer machine. Machines are hand-me-downed (everyone tends to have two, a more and a less powerful one, for testing our client/server software). Some but not all machines are expensive (multi-CPU NT, and Solaris), with the most expensive ones being in the test room only and administered by the testers. We had a couple of 'let's stop and look for all of the installed IIS servers in here' when a virus got inside our corporate firewall ... on three occasions. Now our test machines which must run IIS constantly are usually on a disconnected LAN, and someone I think is in charge of knowing about the remaining IIS servers and keeping them patched. Oh, people tend to be administrators of their local machine only, not of the whole domain; and on Unix we all know the root password (except of the VCS server which is administered by corporate people off-site, for which I'm thankful) and use it occasionally when needed (e.g. to install stuff) but we tend to develope and run our software there as normal users. IT administer some stuff: the corporate firewall and VPNs, the LAN cabling, the phone system, the email (client and server), the VCS (client and server, but not the contents of the VCS), corporate intranet and internet stuff; but they don't know our product and aren't competent to administer how we develope it. I can conceive of other environments that might be simpler or stricter (mainframe, simple Web, national security). We're an autonomous group of 20-60 people in a company of 6000. If OTOH we were smaller (8) or larger (200) then someone might (I don't know) be able to fully administer all |