I am a young(er? 29) developer and I do most of my development on the.NET stack. No, it's not as "cool" as being an iPhone dev, but at least Ballmer doesn't tell me I can't compile my code without forking him $100/yr...and he doesn't take 30% percent of whatever I might make selling my code.
I work in a mixed shop where most of the other devs are Ruby/Rails guys...they all see me as a "sellout" for using.NET (and maybe I am?)...but when it comes to choosing what platform to learn and code in, I'm pretty happy with Microsoft in general. It's a lot easier for me to find a job doing.NET than it is for them in Ruby/Rails...and in 5 years they'll have to throw out everything they learned about Ruby/Rails because the fanboyism that drives their community will have moved on to the next "big shiny thing" (Scala?)...I'll still be writing code in C#...Does that make me a sellout? Maybe, but I'll take more money for less work and less drama any day of the week.
Flashback to a meeting with a bunch of douchebag MBAs 4 years ago at Goldman Sachs:
MBA Dbag 1: "We'll save so much money by moving these coding jobs overseas to Russia! American coders are getting too expensive!"
MBA Dbag2: "I don't see any drawbacks. Let's do it. As long as they can't outsource us playing phonetag and having meetings with each other all day, right?"
and they're less likely to conform to organizational development processes and coding standards.
A lot of times, the "Cowboy Coding" is more effective because the "development processes and coding standards" were implemented and enforced by phonetaggers who have never written a productive line of code in their entire lives. Those who are inclined to break them, naturally, are more productive and seem more effective - despite the grumblings of the phonetaggers that they are "unmanageable".
But, really - Does "management" have any right to blame them? They spent the last decade proving to every developer the idea that if you allow yourself or your work to be commoditized, we will ship you or your job overseas where it can be done cheaper. And "development processes and coding standards" are usually implemented with the intent of "commoditizing", to a certain degree, the work of coding....and you're going to blame the *developers* for rejecting that? Middle management in the US basically *created* the environment that forced developers to either become "Cowboys" or to compete with people making $4/hr overseas.
Speaking on behalf of coders everywhere - You can take your "development processes and coding standards" and shove it - I'll keep my job and let you grumble under your breath about how I am "unmanageable", thank you.
Keep a small supply of chocolate (I find that the mini-Doves work best) with you at work for "desk-calls". People will be more inclined to communicate with you early and often (as opposed to after a huge disaster has started) if you bring them chocolate.
Another tip: Be specific when you are explaining you might have to deflect a call. "I have to fix something for Bob right away but I'll see you as soon as I'm done." is much better than just saying "Sorry, I'm really busy and I can't help you right now.".
Again and again...why does *no one* understand the simple principle of CORRELATION DOES NOT EQUAL CAUSATION?
The teachers may have inflated the kids grades...what if you were one of those teachers? And the low-income kids really needed that $500? I would do the same thing; Give everyone an A, whether they earned it or not...would not want to be responsible for them starving...
I was in a similar situation, but where "conflict of interest" was the issue at hand instead of IP/Copyright issues.
Do what I did; Get someone who *didn't* work with you guys to be your "frontman", and have him do the sales...and even say he coded it. Shut up and don't tell the people you used to work with what you're doing and you can't get caught.
I hear there's this company in Redmond that's doing all of these cool open-source things right now like adopting OpenID and sharing their source code...what was it called...Microware, or Macrosoft or something...
I tried that once, in microcosm. They called it "Majoring in something harder than Psychology". It was all dudes all the time. But at least you could go outside and *look* at all the hot chicks majoring in Communications/Business/English/Political Science/etc...
I started out working TS, too (I am currently a developer)...and companies offering most of the positions I was applying for understood that a couple years of experience in TS was a great boon because at the end of the day no matter how good you are as a developer, your software has to get used by people; people that get frustrated, people that have certain patterns of doing things that aren't the same as engineers - and a lot of engineers just don't understand that until they have to deal with those people day in and day out.
I am nearing the point in my career where I will have to start *hiring* coders, and one of the first things I am going to look for is a background in bridging the gap between "software systems" and "people"... i.e. Tech Support.
If the positions you are applying to don't seem to get that then I can only offer 2 thoughts: 1. They don't understand software development that well, so you should probably not work for them. 2. *Explain* what I just said above in your interview.
If you want to import data from the *money* in politics, which I generally find more amusing/entertaining check out the Federal Election Commission's FTP site
Ironic...were it not for people that literally died for the cause that you are ranting against, you would have started working in a dangerous sweat shop when you were 13, never had the chance to be educated enough to work in I.T. in the first place, and you probably wouldn't be able to afford to access the internet to post your rant against the people that sacrificed life and limb for the idea that they should get a fair day's pay for their work....that is *if* you even survived long enough in the dangerous working conditions that you were subject to...and assuming that the internet could even exist in the the robber-baron's paradise that those people gave their lives to loosen up.
But you're right; We should destroy all the unions because someone's lazy cousin/unlce got paid for doing nothing once...
Personally, I believe that *trade* unions, as such, are often misunderstood and trash-talked in the U.S. Everyone seems to have a story about the "lazy cousin/uncle" they knew that collected a fat check every month for doing nothing because of a "big bad union"; And they use that anecdote to justify their idea that unions should be abolished - conveninetly forgetting that were it not for other Americans that literally gave their lives for the right to organize as workers - *they* would have started working in a sweat shop at the age of 9, probably not had the opportunity to go attend college, and been subjected to dangerous and long hours to eek out a living in abject poverty.
I want to make it abundantly clear that I am not a member of that intelectually myopic camp. That being said, however, I don't believe that the model of the trade union really fits I.T. that well. I think we would be better served by a professional organization...let's call it a *skill* union; It would primarily exist so that I.T. workers could share information about employers...We would be so much more respected if employers knew that when they pulled the "We're going to replace you with offshoring" crap that others in the I.T. field would learn about it - that they would not be able to do this with impunity with regards to the opinions of other I.T. professionals without whom their operations would ground to a halt.
The candidates probably wouldn't be invited on the show in the first place unless they were "up-and-coming" and exposed to the Democratic donor base before they got on the show. It would be just as logical to say that their increase in donations is the reason they get invited on the show and not the other way around.
Just mentioning this shows how "Get-Off-My-Lawn"-old I am...but anyone remember Tradewars 2000 - the old BBS/Doors game. I think they did open the source for that game...granted, it was text-based, but it was still a really great (and in my opinion, the "first great") MMO.
They still have some sites that host the game, I think.
Brilliant engineering students may earn surprisingly low grades while slackers in other departments score straight As for writing book reports and throwing together papers about their favorite zombie films
Oh!!! You think *that's* annoying? Wait until you get in the real world, and those people are the ones that are appointed to make decisions about your career because they are "creative" and see the "big picture".
A professor once told me "There are two ways to make a living; Take something easy and make it look hard...or take something hard and make it look easy." If you're really an engineer at heart, you take a lot of comfort in knowing that you fall into the latter category...but it doesn't make it any less annoying.
"and writing good software is NOT what you learn at a university."
Actually, if you are in a half-decent program, that is *all* you learn. I know there are some half-assed CS programs out that just focus on the language du-jour, but the really good programs (like the one I went to at Ohio State) pretty much *just* focus on how you write "good software"; Fulfilling requires/ensures contracts, testing until you can't test anymore, how to properly organize and compartmentalize your code through object-orientation, etc.
For any half-decent programmer, getting a hang of all the ins-and-outs of the language du-jour is something you should and can do on your own time...
Convey to the applicant that your company values *production* and *problem solving* over meetings, phone calls, "strategy" and any of the other abstract "big picture" bullsh*t that people with "soft skills" use to justify their positions at the expense of programmers. Bonus points if you can point to a programmer or two in your organization and demonstrate that they make more money and are more valued than the softies. Let the applicant know that "Yes, we expect you to function within our management framework, but that framework is here to help you be *more* productive"...every good programmer dreads the "Office Space" scenario where they are spending more time filling out TPS reports than doing the work that they love.
Every good programmer's worst nightmare is to step into a new job bright-eyed and ready to be creative, only to be told that their function will be to learn and maintain a piece-of-crap monstrosity that someone else created. Make it crystal clear that this is not the situation they are being hired into.
...as far as "where to find them"...The same principle that applies to "getting hired" (i.e. networking is always the best) also applies to hiring. Ask your five best programmers to give you the names of some of their friends and don't be afraid to aggressively go after them and lure them away from their current gig.
I am constantly astounded by the vigor with which some seemingly otherwise intelligent programmers pick up the Open Source banner and run with it.
Open Source is better for the world-at-large. Make no mistake about it. **The world-at-large is more productive for getting software for free.** They can spend the money they would have spent on software on other things.
But how could you think that this is better for *programmers*? I *always* ask this of my fellow IT professionals and they *always* respond with some vague argument about how participating in Open Source projects will get you "recognized"...Well, in the sarcastic wrods of Homer Simpson "Look at me: I'm making people _happy_".
Someone please enlighten me. Explain to me how we, as programmers, are better off when the fruits of our labor are surrendered for free. I'm not saying it doesn't make the economy-at-large more productive...clearly it benefits all the people with "business" and "creative" degrees, and since there are more of them than us, it clearly benefits the "larger group", so to speak. But how does it make *us* better off? I'm not so engrossed in matrerialism that I think how much I make is the only thing that matters...but I find the idea that my reward for being part of a highly successful OS project might be getting "recognized" and maybe if I'm lucky getting hired on as a code monkey for some "creative" people that used what I worked so hard on for free very distasteful.
I really tried to embrace the idea of the OS movement, but because no one could answer those questions I have come to regard it, at best, an idea for a perfect society (one where *everyone*, not just programmers, works for the common good) that is tragically ahead of its time and at worst a pox on the profession of programming.
I know this sounds strange, but I've been working as an app developer for *very* untechnical people for quite a while...in all modesty, I'd have to say that I am better at interface design than any programmer I've ever worked with by leaps and bounds...probably because learning CS was *really* tough for me, but I forced myself to do it anyway, so I can relate a little bit better to the average user when they're looking at the front end of a complex system. My secret when I need inspiration for some good UI design? Toys. The Fisher Price "playstation"-type ones are the best..
You're probably like "What??"...But think about it for a sec...most of the time when you're designing an interface, what is your goal? To make something that is 1) intuitive and 2) something that the user can hammer at repeatedly without getting annoyed/bored/cranky. Who does that better than Fisher-Price? Toddlers, for the purpose of UI design, are just like your users...they're not "dumb", they just don't start out with the same level of knowledge about the system that you're developing i.e., they need to use their intuition to learn about it. So take your cues from a toy company that's been around since you were a baby and make your UI just like their toys; Unbreakable. Colorful, big buttons that draw the user's attention...If you give them a square hole, give them a square peg to put in it (and make sure it's designed properly so they don't choke on it).
Honestly, UI design has always been the most natural thing to me...I tried to read a few books on it, but found that they typically bloviated on strange tangents, buzzwords, and irrelevant minutiae. So here's my advice in a nutshell: skip the books, go play with some toys.
One thing that most programmer's don't know, but they seem to teach every Lib arts student: The 'Z'. When people read or look at something, they tend to do it in a 'Z' pattern starting at the top left of the page and going to the bottom right.
And if anyone tries to tell you the mantra "If you make it easy enough for any idiot to use, only idiots will use it", ask them if they've seen www.google.com; There's always a "sweetspot" in UI design. If most of your users are only going to be using 1% of your interface (in google's case, the search box), don't clutter their view up with the 99% percent that they don't need (the advcanced search features).
I am a young(er? 29) developer and I do most of my development on the .NET stack. No, it's not as "cool" as being an iPhone dev, but at least Ballmer doesn't tell me I can't compile my code without forking him $100/yr...and he doesn't take 30% percent of whatever I might make selling my code.
.NET (and maybe I am?)...but when it comes to choosing what platform to learn and code in, I'm pretty happy with Microsoft in general. It's a lot easier for me to find a job doing .NET than it is for them in Ruby/Rails...and in 5 years they'll have to throw out everything they learned about Ruby/Rails because the fanboyism that drives their community will have moved on to the next "big shiny thing" (Scala?)...I'll still be writing code in C#...Does that make me a sellout? Maybe, but I'll take more money for less work and less drama any day of the week.
I work in a mixed shop where most of the other devs are Ruby/Rails guys...they all see me as a "sellout" for using
WTF!!! We had a raid last night, where were you?
They should let Uwe Boll direct it, just for the hilarity of watching him box everyone that hates it.
Flashback to a meeting with a bunch of douchebag MBAs 4 years ago at Goldman Sachs:
MBA Dbag 1: "We'll save so much money by moving these coding jobs overseas to Russia! American coders are getting too expensive!"
MBA Dbag2: "I don't see any drawbacks. Let's do it. As long as they can't outsource us playing phonetag and having meetings with each other all day, right?"
and they're less likely to conform to organizational development processes and coding standards.
A lot of times, the "Cowboy Coding" is more effective because the "development processes and coding standards" were implemented and enforced by phonetaggers who have never written a productive line of code in their entire lives. Those who are inclined to break them, naturally, are more productive and seem more effective - despite the grumblings of the phonetaggers that they are "unmanageable".
But, really - Does "management" have any right to blame them? They spent the last decade proving to every developer the idea that if you allow yourself or your work to be commoditized, we will ship you or your job overseas where it can be done cheaper. And "development processes and coding standards" are usually implemented with the intent of "commoditizing", to a certain degree, the work of coding....and you're going to blame the *developers* for rejecting that? Middle management in the US basically *created* the environment that forced developers to either become "Cowboys" or to compete with people making $4/hr overseas.
Speaking on behalf of coders everywhere - You can take your "development processes and coding standards" and shove it - I'll keep my job and let you grumble under your breath about how I am "unmanageable", thank you.
Keep a small supply of chocolate (I find that the mini-Doves work best) with you at work for "desk-calls". People will be more inclined to communicate with you early and often (as opposed to after a huge disaster has started) if you bring them chocolate.
Another tip: Be specific when you are explaining you might have to deflect a call. "I have to fix something for Bob right away but I'll see you as soon as I'm done." is much better than just saying "Sorry, I'm really busy and I can't help you right now.".
Again and again...why does *no one* understand the simple principle of CORRELATION DOES NOT EQUAL CAUSATION? The teachers may have inflated the kids grades...what if you were one of those teachers? And the low-income kids really needed that $500? I would do the same thing; Give everyone an A, whether they earned it or not...would not want to be responsible for them starving...
I was in a similar situation, but where "conflict of interest" was the issue at hand instead of IP/Copyright issues.
Do what I did; Get someone who *didn't* work with you guys to be your "frontman", and have him do the sales...and even say he coded it. Shut up and don't tell the people you used to work with what you're doing and you can't get caught.
I hear there's this company in Redmond that's doing all of these cool open-source things right now like adopting OpenID and sharing their source code...what was it called...Microware, or Macrosoft or something...
I tried that once, in microcosm. They called it "Majoring in something harder than Psychology". It was all dudes all the time. But at least you could go outside and *look* at all the hot chicks majoring in Communications/Business/English/Political Science/etc...
Count me out.
I started out working TS, too (I am currently a developer)...and companies offering most of the positions I was applying for understood that a couple years of experience in TS was a great boon because at the end of the day no matter how good you are as a developer, your software has to get used by people; people that get frustrated, people that have certain patterns of doing things that aren't the same as engineers - and a lot of engineers just don't understand that until they have to deal with those people day in and day out.
... i.e. Tech Support.
I am nearing the point in my career where I will have to start *hiring* coders, and one of the first things I am going to look for is a background in bridging the gap between "software systems" and "people"
If the positions you are applying to don't seem to get that then I can only offer 2 thoughts:
1. They don't understand software development that well, so you should probably not work for them.
2. *Explain* what I just said above in your interview.
If you want to import data from the *money* in politics, which I generally find more amusing/entertaining check out the Federal Election Commission's FTP site
Nice rant against unions.
Ironic...were it not for people that literally died for the cause that you are ranting against, you would have started working in a dangerous sweat shop when you were 13, never had the chance to be educated enough to work in I.T. in the first place, and you probably wouldn't be able to afford to access the internet to post your rant against the people that sacrificed life and limb for the idea that they should get a fair day's pay for their work....that is *if* you even survived long enough in the dangerous working conditions that you were subject to...and assuming that the internet could even exist in the the robber-baron's paradise that those people gave their lives to loosen up.
But you're right; We should destroy all the unions because someone's lazy cousin/unlce got paid for doing nothing once...
Personally, I believe that *trade* unions, as such, are often misunderstood and trash-talked in the U.S. Everyone seems to have a story about the "lazy cousin/uncle" they knew that collected a fat check every month for doing nothing because of a "big bad union"; And they use that anecdote to justify their idea that unions should be abolished - conveninetly forgetting that were it not for other Americans that literally gave their lives for the right to organize as workers - *they* would have started working in a sweat shop at the age of 9, probably not had the opportunity to go attend college, and been subjected to dangerous and long hours to eek out a living in abject poverty.
I want to make it abundantly clear that I am not a member of that intelectually myopic camp. That being said, however, I don't believe that the model of the trade union really fits I.T. that well. I think we would be better served by a professional organization...let's call it a *skill* union; It would primarily exist so that I.T. workers could share information about employers...We would be so much more respected if employers knew that when they pulled the "We're going to replace you with offshoring" crap that others in the I.T. field would learn about it - that they would not be able to do this with impunity with regards to the opinions of other I.T. professionals without whom their operations would ground to a halt.
The candidates probably wouldn't be invited on the show in the first place unless they were "up-and-coming" and exposed to the Democratic donor base before they got on the show. It would be just as logical to say that their increase in donations is the reason they get invited on the show and not the other way around.
Just mentioning this shows how "Get-Off-My-Lawn"-old I am...but anyone remember Tradewars 2000 - the old BBS/Doors game. I think they did open the source for that game...granted, it was text-based, but it was still a really great (and in my opinion, the "first great") MMO.
They still have some sites that host the game, I think.
"He's a people person!!! Can't you see that? WHAT'S WRONG WITH YOU PEOPLE?!?!?!"
/Creative(TM) PR Troll
Brilliant engineering students may earn surprisingly low grades while slackers in other departments score straight As for writing book reports and throwing together papers about their favorite zombie films
Oh!!! You think *that's* annoying? Wait until you get in the real world, and those people are the ones that are appointed to make decisions about your career because they are "creative" and see the "big picture".
A professor once told me "There are two ways to make a living; Take something easy and make it look hard...or take something hard and make it look easy." If you're really an engineer at heart, you take a lot of comfort in knowing that you fall into the latter category...but it doesn't make it any less annoying.
"Profit!": C# "Freedom!": Rails "Fun!": Lua
"and writing good software is NOT what you learn at a university."
Actually, if you are in a half-decent program, that is *all* you learn. I know there are some half-assed CS programs out that just focus on the language du-jour, but the really good programs (like the one I went to at Ohio State) pretty much *just* focus on how you write "good software"; Fulfilling requires/ensures contracts, testing until you can't test anymore, how to properly organize and compartmentalize your code through object-orientation, etc.
For any half-decent programmer, getting a hang of all the ins-and-outs of the language du-jour is something you should and can do on your own time...
Convey to the applicant that your company values *production* and *problem solving* over meetings, phone calls, "strategy" and any of the other abstract "big picture" bullsh*t that people with "soft skills" use to justify their positions at the expense of programmers. Bonus points if you can point to a programmer or two in your organization and demonstrate that they make more money and are more valued than the softies. Let the applicant know that "Yes, we expect you to function within our management framework, but that framework is here to help you be *more* productive"...every good programmer dreads the "Office Space" scenario where they are spending more time filling out TPS reports than doing the work that they love.
Every good programmer's worst nightmare is to step into a new job bright-eyed and ready to be creative, only to be told that their function will be to learn and maintain a piece-of-crap monstrosity that someone else created. Make it crystal clear that this is not the situation they are being hired into.
...as far as "where to find them"...The same principle that applies to "getting hired" (i.e. networking is always the best) also applies to hiring. Ask your five best programmers to give you the names of some of their friends and don't be afraid to aggressively go after them and lure them away from their current gig.
I am constantly astounded by the vigor with which some seemingly otherwise intelligent programmers pick up the Open Source banner and run with it.
Open Source is better for the world-at-large. Make no mistake about it. **The world-at-large is more productive for getting software for free.** They can spend the money they would have spent on software on other things.
But how could you think that this is better for *programmers*? I *always* ask this of my fellow IT professionals and they *always* respond with some vague argument about how participating in Open Source projects will get you "recognized"...Well, in the sarcastic wrods of Homer Simpson "Look at me: I'm making people _happy_".
Someone please enlighten me. Explain to me how we, as programmers, are better off when the fruits of our labor are surrendered for free. I'm not saying it doesn't make the economy-at-large more productive...clearly it benefits all the people with "business" and "creative" degrees, and since there are more of them than us, it clearly benefits the "larger group", so to speak. But how does it make *us* better off? I'm not so engrossed in matrerialism that I think how much I make is the only thing that matters...but I find the idea that my reward for being part of a highly successful OS project might be getting "recognized" and maybe if I'm lucky getting hired on as a code monkey for some "creative" people that used what I worked so hard on for free very distasteful.
I really tried to embrace the idea of the OS movement, but because no one could answer those questions I have come to regard it, at best, an idea for a perfect society (one where *everyone*, not just programmers, works for the common good) that is tragically ahead of its time and at worst a pox on the profession of programming.
Trust me, it's going to be huge.
I know this sounds strange, but I've been working as an app developer for *very* untechnical people for quite a while...in all modesty, I'd have to say that I am better at interface design than any programmer I've ever worked with by leaps and bounds...probably because learning CS was *really* tough for me, but I forced myself to do it anyway, so I can relate a little bit better to the average user when they're looking at the front end of a complex system. My secret when I need inspiration for some good UI design? Toys. The Fisher Price "playstation"-type ones are the best..
You're probably like "What??"...But think about it for a sec...most of the time when you're designing an interface, what is your goal? To make something that is 1) intuitive and 2) something that the user can hammer at repeatedly without getting annoyed/bored/cranky. Who does that better than Fisher-Price? Toddlers, for the purpose of UI design, are just like your users...they're not "dumb", they just don't start out with the same level of knowledge about the system that you're developing i.e., they need to use their intuition to learn about it. So take your cues from a toy company that's been around since you were a baby and make your UI just like their toys; Unbreakable. Colorful, big buttons that draw the user's attention...If you give them a square hole, give them a square peg to put in it (and make sure it's designed properly so they don't choke on it).
Honestly, UI design has always been the most natural thing to me...I tried to read a few books on it, but found that they typically bloviated on strange tangents, buzzwords, and irrelevant minutiae. So here's my advice in a nutshell: skip the books, go play with some toys.
One thing that most programmer's don't know, but they seem to teach every Lib arts student: The 'Z'. When people read or look at something, they tend to do it in a 'Z' pattern starting at the top left of the page and going to the bottom right.
And if anyone tries to tell you the mantra "If you make it easy enough for any idiot to use, only idiots will use it", ask them if they've seen www.google.com; There's always a "sweetspot" in UI design. If most of your users are only going to be using 1% of your interface (in google's case, the search box), don't clutter their view up with the 99% percent that they don't need (the advcanced search features).