last updated:06 Aug 2003 15:09 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 02 Feb 2003) | View Other Weeks
Down-Time, Burnout & Getting It All Done | Sun 02 Feb | Jeffrey MacDonald
Greetings, all... Im curious about how others projects are scheduled, with regard to moving from completion of Project A to the beginning of Project B. In my current evironment (single developer - me), there is an expectation that, if I complete Project A on Monday, I can be out of the gate working on Project B first thing Tuesday morning (which I have to get a jump on if I want to get to Project C by next Friday). And despite the fact that these projects are quite small, Im finding myself more and more burned out as time goes by. I really loved my job a few months ago, but as this cycle continues, I find myself enjoying it less and less, and it botheres me Im feeling this way. I guess I just need a little down time between these projects to flush my buffer & recharge my batteries. What are your thoughts on down time? Developers: Do you need this time & do you get it if you need it? [Project] Managers: Do you provide this time to your staff?
Sun 02 Feb | Sun Tan Stan | Why not just take some vacation time?
Sun 02 Feb | Phil | Why not writing specs and letting low cost people implement ?
Sun 02 Feb | Chris McEvoy | Lie about how long the work will take so that you can create some slack time. Employers would love it if every second of our time spent in the workplace could be used 'productively'. I have to have time just to 'think and relax'.
Sun 02 Feb | Bored Bystander | I live in a technology-hostile redneck belt. Many managers and supervisors in my area come from capital goods and auto worker environments and they're used to squeezing the poor SOBs working for them until they break. So I am well familiar with where you're coming from. This kind of pressure comes from two kinds of polar opposite company owners: the kind that don't respect applied intellectual effort, and those who are former techies themselves who feel that every employee of theirs should work at the pace of a partner in the organization. YES, you absolutely need slack time. And if you're working at such a pace, where does your self-management time fit in? IE, the time needed for you to plan and understand your current or next task, that is? It sounds to me like you're being used as a code mill or code machine. You need to pace yourself. The fools that are saddling you with such an excessive workload need to understand that their rapacious greed can and will break the goose that lays the gold egg. IE: you could simply quit and go contract elsewhere and work at a similar intensity and make one *heck* of a lot more than you would as a regular employee. I heartily second the notion of pushing back on your work by preallocating 'zone-out time' and 'planning time' and interlacing these activities with your workload. Defend your personal interests aggressively. Nobody else will.
Sun 02 Feb | Anonymous Coward | When I have my manager hat on I always plan on 15% 'slack'. So if the company has a nominal 40 hour week, I assume that a person assigned to me can produce 34 hours of work. Further every project plan has a contigency of 25% to 50% depending on the risk or complexity. When things go according to schedule, then the extra time is used to do lower intensity tasks: code review, refactoring, optional requirements, and better documentation. If we are still ahead, then I split the time remaining in half, give the team some time off, and give the client a discount.
Scrolling in web based applications | Sat 01 Feb | John McQuilling
We are replacing a Powerbuilder app with web enabled java based system. One area where we are having trouble is supporting scrolling large amounts of data. In the PB app we could send all the data requested to the app and let the user scroll as needed. In the new app we have to manage the scrolling at the server which currently means we retrieve all the data and send 20 or so rows to the user. When he scrolls we do the same process all over and send the next 20 rows. The extra work on the database is about 10X. What solutions are there to control scrolling on web pages? (We do not want to save any state on the server.)
Sat 01 Feb | Matthew Lock | Do you mean database paging? In some databases like PostgreSQL and MySQL you can retreive certain rows in a query by adding the words LIMIT and OFFSET to the SQL.
Sun 02 Feb | mb | or push the data to the client. that's what databinding is for. you can use xml for databinding. of course you have to specify the problem you're solving. slow data connection so you don't want to send all the data? etc.
Sun 02 Feb | John McQuilling | The problem we have is that three months of the data can be 200,000 rows. We are retriving the data and sorting it before we determine which rows to send back. We tried just sending all the data back but sometimes the browsers crash with that many rows.
Sun 02 Feb | Wayne Venables | As was said above, the LIMIT and OFFSET style keywords are used for this kind of web-based scrolling. If your database doesn't have those keywords, then you should be caching the query. It's probably still going to be painful; since on each request you have load the entire cached query from disk -- but it's better than retrieving all the rows from the database on each request.
Don't Define the Interface in the Database. | Fri 31 Jan | Dave B.
Has anyone worked on a project where the interface is defined and stored in the database? Does anyone here practice this on a regular basis? To further clarify: The window and its controls attributes ( x , y ) ( left , bottom ) etc etc... are stored in tables in the database and then dynamically created/loaded when it is time to display the window. It wreaks havoc on code readability and especially maintainability. It also takes about a million percent more time to modify the interface than if you could just simply drag the control via the VB IDE (or what have you). Hmm... I have to move this button to the left to make room for a button for a new feature we are adding. I cant just drag it because it is dynamically created. So I have to search through a plethora of tables in the database to find the one that holds its values. I then have to play around with these values until I get it right. Now, try resizing or (heaven forbid) adding a control... The genius programmer who coded this had the foresight not to document any of it. I hate looking through hundreds of tables in a database to change the location of some button on a window because some shmuck programmer thought they would be slick and (encrypt)define the interface in the database to make their code tight. Not to mention that there wouldnt be hundreds of tables in the database if the interface wasnt defined in there. Very poor programming practice in my opinion. Lesson: Dont define your Interface in the database. Agree?
Sat 01 Feb | Alberto | I have worked on a few meta data driven applications, typically if you write a good administration application for allowing users to define the meta data in a meaningful way they should be shielded from the complexities of the application, they define what they want in a way they understand and the application delivers it to them. Great for the user, harder for the developer, especially if the data can define a huge number of configurations. I nearly pulled all my hair out on one particular application about 4 years ago that I developed to do this. I feel your pain. In hindsight though, it's probably my proudest achievement.
Sat 01 Feb | Bored Bystander | This was perhaps the output of some junior developer who felt that he was being 'high level' by representing the GUI layout in the database. Also, we don't know what the developer may have been told to do by his management or the tech lead. IE: some development groups develop a cargo cult mentality of replacing common platform or user interface objects with their own layer of code. I once worked in a group that developed their own VB code to replace the existing VB data aware component logic... with their *own* (slightly different) data aware component logic. It ran MUCH slower than native VB data aware components. Actually, you have the opportunity in hand to correct this issue. You could simply write a piece of code generation logic that walks through the database and writes out the form layouts to resource or layout form files given the parameters in the database. Then you could load these forms into a new project and eliminate the databased form layouts for once and for all.
Sat 01 Feb | Bradzo | Dave Check this out. http://www.pinnaclepublishing.com/VB/VBmag.nsf/0/E8A264EF6CA5F1BD852568E00073BDEB Forget the example framework he lets you download - I've spent most of the day trying to understand it and get it to work, but I like the idea a lot. I'm sick and tired of doing UI stuff - and then the user wants that control moved over a millimetre, 'oh, and it has to be in the Trebuchet MS font, and it needs to be this really garish green colour.' (Forget what the textbox content is *actually*displaying - Mr Customer, is it displaying the correct content in context? It is? Oh good.) Argh! Anyway, I wrote a form designer that lets you add controls and move em around, so storing the locations etc in the database isn't such a big deal - just getting them out and building the form at runtime is a performance hit. Here's another form designer: http://www.vbthunder.com/default.asp?srccat=16&srcname=User%20Interface I haven't tried it yet. There has *got* to be a better way.
Sat 01 Feb | Phibian | This is an area in which I am extremely interested. I have created several web applications where the interface is defined in the database to varying degrees (although there are not hundreds of tables for the UI - that would truly be nightmarish). The first application worked out really well, because the goal was to abstract out the complexity of building a form. So the user just enters in each line of the form into the database and creates the form on the website. Since the form has a rigid function and look, although the specifics on the form change each time, this was easy to automate. The next application used the defined interface on a limited basis not only to add new fields, but also to create the SQL necessary to update the database with the values for the code to work. In other words, if we decided to add a new field to the search form, I can add it to the UI table and not only will the field now show up, it will also work. That was pretty cool (and has saved lots of maintenance time), but as you can imagine, somewhat limiting, since the logic for the search had to be autogenerated. It also means that some forms are much more fun to change than others (as this was only implemented on a limited basis across the application) We've since tried various other ways of defining the interface in the database, with varying degrees of success. I've certainly run into the problem of too much abstraction, as well as difficulties handling sequences of screens (ie you start with a single field, based on the selection of the field, the UI will behave differently). But, for what it's worth - I still think it is a goal worth achieving if the problems can be overcome, because it makes it much easier to make the application entirely bilingual (important here in Canada) and because it makes it possible to put a UI manager on top of the database so that the client could then edit their own UI to a certain degree (I too think there has to be a better way ).
Sat 01 Feb | Steve Jones (UK) | I suspect that the implementation described in the original post was seriously flawed. There's no reason why you'd have loads of tables to represent the UI. In general, I believe that it is a good idea, for reasons already mentioned. I'm just embarking on an ASP.NET application for one of my clients that will be done in this way. The way I see it, is everything in the application is 'task-based', i.e. you can view the data (Insurance policies and claims, etc in this case) and then select a 'task' to perform. A wizard then guides you through the various stages to complete the task. This seems to work quite well, although I've only done some early prototyping so far. The read-only screens and the steps of the task wizards are easily defined in the database, as well as the rules, etc for permissions, inter-dependencies between objects, etc. I am intending to build a maintenance sub-system too, so that certain Users can go in and amend or add to the existing functionality. This will, of course, be task-based and use the database-defined UI rendering system.
Sat 01 Feb | John McQuilling | The problem is the lack of a tool to modify the user interface not where the data is stored. Without the IDE it would not be any fun to design a screen in Vb either. One area where the database design makes some sense is with fat clients that are installed on a lot of systems. Changing the client means installing the change on X machines. Changes to the data base affect everyone without touching the client machine.
Sat 01 Feb | Dave B. | 'The problem is the lack of a tool to modify the user interface...' Yup, that is obviously a part of the problem in maintaining this program. The other part is lack of documentation. '...not where the data is stored.' I disagree. If the user interface information had not been placed in the database to begin with, the program would be much easier to maintain. If there was a tool that would change the values in the database for you, that tool would only work in and be specific to certain situations/modifications within the program. It seems to me that this 'tool' would also simply be a reinvention of the wheel. If I could observe a well written application that makes use of this concept without negative side effects, I would consider changing my view. Until that time, I will not practice nor will I recommend the practice of defining the interface in the database.
Sun 02 Feb | Albert D. Kallal | There is absolutely zero problem with the user interface being defined in a database. What the heck do you think a VB form is? It is a bunch of objects on a screen. The position and attribute for each control is stored in a file. That file for purposes of arguments is simply a data structure. There is ZERO REAASON AS TO remove this setup and store the GUI in code? This is complete miss-understanding here. While there are a lot of 4th GL programs that generate code such as the older FoxPro, they all stored the screen designs in a database. In fact, I have OFTEN wished that VB worked this way (it creates the meta code in place of using a bunch of x,y values stored in a database). The meta code was used since it allows the design to be extended in a easier fashion then data strictures being written to a database, or stored in some array. (my forms package I wrote did use arrays, and I now understand why VB uses meta code to solve this problem). I have also used a good many 4th GL systems and systems that are template driven. However, the real key here is to provide good tools that let you built the GUI. (and more importantly modify the GUI). 4th GL systems fall on their face if you start modifying the code they generate. (since then, you can’t go back to the original database that defined the GUI..you are toast in that case). So, lets not confusion the great and good idea of storing the GUI in a database with some stupid person who does not provide the tools to edit that GUI. Storing the forms and templates in a database is about the best way one can go. The most popular GUI builders out there use some type of database to store the position of controls on a screen. The use of 4th GL systems to actually generate coded an compile it have gone the way of the do do bird. I hate to burst everyone’s bubble, but modern development systems all use a data structure to store the screen, and not actually c++, or VB code! Without question the software industry as a whole has been, and is moving in the direction of storing apportion data (the GUI and position of controls) in a database. Why do you think all of the game builders now use some script engine? Why does virtually every modem GUI development tool in the market store the GUI as data, and not code? Answer: You can add new features to a screen (or a game script) and not have to re-compile the whole application. You can move a text box on a screen, and not have to re-compile 100,000 lines of code. Do any of the modern screen builders, and especially the report writers store the results in code today? Anyone, please correct me here! Delphi, Kylix, VB, ms-access, etc etc etc and the list goes on an on ALL STORE THE GUI stuff in a data structure that is retrieved. These data structures are then used (interpreted) to produce the final application screen, or report. NO ONE stores the GUI layout in code anymore. The industry did that 20 years ago. Surly one is not suggesting that we through out this concept of storing the GUI in a data structure and go back to the 4th GL code generators of yesterday? (they certainly were popular with products like dbase, and FoxPro was a 4th gl). Since every modern development system has adopted this idea of storing the GUI in a database (template), then should not we all do this also? Of course we should!! Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Sun 02 Feb | Dave B. | 'What the heck do you think a VB form is? It is a bunch of objects on a screen. The position and attribute for each control is stored in a file. That file for purposes of arguments is simply a data structure. There is ZERO REAASON AS TO remove this setup and store the GUI in code?' A VB Form is not stored in a relational database. What do you mean store the GUI in code? 'However, the real key here is to provide good tools that let you built the GUI.' Point out a user defined tool that is not specific to one problem or that does not only allow modifications of certain parts/features of an interface. I am not talking about Access, Fox Pro or any other database specific Forms. I am talking about an application coded in Visual Basic 6.0 talking to an Access 97 database via DAO 3.51. 'So, lets not confusion the great and good idea of storing the GUI in a database with some stupid person who does not provide the tools to edit that GUI.' I agree a tool would make it a lot easier to edit the GUI, but why re-invent the wheel? Why not simply use the VB editor to begin with? I do realize that the GUI configuration has to be stored somewhere, but that place is not in the relational database. Let VB store the information so you don't have to store it again in the database. VB is in fact the original tool. Why build a tool on top of a tool? The fact is every GUI based program has to store it's interface information somewhere. One of the best implementations of a GUI system is in the MMORPG game Everquest. It uses XML to define and store it's interface. If you want to modify the interface you edit the XML, but it surely does not store that interface information in the relational database of game specific information. Even reducing compile times or making somewhat of a 'thin' client are not good enough reasons to convince me that storing interface information in a relational database is worth it. You simply duplicate and re-invent things needlessy.
Sun 02 Feb | Wayne Venables | ...one should also point out that dynamically creating and positioning controls in VB is very buggy. I once did this for a very large application that consistent of many long forms. It was a very large data collection application and the amount of information needed to be filled in by the poor users was incrediable. The forms were in scrolling windows w/ tabs. I didn't want to code and position all those form fields by hand (especially since the information that needed to be collected changed daily on the project) so I built a system that dynamically built the forms. The app could only be run about 5 times on a Win98 machine before it ran out of resources and the computer had to be rebooted. Further, I had to 'cache' the created form elements and reuse them rather and create and destory or you couldn't get through more than a few screens before it ran out of resources. VB, it seems, likes to allocate resources but it doesn't like to return them! I highly recommend against it.
Sun 02 Feb | WNC | Wayne, Don't get me started about MS VB forms and controls. In MS Word they have the 'fast format button' that works wonders. If they had the same button in VB6 it would be a miracle worker. Yes, with some effort I could probably design something like this, but Aggggg, I have several projects I must complete first! I can think of a million little things about designing a UI in VB that makes me want to destroy things. I hate it that the pre-packaged data linkage controls don't work better. You end up coding all your data connections over and over again... That is unless you've learned a quicker way to do it, which I have not.
Sun 02 Feb | Bradzo | Dave You mentioned XML - something like this? (my creation, copied from IE 5.5 - no indentation) - - - etc etc Then, use some XPath to get the values.... sXML.async = False sXML.setProperty 'SelectionNamespaces', 'xmlns:xsl='http://www.w3.org/1999/XSL/Transform'' sXML.setProperty 'SelectionLanguage', 'XPath' On Error Resume Next sXML.loadXML ControlValues If Err.Number <> 0 Then MsgBox Err.Description Else lngType = 0 Dim txt As TextBox Dim strValue As String For j = 1 To colIDs.Count Set iNodeList = sXML.selectNodes('/OBJECTS/OBJECT[@ID='' & colIDs(j) & '']/PROPERTYLIST/PROPERTY') Rem Rem now, get the CTRLTYPE node (because we have to know that first) Rem For k = 0 To iNodeList.Length - 1 If iNodeList.Item(k).nodeName <> 'ID' Then If iNodeList.Item(k).Attributes.getNamedItem('NAME').Text = 'CTRLTYPE' Then lngType = Val(iNodeList.Item(k).Attributes.getNamedItem('VALUE').Text) Select Case lngType Case 1 'textbox Load txtData(txtData.Count) Set txt = txtData(txtData.Count - 1) txt.Text = '' txt.Visible = True etc etc and then go set properties... Select Case iNodeList.Item(k).Attributes.getNamedItem('NAME').Text Case 'VB_LEFT', 'VB_WIDTH' strProperty = iNodeList.Item(k).Attributes.getNamedItem('NAME').Text) strValue = Format(Val(iNodeList.Item(k).Attributes.getNamedItem('VALUE').Text) * Screen.TwipsPerPixelX) If strProperty = 'VB_LEFT' Then txt.Left = Val(strValue) ElseIf strProperty = 'VB_WIDTH' Then txt.Width = Val(strValue) End If etc etc It works fine - just really slow on my box. I've also tried CallByName as in: CallByName txt, strProperty, vbLet, strValue setting strProperty to the actual property name ie: VB_LEFT becomes simply LEFT. BTW - the XML is being pulled from tables in a database that specifically support the concept. (1 row per property, just like in the VB .frm file), but I'm thinking seriously of removing all the form/control property stuff out of the DB, and perhaps just maintaining the XML file on disk. Alternatively, a .frm file parser would probably be even better - the .frm file format is a published interface - design the form in the VB IDE, and save it with the app. App starts up, reconstructs the form from the .frm file at runtime. You could even include remarks in the .frm file that the app could read to set certain things up, like populating picklists etc as its building the form (an idea from the URL I posted)
Sun 02 Feb | Dave B. | Bradzo >> 'You mentioned XML - something like this?' The problem that I see with that Bradzo is that you are still dynamically creating the interface and are doing so using VB, which is, in and of itself a RAD design tool. As Wayne mentioned his application is memory and data intensive and brings windows to it's knees. This happens with the application that I am working on also, and I am convinced that it is because of the silly interface in a database thing. When a form is called for, a recordset with interface information is loaded and then parsed and the interface elements are dynamically created, positioned and displayed through VB Code. Sounds good in theory, but when you have one event handler for each type of interface element created using this method, it results in long 'case' or 'if' statements that become sloppy with an increasing number of situations that must be handled. You are also increasing memory requirements. On top of that the author of the program found his 'ingenius' solution did'nt cover every situation and coded 'around' his own interface code, did'nt write an interface manager or document any of it. So, Instead of simply loading the form you designed in VB via the VB 'Load' statement, you have created a monster that uses many times more memory and system resources by needlessly accessing a database, and dynamically creating these elements. All of this is to avoid the use of the original tool (i.e. VB). If there ever is a need for such a beast, it would probably be best to use a systems language such as C++ to build it and even at that it would be very specific in nature. As for XML; In my open the Everquest XML defined interface works well for several reasons. 1. The code for the interface is written in C++, a systems language, which is not garbage collected and so resources are managed by the programmer. 2. XML is easily distributable over the internet (EQ is an online game) and has a natural hierarchical structure. 3. It is 'relatively' easy to modify the interface to suit your needs. Would I go out and design an interface defintion in XML for a VB project, absolutely not.
Sun 02 Feb | Joel Spolsky | If you're really determined to do this why not write a parser that generates .FRM files out of XML? Actually if you look at the .FRM files they already contain pretty much what you're trying to recreate here...
Sun 02 Feb | Bradzo | Everyone, So it seems the general consensus is that creating forms dynamically at runtime is a bad idea. So, how does everyone manage changes that come back from the customer? ie: move this textbox over 1 millimetre, oh, and we need an email field too. Can you bung that in and have it back to us this afternoon? Hello change management. I suppose I could do all that, and then charge them for my time, but I guess, like me, you have had 'arguments' with the customer about what you charge for adding that one field (because they have absolutely no idea of what is involved in adding that one field) Besides, I have a life too, and I want to enjoy it, not stay up till midnight coding. Hell, I've even had customers say that they don't like the font I used on a report - regardless of whether the report is actually correct (*that* doesn't seem to matter). Ignore also for the moment Mr Customer how much time went into creating the report in the first place. All they see is how it looks. Ok, I understand that, but don't whinge at me about how much I'm charging you when I'm up till midnight changing your application because you needed it last week. Argh! I think I'll just go mow lawns for a living.
Sun 02 Feb | Albert D. Kallal | >>>A VB Form is not stored in a relational database. What do you mean store the GUI in code? This is exactly my point. It could have been! The fact is that VB stores the layout of the form some where (why do you care where? Why is this a big deal?). You are NOT the one who stores and manages this data!!! The forms designer in VB6 deals with this. Why would it be bad if that data was stored in a database? Why would you care? You would still never have to look at the actual layout data anyway! My whole point here is that every development system (and that includes VB6) stores the frm data in a structure. Of course that structure in VB6 is not a database, but it well should have been, and further it COULD HAVE BEEN. Fact is, if it was stored in a database, you would have incredible increased flexibility here. You would be able to do queries and search/replace attributes and proerties of each contorl (further, you could modify several forms, or even all forms in the system with one command!). You would also be able to view/edit the controls in a datasheet view like excel. The advantages of storing layouts in a database are far too long to explain here. You then can even generate reports based on screen data for documentation etc. Thus, the systems that I have used are just fabulous in this regards. The only down fall in the original posters issue is that storing “GUI” interface code is ONLY A BAD idea if proper tools don’t exist to edit that data after words!. Since every single major development system today in fact stores the form layout data in some structure, it is silly to state that one should not store the GUI form layout data in a database?. This is EXACLTY HOW most applications SHOULD work. What I am saying to don’t shoot the concept of storing the positions of controls and their behaviors in a database. That is certainly the way to go. The fact is the VB6 does store the position of the controls in a data structures OUT SIDE of the code. That is what I mean by saying that the forms are not simple straight code, but a bunch of values storied away some where. So, I am simply saying that the idea here is that is is a very good idea to store application data such as forms layout in some data structure rings true. Every single major development platform in fact does this. Of course, since we already have a form builder in VB6, then it is stupid to create your own. Unless of course that new one is better or provides features that the existing one does not have!!. Again, this whole concept only falls on it’s face when the proper tools ARE NOT included with the approach! If the original comments are don’t re-invent the wheel when it is not needed, fine. If the original comments are placing screen layout stuff in a database is dumb WHEN tools are not provided again, then I have no beef here. However, I totally disagree with the concept that screen layout stuff should not be stored in a database. It most certainly should. However, if the GUI designs tools that create the interface forms don’t work with that database then you have a hug without the kiss! It is a half solution, and then of course we have some debate here. The debate is thus now not storing the GUI layout in a database as one should, but the debate is what tools, and what benefits occur when you do this. If you have the right tools and the forms layout are stored in a database, then the concept wins hands down every time. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Fear... | Fri 31 Jan | GiorgioG
This is scary stuff IMO... http://www.businessweek.com/magazine/content/03_05/b3818001.htm
Fri 31 Jan | runtime | Even if the US standard of living is reduced, I have to believe that the greatly increased competition (of companies and individuals) will accelerate technology growth. That will benefit all of humanity, not just people living within an arbitrary line on a map. Won't companies and workers (around the world) work harder to innovate if there are 10x or 100x the number of competitors (and customers)? Maybe US companies and workers have grown complacent. Where are all those fair-weather libertarians now?
Fri 31 Jan | Bored Bystander | Strangely: the cost of living in the US, the access here to basic human necessities such as medical services, rents, and health insurance, and interest rates on existing loans, are not subject to the economic laws governing this emerging one world paradise. That's what so great about this new world order. We techies are being ordered via the marketplace to be lean and mean (think skeletal) - while profit margins of every other type of business on which ordinary people depend, stubbornly remain pegged where they were prior to the offshoring revolution. It's good for our souls. We've been spoiled FAR too long.
Fri 31 Jan | Bill Carlson | In order to know whether to be worried, we need to know what we're competing against. Does anyone have any first hand knowledge of how good the 'average' Indian engineer is? Please bear with me; my question is not racially motivated. If you value worth on several axis: Quality of education Varied work experience Raw intelligence Personal integrity Willingness to work hard Ability to communicate Domain knowledge Where does our competition stand? In the U.S., when I think of a project manager, I picture someone who has seen countless projects, knows software from the traces on the circuit board all the way up through knowledge of the sales force that will sell the eventual product. Someone who's worked with varied personalities, can spot when something isn't going well and knows how to make it right. Someone who's not 22 years old (like the example in the article). How many successful, _large_ projects that you've been involved with didn't have people working on them that had 10 or 15 years actual work experience? For me, it's zero. Are there enough of these people in India _right now_ to deliver on a large project? Again, the numbers cited in articles like this are scary. We know how much less the Indian engineer costs. But, does anyone know how much he/she is capable of delivering per capita? If it's a large amount, then yes, we should be scared. But how do we know?
Fri 31 Jan | Sarain H. | Hey guys, After talking with you guys about opportunities in India a month or two back, I took my yearly vacation in India. It wasn't as I expected actually, it was way more modern than I expected. Very nice. Had a good time and got a job offer at $38k. It's less than half what I'm making here near Redmond (not at MS, another place), but it looks like I can live really well on that much in Bangalore. Geesh, did you know that like practically everyone in India speaks English? Culture shock? Hah! The people are way more polite than what I'm used to and the food is really good and pracically everything nontech is really cheap. Anyway, dudes, I'm outta here, this will be my last post but I wish you all the best -- I'm off to live my dream!
Fri 31 Jan | sumit | to Sarain.H 38K...USD? you will be a millionaire many times over.... you can live like a king on that By the way I'm from India, working in Canada, now unemployed as a software engineer.I am thinking of going back to India...do you have any leads?
Fri 31 Jan | PC | If this trend leads to increasing unemployment in the US and the economy keeps getting worse, Americans will start to resent it. If the big US corporations increase their profits by destroying their own country, they are nothing but parasites, right? And I would think the government would eventually take some kind of action to stop it. Another possibility is that as salaries and jobs inrease in Asia, the cost of living in their high-tech areas will rise. And as salaries decrease and unemployment increases in the US, our cost of living will lower. Then we will be able to work for less, and the jobs will return.
Fri 31 Jan | WNC | One possibility is that our nation will actually prosper more from these other nations entering into prosperity. Our only drawback is our huge taxes. If we could moderate our tax system a great deal, we would have a good chance of remaining competitive.
Fri 31 Jan | Biotech coder | I liked this part of the article: 'The first wave started two decades ago with the exodus of jobs making shoes, cheap electronics, and toys to developing countries. After that, simple service work, like processing credit-card receipts, and mind-numbing digital toil, like writing software code, began fleeing high-cost countries. Now, all kinds of knowledge work can be done almost anywhere.' Apparently, to the authors, we are all doing 'mind-dumbing digital toil' and are not considered knowledge workers like radiologists and chip designers. Hm.
Sat 01 Feb | PC | [Our only drawback is our huge taxes.] I can't understand why people with incomes between $50k and $100k aren't going insane with anger about the US graduated income tax. If you make well over $100k maybe you can afford to pay a third of it in tax. Under $100k is middle class, not rich, but we are taxed just like the rich. It's demoralizing and outragiously unfair. Why don't the presidential candidates who actually have a chance of winning ever talk about getting rid of the graduated tax?
Sat 01 Feb | T. Norman | 'One possibility is that our nation will actually prosper more from these other nations entering into prosperity. Our only drawback is our huge taxes.' Which country are you talking about? The USA? Other developed countries, including Canada, Japan and those in Europe, have higher tax rates than the USA. How would you like to pay 30-40% income tax plus a 15% VAT on everything you buy? Sure, American taxes are higher than Americans want them to be, and they could be lower if there was less waste in government. But they aren't 'huge' enough to put America at a competitive disadvantage compared to other countries.
Sat 01 Feb | T. Norman | 'Why don't the presidential candidates who actually have a chance of winning ever talk about getting rid of the graduated tax?' Because the majority of the voters fall in the middle and lower tax brackets. Secondly, many of the rich aren't that opposed to it as you think. Some of them admit to being thankful to live in a country that enabled them to earn over $100K (as they know they almost certainly wouldn't be making nearly as much in Haiti or China), that they don't have a serious problem paying 1/3 of their income in taxes. I don't think I'd have much of a problem with it either, if I were making over $100K. Others don't pay as high a percentage as you think, because they can hire accountants to help them take advantage of numerous deductions or find ways of keeping the money in secret offshore accounts.
Sat 01 Feb | Stephen Jones | This question keeps coming up with alarming regularity, and it seems we ought to have a forum FAQ so that I could just refer to my previous posts by number. Let's take Bill's questiona: >>>>>> Does anyone have any first hand knowledge of how good the 'average' Indian engineer is? Please bear with me; my question is not racially motivated. If you value worth on several axis:<<<<<<<<<< Quality of education - education in what, for what, compared to whom and if you left school at 16 and anyway and you're from the USA whose education system is ranked 37th in the world does it matter anyway? Varied work experience - See comments further down, though on wonders how much varied work experience all the dot commers had straight ou of school - or indeed did any of the names that made Digital, Yahoo, Microsoft, Apple, Hotmail (Indian anyway), Napster and a whole lot more. Raw intelligence - No evidence on this one, but the fact that I have never seen an Indian ask this kind of stupid quiestion suggests they compare favourably. Personal integrity - Do you seriously think this has any place in the workplace? And do you think the average British/american programmer has it? If you do yoo're clearly lacking in the attribute immediately above this one. Willingness to work hard - Look at the salaries alternative jobs pay in India, and this one decides itself. Ability to communicate - With whom and about what? Pretty hard to talk about an average here though. And do you think that the software companies most people on this forum work are examples of perfect communication. Domain knowledge - Again see comments below; but it is doubtful how relevant this is for the average engineer on a large software project Where does our competition stand?<<<<<<< There are going to be two kinds of IT work that will be outsourced. The first kind is the drudge jobs - OCR'ing all the books in Yale's library (done by Cambodians for $20 a month I believe) and the second kind is large projects for banks and multi-nationals that can be outsourced whole. If you are making a database program for a company with thousands of branches in the States and throughout Europe you're going to be outsourcing it wherever you do it. What won't be outsourced will be the small jobs that require presence on site, and those jobs that require specific domain knowledge (customizing software for a small chain of local hotels, or the local school district). And these jobs are the ones that are on the increase because they can't be automated. Thirdly there will be the jobs that could be outsourced but won't be because the cost of finding people trustworthy enough will be greater than any savings made by outsourcing. Anybody who is worried though ought to be honing up on their sys admin skills and take a quick look at VBscript. The final thing to bear in mind is that the purpose of computing is to get rid of the worker. Any model that worries about the cost of individual engineers is seriously flawed in the long term. The main problem to expanding in India is in fact the atrocious telephone service and the low proportion of PC ownership, let alone internet connectivity. We need at least two sys/admins VBA database admin for a new training centre. I can interview in India, and have loads of contacts, but the problem is that they have not had the opportunity to work on the hardware.
Sat 01 Feb | anon | Stephen Jones writes: 'Personal integrity - Do you seriously think this has any place in the workplace? And do you think the average British/american programmer has it? If you do yoo're clearly lacking in the attribute immediately above this one.' I, for one, don't delude myself by believing that anybody has personal integrity. When it comes down to it, we're all very much alone in this universe, and the bottom line is, in the end, we're all out for ourselves. It's about time that the human race acknowledged this, and rid itself of the fairy stories about altruism and personal integrity. Anyway, I notice very disturbing trends in America right now. My manager was an Indian who started her tenure as manager with five Americans on her staff. Now, several years later, she has only Indians on her staff with all but one of the Americans being laid off. She fought very hard to facilitate this. Does this mean she has no personal integrity? I think not. She is acting in a way that is perfectly rational, and reflects a pride she has in her country. Americans on the other hand will be fired immediately if they show any preference for people born on their own soil. In fact, an American manager will get a raise and a corner office if he fires a whole lot of Americans and gives their jobs to India.
Sat 01 Feb | GiorgioG | All I can say at the moment is that it feels like very dark times as an American. The whole IT/overseas issue aside, I feel like we've lost our confidence. It might be a combination of the last 3 years of bad economic times, the 9/11/2001 event and today's Shuttle mishap.
Sat 01 Feb | Bella | > Now, several years later, she has only Indians on her staff with all but one of the Americans being laid off. Does this mean she has no personal integrity? I think not. She is acting in a way that is perfectly rational, and reflects a pride she has in her country. Another slant: She may now be running a much tighter ship with better synergy on her team. She is acting in a way that best suits her EMPLOYER. This bodes well for shareholders, who ultimately, own the company.
Sat 01 Feb | Stephen Jones | >>>>> Anyway, I notice very disturbing trends in America right now. My manager was an Indian who started her tenure as manager with five Americans on her staff. Now, several years later, she has only Indians on her staff with all but one of the Americans being laid off. She fought very hard to facilitate this. Does this mean she has no personal integrity? I think not. She is acting in a way that is perfectly rational, and reflects a pride she has in her country. <<<<<<<<< Much more likely to stem from insecurity; it is unfortunately all too common for a manager to try and get rid of all those who have been in a company longer than him/her. Another explanation could be the extended contacts that many Indians have. Do remember that 'a few years' is a long time in any field, let alone IT, and it's possible that much of it is simply filling natural wastage with her own contacts. I work in the Gulf, and you see this behaviour with all nationalities, not just the so-called 'South Indian mafia'. In fact I would say the British and Americans are among the worst for showiing this kind of behaviour. Maybe it's someithing generic to expats in any culture.
Sat 01 Feb | Vincent Marquez | Ok, this is the way I look at it. There are ton of crappy american programmers. There are a few good ones. Same goes in India. I'm guessing that indian programmers who come over here have to be at least average, most likely better then average. Meaning, we probably don't see the bad ones. Another thing to consider is, some of the workers from India that sit by me at my company have told me its much more laid back in america. They explained how they worked much tougher hours in india for much less pay. Are indian progammers smart? I don't think race has anything to do with it. Do they work harder? Thats certainly a possibility.
Sat 01 Feb | Bill Carlson | Mr. Jones should note that I was ASKING a question, not attempting to answer one. As has been countlessly enumerated on this forum, there are many factors that make one a 'productive engineer'. Many of these come from intrinsic technical insight and problem solving ability. Others come from years of work experience. I am biased neither for or against Indian engineers. My question, repeated in its condensed form is: 'What is the relative productivity of the average Indian development effort vs. the average American development effort?'. The title of this thread is 'fear' and we need to understand our competition in order to know if fear is warrented. Does anyone have specific personal experience with Indian development efforts?
Sat 01 Feb | PC | [The final thing to bear in mind is that the purpose of computing is to get rid of the worker.] [Well said. It's refreshing to know that there are still unbiased thinkers left out there.] The purpose of computing is NOT to get rid of the worker. The purpose is to make things possible that were not possible before. What do you mean by the 'worker' anyway? Isn't a worker anyone who accomplishes anything? How can you get rid of that? Why would you want to? If by 'worker' you mean people who do repetitive work that could be automated, maybe that should be gotten rid of. I'm not sure. But you have to stop and think about what the goals of our society are. Are we trying to create a world where no one has to go anywhere or do anything? That would be stupid and pointless.
Sat 01 Feb | Stephen Jones | >>>>>>>>'What is the relative productivity of the average Indian development effort vs. the average American development effort?'.<<<<<< Bill, Here you have got it right. The point is that the question about the 'average' programmer is the wrong question. A customer does not buy a good or bac programmer, he buys a good or bad product. or service, and in software development the relationship between the quality of the average programmer and that of the company's product or service is often tenous at best. Another point to bear in mind is that the reliability of American or European devellopment efforts has historically often been so horrendous that it is doubtful if the Indians would ever be given sufficient money to make a comparision. As for fearing articles buy second rate journalists too idle to question the cliches about the knowledge worker boom in the Third World, well, some people are afraid of anything.
Sat 01 Feb | Stephen Jones | >>>>>>>>>>The purpose of computing is NOT to get rid of the worker. The purpose is to make things possible that were not possible before.<<<<<<<<< Try selling that to the CFO. 'Our software devellopment strategy, for which you are paying millions of dollars, won't actually allow you to recoup a penny in productivity. , but it will allow you to do completely different things you hadn't thought of and which therefore will have nothing to do with what your business actually does.'
Sat 01 Feb | cheapo | The company that I work for has begun outsourcing projects to a team of Russian programmers. These guys charge peanuts compared to what my fellow developers are doing (we earn low 100K's). The Russian code, however is far superior than any of my fellow developers, and much better than a lot of the places I have worked at before. Might just be one in a million, but you CAN get high quality, VERY cheap software development done internationally/remotely. Sure makes me worried about my job, but that's life isn't it. The only thing you can do is adapt, learn and deal with it.
Sat 01 Feb | Seen it all | This whole offshore outsourcing thing should be seen as just another of the brilliant management initiatives we've seen over the '90's, like Y2K, energy deregulation and lax accounting. Eventually the problems will surface, and then there will be a demand for trouble shooters.
Sat 01 Feb | Ed the Millwright | OK, before this completely turns into the same old thread we see, what do you guys think about Good Old Yankee Ingenuity? So the Indians are more efficient and pleasant and invented the decimal system. So the Chinese have higher IQs. So the Germans make better cars and their trains run on time. Ok. But we invented the airplane and the transistor, landed on the moon, and have just done an amazing number of great and impossible things. Sure, we had to grab the best and the brightest from the rest of the world sometimes, but those folks did their best work once they got to America! We're the best aren't we at innovation? And creativity too! Frank Lloyd Wright. Steven Spielberg. George Lucas' ILM. Terminator I-III. Nathaniel Hawthorne. Herman Melville. Heck, even the Beatles didn't do their best work until after they visited America and got inspired by all our good looking women whom they rapidly started marrying! :) We're also the nicest folks, providing 60% of all humanitarian food aid in the entire world and providing free defense services for just about any one who asks for it. Rah rah America! The world will miss us dearly when we're gone.
Sun 02 Feb | mb | Reccomended reading: Snow Crash. Though I wonder how it would read today, it sounded like about 5 years in the future when it was written, and it's been ten years. But this quote popped up recently somewhere about the future of America. The result is 'the Invisible Hand has taken all those historical inequities and smeared them out into a broad global layer of what a Pakistani bricklayer would consider to be prosperity'.
Sun 02 Feb | Stephen Jones | >>>>>>>>>>>'the Invisible Hand has taken all those historical inequities and smeared them out into a broad global layer of what a Pakistani bricklayer would consider to be prosperity'. <<<<<<<<<<< In fact global inequalities are ever increasing. The difference between the poorest and richest nations at the end of the 18th century was in the region of 3:1 The industrial revolution increased this to about 5:1 by the end of the nineteenth century. At present the difference is in the region of 50:1 and increasing upwards. There has been a drastic increase since the 1960's that shows no sign of letting of. The increase in inequalities within nations is a more recent phenomenum. It varies from country to country but in the US the gap has been widening since the end of the 60's. A large proportion (possibly even half) of the US population is earning less in real terms than it was in 1970.
Sun 02 Feb | Taffy | > My question, repeated in its condensed form is: 'What is the relative productivity of the average Indian development effort vs. the average American development effort?' If the developers are 'Corporate slaves' then I imagine the quality would be about the same but the Indian would be much cheaper. If the developers are working for themselves then I think the quality of the American's product would be higher. I believe the quality of code is determined by three factors : raw intelligence, knowledge and motivation. I would say motivation is the most important factor. From my experience I don't think the average Indian programmer is less or more intelligent than the average American or UK programmer. The Indian programmer would have the edge in terms of knowledge. He would have read the same computer science books as the American programmer, but the Indian would have paid more attention in the Maths class. The Indian's weaker knowledge of how businesses work in the States would reduce his score a bit. When we come to motivation the American would be ahead of the Indian. Most Indian's do not choose their careers themselves - they are pushed into medicine, accountancy and computing by their parents. ( Don't tell me this is a racist generalisation I have met too many Indians who have told me this.) The more motivated American would think harder and longer about the code and he would be more likely to be the kind of person who codes for fun as well as work. >'My manager was an Indian who started her tenure as manager with five Americans on her staff. Now, several years later, she has only Indians on her staff with all but one of the Americans being laid off. She fought very hard to facilitate this. ' Cronyism is quite common in the consultancy world. It does happen quite a lot with Indians in the UK, but I would not condemn it. The Indians are so much cheaper the business will get better value for money. In regard to Bill's question about the personal integrity of Indians I would like to repeat the answer a retired international businessman gave me when I asked who were the most trustworthy people he had dealt with in his long career traveling around the world. He said the most trustworthy were the Indians and the least trustworthy were the Swedes.
Sun 02 Feb | Stephen Jones | >>>>>>>>He said the most trustworthy were the Indians <<<<<<<<< i'll bet you he wasn't talking about businessmen though!
Sun 02 Feb | raindog | Ed> So the Chinese have higher IQs It's probably off-topic, but I'm just curious - was is just a joke, or there is some scientific evidence of this?
Sun 02 Feb | Ed the Millwright | No joke, but it is separate from the issue of whether IQ means anything. The dumb people say no. :) Lots of research has been done on this issue and there was a book 'the wealth of nations', I believe, that showed a strong correlation, absent factors like communism, between national wealth and average IQ. Normalize the US to 100 and asian countries seem to be at 107: http://members.shaw.ca/delajara/NationalIQs.html Again, these measurements have been gone over and over in studies and are repeatable. The isseue of whether it matters is a separate one, although the experimental data makes a strong showing for the case that it does make a difference. The thing sometimes ovelooked is that the benefit of high IQ is to the society overall at least as much to the smart individuals. In other words, folks who disparage IQ because smart people don't always choose to make lots of money or become famous miss the point that lots of smart people tend (absent factors like corruption and tyranny) to benefit any organization, whether a company, a university, or a nation.
How to promote good incidental communication | Fri 31 Jan | Bill Tomlinson
In the recent thread about offices vs. cubes vs. one-big-room the main point of difference between the offices people and the one-big-room people seemed to be the quality of the incidental communications (defined as communications not specifically directed at you). For example: Good: Overhearing two co-workers talk about a bug they encountered in the foo routine and noticing that it is similar to the bug youre working on in the bar routine. Bad: Overhearing two co-workers talking about who should be kicked off the latest reality show and noticing that you dont care and youve just dropped out of flow. The people who liked one-big-room seemed to have a lot of the Good and little of the Bad. Whereas the people who didnt like one-big-room (like me) had had a bad experience with lots of Bad and little Good. This leads me to ask the community: If you have had a good one-big-room experience, what qualities kept the, if you will, signal-to-noise ratio of incidental communication good? (policies, procedures, attitudes, office arrangement, etc).
Fri 31 Jan | Mike Swieton | Some of the others mentioned that a break area is good. I don't care if people are discussing the latest stupid MTV shiney object, as they're entitled to take a break once in a while. But the crappy conversations they have shouldn't be in a place where they'll distract me. Break areas are good, as they can discuss the random crap there, and related discussion can be discussed when working in the work area.
Fri 31 Jan | Bruce Rennie | I understand where a lot of this concern comes from but, in my experience, when a team is fully engaged it's just not an issue. I work with a very talented team on an XP project. We use team based seating so everyone is in close proximity: developers, QA, product manager, etc. Sure, we talk about real life stuff. Sure, it's possible that people are sometimes 'disturbed' by this. But, overall, the benefit of the enhanced communications is so overwhelmingly obvious that no one has ever complained.
Fri 31 Jan | Vincent Marquez | The problem I have with working in an open area, (we have half-cubes at our work) is that marketing or Account Execs will come over to ask Someone sitting two seats away from me why the widget isn't doing what its supposed to do, and the next thing you know, there is a freaking 5 person meeting around a devlopers desk. Great, i'm happy that our PM and Account Exec team and our developer all finally got to talking about implementing widget b, but when i'm trying to debug its very frustrating. Any suggestions on how I could improve this sistuation?
Fri 31 Jan | pb | IM
Sat 01 Feb | Justin | Vincent, marketing and accounting people generally do not understand how developers work and why we need not to be disturbed. If challenged directly, they will usually apologise and say 'yes but it *was* only 5 minutes' or 'but you didn't have to listen', before doing exactly the same thing 3 hours later. ALL you need to do is explain to them. Better, get the development manager to do it. Get them accustomed to using email/IM (ty, pb). If you still have problems, you will need to explain more assertively in terms that they do understand. I am not advocating aggression, abuse or anger [hey, cool sentence - do I win a Joel prize?]. It won't work and you'll get disciplined. What they understand is money; request your manager bill them for development time lost (an hour * number of developers should do it). Don't expect to actually get any funds transferred. All you're doing is making a point. If you have a discrete environment, filled only with developers, request a physical barrier (door?) be put in
Sat 01 Feb | Justin | disregard last line - cut+paste error.
Sat 01 Feb | .. | Justin, a better technique for dealing with interruptions from account managers and similar people is: 1. when it happens, wander to your manager's office and start a conversation, dropping the fact that so-and-so has just come by and disrupted your line of thought, so you thought you would take the opportunity for a break 2. randomly go the said account manager, preferably when he or she is busy on something, and interupt him or her. Point out he or she does this to you.
Sun 02 Feb | John McQuilling | Another suggestion for Vincent's problem Have a near by office for conferences (one with a door). My project has one booked all the time for this. If the discussion involves more that 2 or 3 people make a rule that they go to the conference room. If the room is tied up go to another room or postpone the meeting
Work Dress Code | Fri 31 Jan | happy to be working
Ive worked in many environments from stuffy offices to tractor assembly lines. All of this was computer related work: developing, onsite testing, etc). Some places insisted on business casual, others didnt care, and others said anything but shorts. I now work in an place that doesnt really care what you wear, and I still choose to go business casual. What are your thoughts on the proper dress code for your workplace?
Fri 31 Jan | Better than being unemployed... | If you're meeting customers, dress how you wish to be seen. Meeting some 'very important people' with money to burn probably demands wearing something smart, but if we went to chat with a bunch of Microsoft technies wearing a suit & tie, we'd stand out like a sore thumb. Otherwise, as long as is doesn't cause health & safety related issues, wear whatever you want.
Fri 31 Jan | haberdasher | I've worked in the nerd room of big stuff corporations, big tech corporations, a start up or two, academia, and in my bedroom. No place has ever had a dress code. Most people looked really bad, at all times. I used to dress in standard hacker slob style (jeans and a t shirt) but have since upgraded to dress shirts and dress pants, for no other reason except to not appear to be a hacker slob. This guy makes some good points: http://www.koniaris.com/dress/dress.html however I don't agree with some of his advice (cream colored turtlenecks and black pants?). Probably the best advice is to have someone else pick out your clothing, the only thing that looks worse than standard hacker slob gear is dressing up in ugly dress attire.
Fri 31 Jan | Better than being unemployed... | This company here insists on shirt and tie. What a stupid idea. Over Christmas they said you could come in in jeans and T shirt. My productivity rocketed. Say no more.
Fri 31 Jan | Brad Siemens | Around here it is imperative that everyone is dressed... Well, most of the time.
Fri 31 Jan | Prakash S | last summer, I worked for a shipping company in Dubai, in the middle east. The working week is from Saturday to Wednesday or from Sunday to Thursday; depending on the company you work for. I used to get Friday & Saturday off, so Thursday, technically used to be 'Friday dressing'. Jeans, t-shirts, track pants, shorts! other days it was business casual, tie optional. Obviously, when I used to go to the ships used to wear coveralls, hard-hat, safety shoes, et-al!
Fri 31 Jan | Just me (Sir to you) | Every place has its uniform. Places that claim not to (think geek pit) usually look down on people wearing nice suits with shirt and tie (I said nice, not parody Hawaiian shirt with bow tie and shocking pink 70's disco flairs). The worst invention in dress code is the formal shop with 'casual Friday'. This American farce seems to be getting a foothold in the UK as well. Thank god we continentals are still spared. From what I hear not only do you have to spend money on formal attire, now you also have to go out and buy stuff that you would never wear at home but is just casual enough but not too boring so everybody thinks you are dull or not too slobby or not too eccentric ...
Fri 31 Jan | X. J. Scott | 'have someone else dress you' This is good advice. If you don't have a stylish girlfriend who wants to play dress up, then you can't go wrong with Brooks Brothers -- they are the one place I have found that will be straight with you about how to look professional to whatever degree you think appropriate. It just comes back to outsourcing that outside your key competencies. 'when clients come in' Myself I dress casually except when clients come in or when interviewing or giving a presentation or off to a trade show, then I spiff it up using one of my standard costumes. I think it's a good way to do it.
Fri 31 Jan | anon | Dress codes are for very, very tiny minds. They are for people who can't think for themselves. You can almost hear them crying out for someone or something to tell them what to wear... how to fit in... how to conform. This is why dress codes are so common in business environments, and not nearly as popular in techie or research land. Remember back in high school? Middle managers were those losers who couldn't grasp the subtleties of Algebra I. In college they majored in business with a 2.3 GPA and mastered the fine art of conformity at their frat houses, desperately striving for mediocrity. Now today, fitting in has paid off in spades because they are managers! They are now entrusted with the sacred task of enforcing the holy dress code. They will now share with all technically skilled people, the pedestrian joy of being average. ADHERE! COMPLY! CONFORM!
Fri 31 Jan | Just me (Sir to you) | 'This is why dress codes are so common in business environments, and not nearly as popular in techie or research land. ' Did you never notice the eerie resemblance the techies within one shop tend to have? Of course, you just happen all to like slogan print T-shirts and sneakers, that is all there is too it right? Peer pressure my friend. Humans are social animals. Even non-conformists tend to have uniform dress code hang-ups. Remember, dress code is not about do's, it's about don'ts.
Fri 31 Jan | Gwyn | This thread is very appropriate! Today my boss came and had a word. His boss had had a word with him. We have a dress code; shirt and tie except on Friday (when you must still wear a collar!). Anyway, I don't wear ties. I'm not customer facing so who cares. One of the anally-retentive permies (and there are a few here) complained that I was not following dress code hence the little chat. My boss is normally a good chap but he does lack balls to stand up for his staff sometimes and this was one such occasion. Thing is he's also full of 'making sure we only do things that provide business benefit'.. Not sure how forcing me to wear a tie is going to provide any business benefit. In fact it's more likely to have a cost associated with demotivation. When I complain that they can't get the heating below 25 degrees nothing is done. That's obviously less important than dressing right! despite the fact that my productivity definitely suffers when I start falling asleep! Management seem to want us to respect them but then come out with such wonderful examples of how stupid they are! I bought my boss a copy of 'Peopleware' but he's trying to avoid reading it. I previously bought him a copy of 'The seven habits of highly effective people' and he came to the conclusion that he's got the wrong character ethic. Since then he's been scared of reading these sort of books! It's a crap organisation and there's no way I'd want a permie job here. I only contract here because it's just a 15 minute drive from home.
Fri 31 Jan | Ricardo Antunes da Costa | Good point. Even jeans and T-shirt is a dress code.
Fri 31 Jan | Kyralessa | 'Dress codes are for very, very tiny minds. They are for people who can't think for themselves. You can almost hear them crying out for someone or something to tell them what to wear... how to fit in... how to conform. This is why dress codes are so common in business environments, and not nearly as popular in techie or research land.' Call me a tiny mind if you want, but I have better things to worry about with my day than whether I might be obliviously making a bad impression on a higher-up. Dress codes free me from that problem. I have my own preferences on what to wear on my own time, of course. But we all know that appearances do make a difference, and while you may say the guy who cares about appearance has a tiny mind, that tiny mind may be deciding whether you get a raise. Personally I'd rather have a dress code in place so that I'm more likely to be judged by the quality of my work than by my fashion sense or lack thereof.
Fri 31 Jan | Bill Tomlinson | One idea, that I'm trying out now, is to dress one small degree better than the average for the office. The idea being to project management's idea of being professional (note that I'm not saying that dress actually affects programming performance; it certainly doesn't). In the current employment climate conforming and even sucking up a little doesn't seem like a bad idea.
Fri 31 Jan | anon | Just me (Sir to you) writes: 'Did you never notice the eerie resemblance the techies within one shop tend to have?' No, I never did notice that. I've been in many shops without dress codes, and I'm in grad school, and I can honestly say that from my sample of techies, there seems to be no one uniform of choice. I actually wear collared shirts and dockers (albeit with running shoes) because I think this is amazingly comfortable. There are always those who do the t-shirt and jeans thing, but just as many people come in sweats or athletic gear. One thing I've *never* seen is someone wearing a tie. There is no practical reason for wearing a tie. If you wear a tie of your own volition, you're a moron or you're trying to impress someone who's easily impressed by mundane style rather than substance. Kyralessa writes: 'I have better things to worry about with my day than whether I might be obliviously making a bad impression on a higher-up. Dress codes free me from that problem.' Equivalently, Kyralessa might say: 'Please, please tell me how best to fit in! Help me not to offend the great corporate god of banality! I promise never to think for myself - never to innovate! Just please tell me how to be commonplace... Let's play golf.' Bill Tomlinson writes: 'In the current employment climate conforming and even sucking up a little doesn't seem like a bad idea.' I can't argue with this because I agree whole-heartedly. This is a very rational course of action. If I were in a place that had a dress code, I'd play dress-up for the morons too. My frustration comes about because somehow the in-duh-viduals in corporate middle management are always those least capable of plotting a course out of a paper bag. One thing, though... they all know how to leverage synergy.
Fri 31 Jan | Philip Janus | 'Act as the world is. Do not act as you wish it was' I agree with everything that's been said - people who think how you dress somehow impacts the code you produce are, in a word, morons. But they are still the morons that sign your paycheck and decide who to lay off. I've been a dockers and golf shirt guy since I left the military (13 years of uniforms will do that to you). When I interviewed for the position I just started (contracting with a gov't agency) my job was described to me as 'start off coding, then maybe pick up some responsibility as time goes on' On a whim I decided to play this one with the 'dress like you bill' mentality. So I've been in suits every day for the month I've been here. I'm now lead on three projects, own the development share portal, and I'm on the architecture group for the major development effort. Manymany people here defer to my judgement. While I would love to think my personality and skillset are the primary reasons for this, I can't help but believe that *looking* important has been a major contributor. Being judged by your talent works well for people who know you well enough to recognize your talent, but wearing ratty jeans and ripped t-shirts puts you in the position of having to overcome 'despite his looks...' from day one. First impressions (and continuing visual impressions) are a simple fact of human psychology. You can live recognizing this and decide you don't mind putting in the extra effort to overcome the perception your appearance creates, but you ignore that basic fact at your own professional peril. Hate it all you want, but that's the way it is. :/ Philo
Fri 31 Jan | Mark Hoffman | I think it's always interesting to see the way people respond to the topic of dress codes. Invariably, there is always someone who accuses those of supporting dress codes of being Nazis, sheeple, dimwitted or some such thing adjective. Today, anon provided that form of entertainment for us when he intimated that those that support dress codes have 'very, very tind minds.' Does wearing a coat and tie make you a better programmer? I don't think so. Does it make you feel more professional? I don't know that it does. I've written plenty of code wearing shorts, t-shirts and flip-flops while sipping a beer. I've also written plenty of code while wearing a $800 Italian suit. Personally, my clothing doesn't affect my productivity. It just really depends on the environment and what your position is. To say that a dress code is always bad is just as empty-headed as saying that a dress code is always good.
Fri 31 Jan | w.h. | So the Kleanthes Koniaris page seems to be oriented towards a person why doesn't know anything about fashion and whatnot. And that's fine, because, to a certain extent, a geek will never transcend the limits of geekdom to be taken seriously without a certain amount of dressing skills. But there are geeks who can dress nicely but choose not to. I make sure that my hair has been properly shampooed, my fingernails are neatly trimmed, I've showered, etc. Yet I still prefer to wear clothes in the level below where a tie is required. Or above that level, in the case of many traditional tuxedos. But I do dress nicer than usual for work. Thankfully my office is good about such things.
Fri 31 Jan | Dignified | Anon wrote: 'There is no practical reason for wearing a tie. If you wear a tie of your own volition, you're a moron or you're trying to impress someone who's easily impressed by mundane style rather than substance.' Hmm... it seems to me that calling someone a moron for wearing a tie is very similar to a dress code telling you that you can't wear khaki pants and a collared shirt with running shoes (which, do what you want, but that's plain scary). Point being, it's personal preference. Personally I like the feeling of a nice cotton dress shirt with a quality thread count and a tie around my neck. I don't wear it to code simply because my dry-cleaning bill would be nightmarish. And you may not think it's 'practical' to wear a tie, but maybe some guy got a tie for father's day from his kid, or as a gift from his wife, because she thinks he looks good in it. I'm not married, nor do I have kids, but I'd like to think I'd give people the benefit of the doubt before I called them morons for following a particular policy, even if I thought it was arbitrary. Also: 'I promise never to think for myself - never to innovate!' Is there some published inverted correlation between amiability towards following a corporate policy and the ability to write innovative code or think for oneself? I must have missed it. As much as I disagreed with the post, I still about fell out of my chair when I read the part about 'leveraging synergy.' Brilliant.
Fri 31 Jan | Dignified | Man, I've got to learn to type faster. You guys (and gals) are all beating me to my own points!
Fri 31 Jan | Danil | First rule of Poker: either you're there to cut the other fellow's heart out and eat it in front of him, or you are a sucker. When I was young, grand-mere tried to talk my into a suit and tie. You should dress up, don't you want to look nice for your mother, etc. etc. After about an hour of this, grand-pere chimed in with 'if anything goes wrong, it will be to your advantage that you appear older when dealing with the airline.' Oh, right. Given that people are people, and have these silly biases built into them, are you going to use that to your advantage, or are you a sucker? Being a sucker is a perfectly reasonable choice - a nice one, even - but you ought to make that choice consciously.
Fri 31 Jan | Kyralessa | ' 'Please, please tell me how best to fit in! Help me not to offend the great corporate god of banality! I promise never to think for myself - never to innovate! Just please tell me how to be commonplace... Let's play golf.' ' So, Anon, you can't innovate unless you get to wear what you want? I'd post anonymously too if I were you; what employer will hire someone who's only productive and creative when he wears the clothes he wants? You sound like me a few years ago, Anon. What you'll have to learn, as I had to, is to pick your battles carefully. If you want to make a case that the architecture to be used on a software project needs rethinking, or that your group needs different software tools, your argument just won't hold much weight if management remembers that you also argue about having to wear a tie. You don't have to convince me, Anon; I hate ties (and fortunately at my current job I'm not required to wear one). I'd love an ideal world where everyone could wear what they wanted and nobody would judge by appearances. Let me know when you find it. Till then you'll just have to decide which issues are important enough to spend energy on and which aren't.
Fri 31 Jan | Alberto | I have a simple dress code (uniform) that I wear to all places, I don't want to think about such things. Pants: Not jeans, not suit pants, comfortable casual trousers that are at least as comfortable as jeans. Shirt: Always a collar, never a tie, always comfortable. Shoes: Leather, clean. Belt and shoes match, shirt and pants don't clash, that's all that needs to be done! Then I forget about it.
Fri 31 Jan | raindog | I live in San Francisco Bay Area and have never yet seen a company that has some 'dress code'. No, jeans and T-shirts are not 'alternative' dress code. At my last company, people are wearing shorts, pants, or nice shirts and ties. Everything goes. One guy was aways wearing sport shorts and was bare-footed. It had something to do with some hidden Earth energies, you know. Typical Santa Cruz thing... if you know what I mean :)
Fri 31 Jan | w.h. | It's also the case that things like a lax dress code and aeron chairs and similar things became too much of an icon of dotcom excesses that nobody else wants to be like that.
Sat 01 Feb | echidna | Its' interesting that so many people presume management equates the wearing of suits with superior performance. Lots of management at software companies actually thinks the other way: they know what good developers and researchers wear, and are mildly suspicious of a developer wearing a suit. In 20 years experience in a wide range of industries, I've found that environments where developers routinely wear suits are environments that produce shoddy work.
Sun 02 Feb | Java consultant | 'What is the proper dress code for your work environment?' I am the newly hired java programmer of a large international consulting company. My client computer hardware. The dress code of the client is casual, and people routinely wear either jeans without collars or business casual. The morale is low, and productivity seems uneven, at best. The dress code of my employer, the consulting company, is business casual. I don't have a problem with my boss telling me how to dress, not when I'm in front of clients every day. I even think this client could beefen its dress policy, in the hope that a more professional posture viz a vis dress will induce a pick up in productivity and less idle office chat. Sometimes it gets too casual, but of course not every one wastes time. The serious folks around me wear business casual. I suspect they may have less fun than the casual types, but they get more done.
Sun 02 Feb | Patrik | I tend to agree here with Alberto, thats how I dress as well in the office, No jeans or t-shirts, normally I dont wear suits. I have had suits on a few occasions, I really broke the rules by having a nice suit and no necktie once :) My rule of thumb is 'dress to the occasion'. Overdressing is as common as underdressing.
volunteerinng | Thu 30 Jan | unemployed
I am out of work for sometime now, and was talking to a training institute, who have a consulting side.They have some software projects and a co-op program,where you work for 3 months in good projects, but basically for free. I think its a good way to keep up to date, and get a reference, while I look for employment. What do other people think?
Thu 30 Jan | Bored Bystander | It smells like exploitation. Some things just aren't moral. Making money off of unpaid volunteers is one of them. Be skeptical. I've never heard of anything like this in the IT field. Find out who the end client is and what the nature of the arrangement is. If the client is paying for the work, then you should get SOMETHING, at least reduced or eliminated tuition in return for your time. If the end client is being provided with the work essentially for free, IE, it's a non profit agency or a charity, then perhaps it's OK. Maybe this is a real 'work study' or co-op program in the same spirit as many universities offer. Or maybe it's a scam. Try to find out more and post details.
Thu 30 Jan | Mike Swieton | If you want to volunteer, why not *actually* volunteer? I.e. go to a nonprofit and offer your skills? As the previous poster said, this smells funny, but others here has said that they like working for nonprofits a lot.
Thu 30 Jan | Must be a manager | If it's a commercial operation, and they defined projects, then they're charging for them so they should be paying the people who do the work. You should report them. Don't even think of working for such an outfit: there's no way it would benefit you.
Thu 30 Jan | not my regular made up name | I'd rather hang drywall than whore myself out in such a manner.
Fri 31 Jan | Sam Gray | Even nonprofits sometimes pay for consulting work. Like the other posters here have said, if there's money involved, some of it should be going to you. If they just broker volunteer labor, that's cool, but since you said 'co-op,' it sounds more like an intern position. If you're not in college, don't intern. Use your free time to put together that application you've always wanted to write but never had the time to do properly. Or, find a nonprofit whose mission you like and volunteer. Especially if it's something that'd look good on your resume.
Fri 31 Jan | unemployed | What they say is that you work with 'cutting edge projects' and professionals for 3 months, plus they give you a reference. actually the link is - http://www.htinstitute.com/hcoop.asp it's for new grads they say,I don't know it seem's little fishy,although the institute is well known.
Fri 31 Jan | Bored Bystander | It's *really* unusual for co-ops to be farmed out w/o pay. Every co-op I've ever known has been paid *something*. Also, commercial companies don't ever expect to get free labor, no matter how cheap they are. My guess is that this co-op program is a profit center for the school pure and simple. Having said that, I checked the web site and it *looks* legitimate. However, it's definitely a for-profit commercial outfit, because it does not have .edu as a TLD. That clouds my impression quite a bit. If I were you I would want to talk with alumni (they should be willing to provide you with names & numbers willingly). I would also check with some business reference services such as the Better Business Bureau, the local chamber of commerce, any local IT industry organizations, and of course the accreditation organization that gives this school their accreditation.
Fri 31 Jan | Prakash S | Commercial companies are always vary of free labour, and would never ask anyone to do cutting edge stuff for them! surely a hoax.
Fri 31 Jan | Bella | Unpaid Internships have been around forever. It used to be called apprenticeship generations ago. Yes, it is exploitation. But it is flagrant. You know that up front. You aren't getting paid. Hardly a 'hoax'. You are getting experience for no pay. Take it or leave it. Hell, people pay $100,000 to get a college degree. At least you aren't paying THEM to gain your experience.
Fri 31 Jan | MaisOui | 'It smells like exploitation. Some things just aren't moral. Making money off of unpaid volunteers is one of them. Be skeptical. I've never heard of anything like this in the IT field.' Talk about your sweeping moral judgements (and about something that you admit knowing nothing about ). Whew! There are three comments I can think of to address your contention that making money off unpaid volunteers is immoral. a) Depending on how you define 'making money', there are many non-profits that charge fees for their services, while relying on volunteers. The fees tend to be lower, however, because they don't need to pay for salaries etc of the volunteers. That doesn't mean that the cost of running the non-profit is zero - in fact, HR costs are often quite high due to the number of people involved that must be managed, and due to the fact that volunteers are notoriously unreliable (since they are not being paid). b) Many schools (at all levels) like to provide real world experience to their students by soliciting real world projects from local businesses. Usually the students complete the projects in groups, in exchange for a mark. The businesses (in my experience) have to do a fair amount of work in terms of strictly defining the project, meetings with the students (and any clients, if applicable), mentoring and evaluation of the final projects. The schools and students like this approach because they have an opportunity to work on a 'real project' (instead of a mickey mouse project like they would have to do otherwise) and because they get a chance to make contacts with the businesses (prospective employers), and they get a chance to learn more about the industry in which the business operates. The businesses like it because there is free labor provided - but the primary reason most businesses participate is a desire to give back to the community. (The fact that the labor is free usually just about *offsets* the extra work involved in coordinating with students who don't usually have the level of technical expertise or working experience that an employee would) c) Unpaid co-op positions are quite usual at two levels of education here in Canada: high school (both teen and adult) and ITI-type colleges. I see unpaid co-op as a very positive thing, and about half of the co-ops we have used have come into this category. Many of the points I made about projects in a school setting are valid here. Unpaid co-ops (actually any co-ops) are very time-consuming to train. Because it is an unpaid position, it is easier for the schools to place students in interesting positions (and not the sorting resistors into barrels kind of positions). The company has much less risk involved and so is more willing to take on a student and also more willing to give students chances in areas they may be utterly unqualified to be paid for. It's all about getting real world experience, especially when you have none. It's also about learning about a particular industry and whether you are suited to a particular career (many students are 'try out' different jobs). Finally, it's about making contacts. In my experience, the best way to get a job - be it a contract with a client or an employment contract - is to 'know someone'. Many adults choosing the unpaid co-op route end up with paid employment at the end of their term. In fact, nearly the entire staff of one of our client's started as unpaid co-ops. Another employee (who works with us closely) was on a worker's comp position where the government paid his salary, and the company just paid a fee to use him. He actually paid half of the fee to extend his term (he enjoyed what he was doing so much and wanted more experience) - and eventually acquired enough skills to be hired as a full-time employee. I can tell you for sure that without unpaid co-op, the company would never have considered hiring *any* of these employees - but with time and training they have all extremely competent employees. The 'free labor' offsets the training and mentoring time. In other words, unpaid co-op lowers the 'barrier to entry'. If everyone took the same moral stance as you do here, there are many people who would never get a chance to break into the kind of career they would like.
Fri 31 Jan | old-timer | S ome C ompanies A ren't M oral Co-ops get paid. My son had two co-op jobs while an undergaduate in mechanical engineering. He was paid well in both. Not as much as a BS would make but about the same as you would expect for a technical AAS degree. I worked for G.E. for many years and we had many co-ops. Their pay was on about the same order, somewhat less than that for a BS but not too far below. If they co-oped a person in grad school, the pay level was equal to the current entry level for a BS degree.
Fri 31 Jan | Bored Bystander | To MaisOui: I've only heard of unpaid internships in conjunction with government service or with the Peace Corps - period. I hear what you're saying about the client's need to divert significant resources to support a co-op internship program. I would respect that fact highly were it true. But - sorry to shout but I've NEVER heard, NEVER EVER, of a commercial company doing this sort of thing. Or maybe it's a Canadian thing. Here in the US the pattern you describe *may* have worked years ago when companies were paternal and they worked at developing human 'stock' for their future needs. I could see an HP or a Bell Labs, circa 1978, doing this kind of thing. Today, everything in business revolves around getting done and showing a result in this quarter. I still insist that the original poster needs to know with whom he's dealing and exactly how the program is administered. The point is, the work he puts in may not even be recognized as worthwhile and marketable by a future employer, and it may only be done by all involved to get cheap labor.
Fri 31 Jan | choppy | Any decent tech company has the resources to pay a stipend to a co-op employee. I have never heard of an unpaid tech co-op (until now). I did a number of co-ops in college and they all paid between $15-$20/hr, which was pretty good for a kid in the midwest.
Fri 31 Jan | MaisOui | Just because both cats and dogs are mammals doesn't make a cat a dog. In other words, just because paid co-op positions exist (and I never said they didn't), doesn't make unpaid co-op positions 'wrong'. I should point out that paid co-op positions are more difficult to place, and sometimes the co-op (who does actually have a choice!) would rather get the experience and contacts than have the money. As I said before: unpaid co-ops are more likely to get a job for which they have no experience and are not qualified for, than they would if they tried to find a job on their own and / or expected to be paid. As I also said before (but maybe not explicitly enough), unpaid co-op positions are usually attached to education programs where the person is either 'trying out a job' (ie may be completely unsuited to that career) or is switching careers. Often the person's background in computers is not very extensive - and incidentally, a partial degree in engineering is a *much* better background than is obtained by many of the people who come out of the programs that offer unpaid co-op positions. Those who do unpaid co-op tend to a) be having a very hard time finding a job (perhaps extremely poor interview skills that would be unimportant in the day-to-day job, maybe lack of contacts, background or experience) b) want to learn more about career options in a particular industry/sector/company without committing to an employment contract or c) have little to no real world experience in their new field Also, I would point out that GE is a giant company that can afford to hire a complete waste of time, unlike the vast majority of companies in this country, and furthermore, paid co-ops tend to be the best of the candidates available (most co-op programs require a minimum average etc). Finally, no one can afford to hire someone that they are sure lacks the background and skills - even at 'co-op' rates. Apparently, your moral code says that if companies like mine want to give less experienced/skilled people a chance to excel in their chosen industry but can't afford to unless it is an unpaid position - we should either only let the person work on internal / unpaid work or not hire them at all. Hmmm.
Fri 31 Jan | Bored Bystander | Mais Oui: Here is the bottom line: There may or may not be contacts. The work may not be very good. It may not lead to anything in the future. The arrangement may or may not be misrepresented. You keep coming back to 'moral code.' I'm sorry I said that, it's apparently clouded the major point here. Screw that, OK? I am saying: the person looking at this deal needs to protect themself by knowing exactly what they may get out of the arrangement.
Fri 31 Jan | Kyralessa | 'As I also said before (but maybe not explicitly enough), unpaid co-op positions are usually attached to education programs where the person is either 'trying out a job' (ie may be completely unsuited to that career) or is switching careers. Often the person's background in computers is not very extensive - and incidentally, a partial degree in engineering is a *much* better background than is obtained by many of the people who come out of the programs that offer unpaid co-op positions.' I can almost see working an unpaid position if you were directly receiving college credit for it. Yet even then...I recall that my high school offered practicum in various trades, and while it may have been minimum wage, it did pay. Heck, even work-study college kids doing crap jobs like running the check-out desk in the library (ideal homework-doing time) get paid. A friend of mine worked as an intern at a software company in Arkansas while he was in college. He made around $10 an hour, I think. Obviously not programming wages, but definitely not zero either. The company he worked for obviously hadn't mastered the art of exploiting the young and naive yet. 'Those who do unpaid co-op tend to...' ...be suckers. It's that simple. Unlike some others here, I have seen job offerings of this type; no pay, but a supposed chance to get your foot in the door. All I wondered is what kind of fool would take such a job, and what kind of company supposes that people don't have to eat. 'Also, I would point out that GE is a giant company that can afford to hire a complete waste of time, unlike the vast majority of companies in this country, and furthermore, paid co-ops tend to be the best of the candidates available (most co-op programs require a minimum average etc). Finally, no one can afford to hire someone that they are sure lacks the background and skills - even at 'co-op' rates.' I, on the other hand, would point out that first of all, it's always been the case that a company doesn't know exactly what it's getting when it hires someone. That's called LIFE. Secondly, I would point out, MaisOui, that if your company and other companies actually paid their current employees what they're worth instead of making heroic efforts to lowball them at every turn, then (1) such companies would have less need to hire because they'd have less turnover, and (2) such companies could more easily afford to hire unproven talent because they'd have proven talent who'd been around longer and could show the newcomers the ropes. 'Apparently, your moral code says that if companies like mine want to give less experienced/skilled people a chance to excel in their chosen industry but can't afford to unless it is an unpaid position - we should either only let the person work on internal / unpaid work or not hire them at all.' My own old-fashioned moral code says that you shouldn't hire someone to do a job if you can't pay him. A fairly simple, common-sensical approach, if you think about it. But obviously a company's stock will be worth more if it can con naive people into working for free.
Fri 31 Jan | MaisOui | Bored: 'The point is, the work he puts in may not even be recognized as worthwhile and marketable by a future employer, and it may only be done by all involved to get cheap labor.' This is true and I completely agree. But (and the reason I put in my 0.02 here) - not all companies are the worthless scum the people in this thread appear to work for :) And, in my experience, the companies that are just looking for cheap labor don't tend to get a second placement (after all, the student usually evaluates the employer, as does the coordinator). The big point I wanted to get across to the original poster was that unpaid coop work is usually not 'a scam' or 'immoral' or worse than hanging drywall (no offense to people who like hanging drywall intended) etc, but can have many benefits if you get a good placement. Sure, nothing in life is guaranteed - but you should be able to get a sense of what the motivations of the company are during your interview - after all, the student is interviewing the company just as much as the company is interviewing the student. And futhermore, getting out of the placement is usually not difficult (the original poster should *not* get involved in unpaid co-op if they cannot switch placements easily!) Finally, the original poster should check if the manager and company they will be placed with has had previous placements - a 'rookie' tends to be a bigger risk. Really, the only reason I'm commenting is because all the other comments were extremely negative (excessively negative even) - yet none of the posters have any experience with unpaid coop (most had never even heard of it!). I've been on both sides (as a coop, and as a recruiter - both paid and unpaid...) - and it's been win-win *almost every* time I've seen it done. The only times where the placement wasn't entirely successful it was a huge drain of resources for us as an employer - so not exactly 'cheap labor' (probably the most expensive hire I've *ever* done in terms of time and emotional energy). Choppy: Don't you think it's a bit presumptous to say that 'any tech company' can 'afford' to pay $15-20/hour for 'any coop'? We certainly can't. Make whatever judgements you want - but I'm not going to pay someone hard earned cash while they are a net drain on resources. I simply am not in a position to do that. (And actually $15-20 /hour, esp if you are talking $US, is pretty good money around here - where many people are just happy to work for someone who is not laying off employees...) While I can't afford to pay an employee who cannot contribute immediately, I *am* in a position to provide training and mentoring free of charge to students who are happy to contribute to the best of their ability. If said students take advantage of said training and become fabulous employees - they'll end up getting hired... I find it very surprising/disturbing that so many of you find this to be such a terrible thing.
Fri 31 Jan |   | The OP said he was out of work for some time now, implying that he has some experience already. He's not a student that needs mentoring.
Fri 31 Jan | MaisOui | Kyralessa, high schools here in Ontario, Canada do not have paid co-op positions. And as far as I know, all unpaid co-ops have college credits associated around here. I could afford to hire anyone at minimum wage to run the check-out desk. There's not exactly a lot of training or skills required for that job. I can't afford to hire just anyone to do our core work, especially the interesting stuff (that yes, we usually are paid for by our clients - that's called business...). As someone else pointed out, many people spend tens of thousands of dollars to be educated or to get training through educational institutes. Why are you so against people just not getting paid to be educated and get training? Students have to eat too. Why should I as an employer assume all of the costs and risks of hiring an employee that I *know* is not qualified for the job? '(1) such companies would have less need to hire because they'd have less turnover, and (2) such companies could more easily afford to hire unproven talent because they'd have proven talent who'd been around longer and could show the newcomers the ropes.' Companies hire unproven talent, yes. But they don't usually hire people who mostly lack the skills/background/experience, especially in this market where there is lots of competition from very talented and experienced developers. (And I'd say that's especially true if said companies only cared about their bottom line...) There's showing the ropes, and then there is a four month intensive training requirement (before which the person usually is a *net drain* on resources). 'My own old-fashioned moral code says that you shouldn't hire someone to do a job if you can't pay him.' Maybe I'm talking into a brick wall here - maybe you are too scarred by your apparently terrible luck with employers. (I'd note that we're not a publically traded company and never will be and I don't exactly subscribe to the theory that successful companies are those that increase their profit margin every year). I'll try one last time: I can't afford to hire someone to do a job that I could do myself in a fraction of the time, at a fraction of the cost. In fact, 9 times out of 10, I spend more time training and helping the person than I would have spent actually doing the project. So, no, I can't afford to pay the person on top of all the time and resources we spend. You want to think that that is exploitation of 'naive people' - go ahead. Personally, I consider it valuable community service. Perhaps it would be more valuable service if I could give the person a free ride and pay them while training. And some day, it would be great if I could do that. But I have to eat too, you know, and in the meantime I think it's better to offer what I can, than nothing at all - and just as importantly - so do the co-op students.
Fri 31 Jan | choppy | 'Choppy: Don't you think it's a bit presumptous to say that 'any tech company' can 'afford' to pay $15-20/hour for 'any coop'? We certainly can't.' I said any 'decent' tech company can afford to pay a co-op employee something. $15-20/hour is what I personally made as a coop employee, when I was in college. Any decent tech company should be able to pay a co-op employee whatever the minimum wage is. At this point, i'm not sure what MaisOui is even talking about. You say that you can afford to hire anyone at minimum wage to staff the check out desk. But you can't afford to hire just anyone to do the core work. So, you can afford to pay your clerk a minimum wage, but your co-op programmers you can't afford to pay at all? I don't understand. Also, I'm not sure I understand the situation you describe. I'm talking about people, presumably computer science students, or similar, trying to get a programming job through a co-op. And my position is that they should be paid a minimum wage. I mean, even the army pays 80 bucks a month, or whatever. The way I read your posts , it seems you are talking about taking random people with no skills whatsoever, then giving them a chance to learn computer programming, for free, at your company? I don't really have an opinion on that situation, it seems very atypical and strange.
Fri 31 Jan | MaisOui | 'So, you can afford to pay your clerk a minimum wage, but your co-op programmers you can't afford to pay at all? I don't understand.' I guess the point I was trying to make is that there are other costs to hiring a co-op than salary. If we are going to get someone to work on a project that requires a level of knowledge/skills above that of your basic cashier - ie where training requirements are well above a day - then we personally cannot afford to pay someone to do that job *unless* they are able to contribute to the project nearly right away. In our field, that eliminates nearly all high school students, ~10/40,000 university students and even fewer college students. It also eliminates anyone who doesn't have at least five years of real experience programming - and probably anyone who didn't grow up using a computer or wasn't involved with computers as soon as practical. If we don't pay the person during the portion of training time, we'll be able to give them a chance. If we had to pay them - we'd hire someone who we were sure were able to do the job and do a good job. And we would not expect to spend time mentoring them and explaining how to complete the task etc. Good business practice, perhaps, but if you are the person looking to get a break in a tough economy - I suspect you'd prefer to have an unpaid introduction than your resume trashed as a matter of course. 'I mean, even the army pays 80 bucks a month, or whatever.' The army is publically funded (albeit badly) here in Canada. What's your point? I had a friend who was paid $15/hour to sort resistors. It was a boring and unfulfilling job. There are millions of terrible and paid jobs that people can do if they want. However, if you want a job that you don't have the qualifications or experience to do, either you get lucky - or someone has to give you a chance. Someone else pointed out that the OP implied they had previous work experience. I would just add they also implied they'd been out of work for a while - which would indicate to me that perhaps their combination of skills/experience aren't in the right areas for the kind of job they are seeking - or maybe there is something about their interview skills that is problematic - or maybe there is simply too much competition for the kind of jobs they are looking for. There are many ways of addressing this problem - and an unpaid co-op position is one option. 'It seems you are talking about taking random people with no skills whatsoever, then giving them a chance to learn computer programming, for free, at your company?' Usually they have *some* skills (although we did have one person who was unsure which way of the keyboard was up) - but they are missing many of the skills we would normally require of an employee. For instance, the person we have starting on Monday (amusingly enough in the context of this conversation) (who I should add has a much better background on paper than is usual - she likes unpaid coop positions because she received her last four jobs that way) has a Masters of Business Information and started her career as a C programmer in the Ukraine. However, she has not kept her programming up to date (a required skill) and has no experience writing cgi's in C++ (a required skill). She does seem to have a good understanding of HTML, including form creation (required skill) - but she has very basic to non-existent SQL skills (another required skill). Her communications skills are also lacking a bit, partly because her English is not great (another required skill), and I have no idea if she has any systems analysis and design skills (would be very useful). Her biggest problem as a potential employee is probably the lack of SQL skills - we'd probably read her resume under ordinary circumstances, but she wouldn't have gotten as far as an interview. Now, however, we'll do everything in our power to not only give her relevant work experience, good contacts and maybe a job at the end - but we'll also make sure she has every opportunity to get up to speed in the areas where she has less experience. Unusual - maybe. Specific to this city - maybe. But I utterly reject the assertion that it is immoral.
Fri 31 Jan | concerned | There is actually a position at RIM (Research in Motion), a well known Canadian company, asking for a volunteer in one of their development depts . tO do Java,XML work. The catch is they need smebody with WSIB coverage(Workers Safety Inspection Board), which is normally got by coming in through a adult co-op program. Any ideas how I can get WSIB coverage?
Fri 31 Jan | MaisOui | Check with your local adult high schools to find out if you can get into their co-op program (or contact RIM directly).
Fri 31 Jan | Ed the Millwright | 'And futhermore, getting out of the placement is usually not difficult (the original poster should *not* get involved in unpaid co-op if they cannot switch placements easily!)' OK, so Mais Oui knows of some of these 'placements' where not only do you not get paid but you are not free to leave. We have Constititional Amendments (13 & 14) against these practices in the US. Maybe there in Canada stuff is different. I know it is different in Saipan, Sudan, and Saudi Arabia where slavery drives the economy. In any case, MaisOui is either trolling, full of it, or a dangerous madman. If you meet a MaisOui in real life, run don't walk away from this raving psychopoth. These people are out there so you have to watch out. Don't lets these fruitballs take advantage of you. And NEVER accept their offers to move overseas. You will never see your family again.
Fri 31 Jan | choppy | I still don't know if I understand this situation. If the people you pick out really don't have any experience relevant to producing value for the company, why bother? Why not just HIRE one of the thousands of out of work people with the skillset you described?
Fri 31 Jan | T. Norman | 'Why not just HIRE one of the thousands of out of work people with the skillset you described?' To your question they'll respond, 'why pay somebody to do the work when you can find desperate suckers to do it for free?'
Fri 31 Jan | MaisOui | 'OK, so Mais Oui knows of some of these 'placements' where not only do you not get paid but you are not free to leave' My goodness, you are paranoid Ed. This is probably how urban legends start. Not free to leave as in you will fail the credit if you do. Not as in the evil company ties you to the bed a la Law and Order underground sweat shop. And unpaid co-op is always local as far as I know, so relocation would not even be discussed. Talk about trolling. Sheesh. In terms of 'why don't I just hire some one qualified' - well - a) it's not super easy to find some one qualified (most qualified people currently have jobs, the current glut is in people with a little experience or in all the wrong places.) When I come across someone qualified - I will indeed hire them, but it doesn't occur as often as the people who are not qualified. b) people who are qualified don't tend to have trouble finding jobs. It doesn't make sense to me that companies should all compete for the very few top people, when there is a mechanism (unpaid coop) designed to train some of the 'others' into top people with less risk and expense to them? And Fundamently, I believe in giving those without enough experience and background a chance.
Sat 01 Feb | Bella | It's simple supply and demand. If circumstances dictate that someone will work for free, whether for his own personal reasons and gain or not, then they will. No one has a gun to their head. It's simple supply and demand.
Sat 01 Feb | MaisOui | Incidentally, I should add that unpaid co-ops (working here anyway) don't 'replace' a paid employee on a project. It's not a case of 'hmm, should I try to hire someone good, or shall I try an unpaid co-op?' Co-op is designed to be a learning experience, which means that the project is designed to meet the co-op's personal growth and educational goals. It also must have definable milestones that fit into the co-op term, not be too intimidating, and be flexible in case the co-op has difficulties or switches placements midway through the project. In other words, the experience of the co-op student is more important than the actual completion of the project. Usually, this means that co-op students either work with another employee on the project (and that the project is acheivable if necessary internally), or they work on their own on a smaller project with a relaxed timeframe (ie the kind of project where it would be nice if it got done at some point, but if the co-op ends up doing nothing on the project, the world won't end). It also means that if we really *need* another employee (ie 'someone good'), filling the gap with an unpaid co-op is not going to work. Right now, we don't really need extra people - but should this unpaid co-op turn out to be a diamond in the rough (which is often the case) we will likely hire her because (as I said before) it's not easy to find good people, and by the time you really really *need* another employee, it's a bit late to be hiring (in my opinion). This is also how it works at the client's I mentioned (where half their staff started as unpaid co-ops). When they get a new co-op, it's not that they are short-staffed (when you are short staffed - you don't expend extra energy training people up to speed, 'free' or not; that's how you get your other employees to quit!) - it's usually that there is a co-op available that is interested in the kind of work that the company does. Sure, many times they end up hiring the co-op at the end, but that's usually more a case of work expanding to use available people and a case of soliciting more business once they decide to hire (and thus can handle more business). Personally, I think unpaid coop is much better than the training programs offered by various help desk companies (where would-be employees pay for training, and then are guaranteed a job) or by various colleges (where would-be employees just pay), because it involves on the job training with real experience (as opposed to random made-up projects) and it is all completely free to the student.
Sat 01 Feb | Bored Bystander | MaisOui: I admire your prolific defense of the practice of unpaid co-op. It's a lot of material, even for a programmer's BBS. I am convinced beyond a shadow of a doubt that you are the resident expert in this thread on this sort of arrangement. But - we *still* need to get down to the bottom line for the original poster. He needs to know what's in it for him. He needs to know what the experience of others who have participated in this school's work study is. That is *ALL* that counts as far as the candidate's POV. You make it sound as though the company's needs are fulfilled, that alone guarantees a good experience for the candidate. Who *cares* what valid business reasons exist to do this on the company's side. I find the reasons quesntionable, you view the reasons as a sort of manifest destiny for commercial entities, that they deserve to get free labor from time to time. Whatever. It's still the candidate who will take the fall on a bad or go nowhere assignment. Lastly - just a reality check - programmers have always appeared to me to be a bunch of libertarians who worship at the alter of caveat emptor. Fine, it's a free country and candidate can make his own mind up. But - if volunteering to build someone else's business up so they can make a profit is seen as a reasonable thing, then what the hell is the point of staying in this industry if you're giving away work? It doesn't make any sense at all.
Sat 01 Feb | Wake up | MaisOui is no expert at all. He doesn't even understand what's being discussed. This is not coop type work. There are some training companies - often with connections to Indian entrepreneurs - that very deliberately set out to exploit the schmucks they push through their often expensive, often poor training programs, often for high end products. The reasoning goes that these schmucks are prepared to pay for a course; probably we can get them to do work for free too.
Sat 01 Feb | Kyralessa | 'Who *cares* what valid business reasons exist to do this on the company's side. I find the reasons quesntionable, you view the reasons as a sort of manifest destiny for commercial entities, that they deserve to get free labor from time to time. Whatever. It's still the candidate who will take the fall on a bad or go nowhere assignment.' Well-spoken, sir! It may indeed be true that there are companies out there with hearts of gold but limited means which will hire people for no pay, train them extensively for three or four months, and then hire them at a good salary once they're productive employees. It may also be true that there really is a fellow in South Africa (from whom I received an e-mail today) who found an untapped account in the bank and generously wants to share it with me if I help him move the money. Nonetheless, notwithstanding the existence of one good-hearted scalawag from South Africa, the fact remains that on balance most offers from overseas of great riches for zero effort are hoaxes and scams. And notwithstanding the existence of one noble company like MaisOui's that wants to train people for free and then pay them well, the fact remains that I'd view most offers like that with a great deal of suspicion. The only way someone ought to even consider such a bizarre situation is with strict terms: e.g. the company in question writes out a contract pledging to hire the person after x months of study, if appropriate progress has been made, with a neutral third party to judge the progress, which could be passing certain certification exams or something. But even then one would still have to ask why it wouldn't be better to work at a crap job, program on one's own time, pass the exams by oneself, and _then_ go looking for a job with a real salary.
Sun 02 Feb | MaisOui | Bored: 'He needs to know what the experience of others who have participated in this school's work study is.' Sure, I agree with that. However, it's pretty unlikely that anyone in this forum has gone to that particular school (especially since I am apparently the *only* person responding to this thread who has apparently ever been employed as an unpaid coop). I'd recommend that he ask to speak to students that have gone through the program and find out what they thought of it. 'You make it sound as though the company's needs are fulfilled, that alone guarantees a good experience for the candidate.' Baloney. I do think that if the candidate and company are well-matched, the candidate is likely to have a good experience - but how likely it is that they are well-matched depends on the company's motivations AND the candidate's ability to size up the company during the interview. 'I find the reasons quesntionable, you view the reasons as a sort of manifest destiny for commercial entities, that they deserve to get free labor from time to time.' Manifest destiny? Come on... Where did I even come close to implying that I 'deserve' free labor? My point is that some companies can only justify hiring a student that will require more training than the normal candidates that they hire, if the student does not also want payment. In fact, the concept getting free training is hundreds of years old (apprenticeships!), and in many cases (eg universities) people are willing to pay for training. I find it strange that people responding to this thread think that a similar institution is morally corrupt just because the place of training is a for-profit institute. I'd take a long hard look at universities, if I were you. 'It's still the candidate who will take the fall on a bad or go nowhere assignment.' The candidate is usually looking to find a) what it's like working in x industry b) would they like to work at x company (ie job opportunity) c) a reference / contacts d) credits for their course at school e