Does the development stack matter?



  • I am still studying for a degree, but I have had a few parttime jobs along the way. All of them were Microsoft oriented: SQL Server 2005, IIS, ASP and so on. Now I was always under the impression, that the "stack" doesn't really matter when it comes to being a good programmer. If you can make a great C# & SQL Server 2005 application, you can also make a great Java & Oracle application. Which was somewhat confirmed by this blogpost: http://www.codinghorror.com/blog/archives/001054.html 

    Now I was browsing for jobs at Google, and I notest they ask for experience in Linux/Unix. Now I don't have Linux experience, and I don't think installing Ubuntu is going to cut it. Say if I worked full time .NET for 5 years, could I apply at a open source shop (not Google specifically)?



  • @Ice^^Heat said:

    Now I was browsing for jobs at Google, and I notest they ask for experience in Linux/Unix. Now I don't have Linux experience, and I don't think installing Ubuntu is going to cut it. Say if I worked full time .NET for 5 years, could I apply at a open source shop (not Google specifically)?
    You could, but it's probably going to be held against you.  I'd think installing Linux and tinkering would be a great start.  At least then you'd have some comfort level. 

    Switching languages is always an issue, regardless of the platform.  But, if your background is in, say, C/C++, switching to *nix means a whole new set of build utilities, which is a much bigger deal than it sounds.  Still, what's the worst that can happen, they turn you down?



  • If you've only ever used one particular stack, you've not shown any adapdability.  If you don't have experience in the desired stack, they have to take it on faith that you'll be able to pick it up.  Note this line:@Coding Horror said:

    Platform experience is merely a baseline, not a differentiator of real importance.
    If you have experience with a variety of stacks, even if not in the one desired, it at least shows your flexibility and capability of learning new things.  Not as good as having experience in the desired stack, but better than only having used one thing.



  • @Ice^^Heat said:

    I am still studying for a degree, but I have had a few parttime jobs along the way. All of them were Microsoft oriented: SQL Server 2005, IIS, ASP and so on. Now I was always under the impression, that the "stack" doesn't really matter when it comes to being a good programmer.

    ...


    I actually think you've hit the nail on the head with that comment. It's a subtle point a lot of people miss, and unfortunatly, due to the opacity of developing software you're gonna be suprised just how little a lot of people know when it comes to programming (If you build a bridge out of balsa wood, people can see it's rickty and unstable, but if you build some software like that, so long as it does what it's supposed to noone (outside the software world) will ever really know or care as it's just that 'computery stuff').

    Unfortunatly, not really understanding what you're doing (apart from at a higher overview level) has become an accepted part of coding, and a lot of the tools out there are designed to make it easier for people to not know.

     As an example, in this office there are several people writing web based applications, but I think only one of them has any real idea of how webpages work, now I'm not expecting everyone to be intimiate with the inernals of HTTP, but by using development tools to hide some of the underlying plumming the subtalties of why you do something can often be lost. (EG, a web page is a stateless 'one time' thing, so any notions of state or interactiveness have to be bolted ontop of the underlying request/response architecture; knowing this can help you write better applications).

    Maybe I'm just a luddite though (we use IBMs websphere here, and I really really shy away from using it, but then again I can get by with Editplus and a macro that runs Ant and bounces tomcat, and I feel I have a better understanding of the way things work because of this.)

     To be honest, if your half way competent it's probably possible to blag most stuff as you'll find it easy enough to pick up.



  • Hmm, I think you slightly misunderstand the point of Jeff Atwood's post.  Years of experience is not a useful indicator of success in a position but experience with a particular technology can be very important.  Can somebody who has always worked with Microsoft tools work with Unix?  Of course.  However, it's going to count against you because I don't want someone starting from scratch and learning everything on my dime.  I've done plenty of interviews and I would like to think I am pretty good at separating the wheat from the chaff.  I don't outright reject anyone with good experience but I'm going to weigh your inexperience with my tools against others who might be more qualified.  Personally, I don't have the time or inclination to teach someone who has never used Unix, in other words "Does it say 'University' after my name?"  That's because I would much rather pay 50% more and get someone who is extremely experienced with my tools and who I don't have to teach.

     

    If you are planning on going the Open Source route, start learning this stuff today.  It will help tremendously when you start looking for a job.  Heck, after you feel confident in your abilities, find an Open Source project you like that is fairly well-known and start contributing code.  This is a fantastic way to convince potential employers of your worth and network with similar-minded people who can give you great job leads.  Truth be told, if you were sitting across from me and your resume said "No Linux experience" I would ask you plenty of questions to get a feel for how you think and learn, but even if you display amazing adaptability, you are still saying to me "It's going to cost half a year's salary and plenty of your time -- not to mention lost business opportunities -- to take me on."  There are not many situations where I would find this acceptable.



  •  you better start learning *nix my friend.   Once you get used to it, the power of the command line will amaze you.  I have to install unix tools or cygwin on all my windows computers now because it is so much faster to do some things with a powerful terminal than with Windows.



  • @HumanResources said:

    That's because I would much rather pay nothing more and get someone who claims to be extremely experienced with my tools and who I don't have to budget for teaching.
     

     ^-- this is more like what most people are doing



  • @arty said:

    @HumanResources said:

    That's because I would much rather pay nothing more and get someone who claims to be extremely experienced with my tools and who I don't have to budget for teaching.
     

     ^-- this is more like what most people are doing

    Sure, and they will generally end up paying dearly for it.  In my case, I always strive to get the best people I can and I am willing to obtain the budget necessary for it. 



  • @tster said:

    Once you get used to it, the power of the command line will amaze you.  I have to install unix tools or cygwin on all my windows computers now because it is so much faster to do some things with a powerful terminal than with Windows.

     

    Repeat after me:

    The command line is my friend.

    The command line is my friend.

    The command line is my friend.



  • Say if I wanted to start contributing code to open source projects, where would I start? Experience level: Junior.



  • How about sourceforge.net?  Find a project you like, start exploring the code, and try your hand at a bug fix or three.



  • @bstorer said:

    How about sourceforge.net?  Find a project you like, start exploring the code, and try your hand at a bug fix or three.

    Yep.  Find something you like that plays to your strengths (system programming, daemon servers, GUI apps, web apps) and start playing with it.  Be sure it's something you are interested in because "fun factor" is going to be your biggest motivator for following through with this.  Then jump in to any forums/listservs/etc.. that the project has and read posts by the regulars to get a feel for the community around the project.  If it feels comfortable, start offering to so small tasks like documentation or bug fixes and work your way up.  Being a "bug bitch" and handling all the piddly little junk the greybeards don't want to mess around with is a good way to earn respect and become familiar with the code.  After awhile you will be part of the community and can go on to develop new features, etc..  By this point your name will already be in the code itself and possibly the changelogs, so you've got the credibility there.

     

    Once again, I will point out this is a lot to do if you are just looking for a job.  You really have to be interested in this stuff and be willing to work for the sake of the work itself.  You also have to like the community around the project and be able to fit in well without letting your ego get in the way.  If that sounds interesting to you, you're probably a good match for FOSS development.  If not, you'd best avoid it.  For me personally, I'm not really a good match for "community-driven" development, but plenty of people love it.  Good luck with whatever you decide to do!



  • @morbiuswilters said:

    If that sounds interesting to you, you're probably a good match for FOSS development.  If not, you'd best avoid it.  For me personally, I'm not really a good match for "community-driven" development, but plenty of people love it.  Good luck with whatever you decide to do!
    It really does depend upon the community.  Some communities are just a group of like-minded programmers who code their portions and keep the listserv quiet other than to discuss the interaction of their code.  Other communities require your CV, medical history, and more demeaning tasks than a frat induction just to join, and then they expect you to be involved in the weekly discussions on the future of the application.  Or, you could devote your time to a completely worthless project.



  • @bstorer said:

    It really does depend upon the community.  Some communities are just a group of like-minded programmers who code their portions and keep the listserv quiet other than to discuss the interaction of their code.  Other communities require your CV, medical history, and more demeaning tasks than a frat induction just to join, and then they expect you to be involved in the weekly discussions on the future of the application.  Or, you could devote your time to a completely worthless project.

    Yeah, I just don't do well no matter what the community.  I prefer to develop alone and if I'm on a team I have to be in a leadership position.  I wouldn't say my ego is too big, but I can be quite rude when dealing with people and when I get into technical arguments I tend to push to get my way.  If a technical decision I don't like is implemented I will spend my free time working on my idea and will wait for the original idea to fail so I can have mine ready.  I know I'm human and quite capable of errors but I relentlessly try to improve everything I work on, no matter who originally created it.  I also prefer being in a leadership position because I have a strong sense of direction and I'm usually thinking several steps ahead. 



  • @morbiuswilters said:

    Yeah, I just don't do well no matter what the community.
    That's because you're a crotchety bastard and nobody likes you.  I don't have this problem, because everybody likes me.  Consider being more like me.  Actually, that's good advice for all of you.



  • @bstorer said:

    Consider being more like me.  Actually, that's good advice for all of you.

    I would, but I don't want to end up kicking my own ass as well!  😛 



  • Unfortunately, I'm afraid that 5 years of .net experience do not qualify you for a job in a *nix environment. At least not if they want you to be reasonably productive anytime soon. At an abstract level, most programming languages are relatively similar, but that doesn't necessarily help you the get the actual job done. In a Linux/Unix environment, you might run into the situation where you have to use vi through a painfully slow ssh connection to edit a config file. 100 years of VS mastership won't help you to do that. (BTW, for the same reason I wouldn't feel well if I had to apply for a job in MS shop, though I have experience in C# programming)

    So, if yo apply at an open source shop, be prepared to be ranked you as a rookie. 



  • @morbiuswilters said:

    Yeah, I just don't do well no matter what the community. I prefer to develop alone and if I'm on a team I have to be in a leadership position. I wouldn't say my ego is too big, but I can be quite rude when dealing with people and when I get into technical arguments I tend to push to get my way. If a technical decision I don't like is implemented I will spend my free time working on my idea and will wait for the original idea to fail so I can have mine ready. I know I'm human and quite capable of errors but I relentlessly try to improve everything I work on, no matter who originally created it. I also prefer being in a leadership position because I have a strong sense of direction and I'm usually thinking several steps ahead.



  • Lets stay ontopic, for trolling/flaming/sarcasm, ya'll can go play in the Vista thread.

    Trying to do some open source work seems an excellent opportunity to gain some experience with another stack. There are plenty of days I'm bored and wished I had some "fun" dev work to do. Never realized its right under my nose.

    However, I do have some trouble adapting to existing codebases, and that inability is sort of an obstacle at jobs. In college you are usually learned to design trivial applications, which you can all code by yourself.  Which is the direct opposite of the real world. And there is a project in the near-future for me on hold, where I and a designer friend of my are going to build a database driven website. But he has no coding experience whatsoever, and does design with Adobe tools. So that leaves me wondering how am I going to bridge the developer/designer gap. Adding logic to WYCIWYG html can be messy.

    Coding is one thing, working with people on real stuff, is a whole other ball game.



  • Just install Linux and get your hands dirty. That doesn't mean you have to start working on a large codebase like Firefox or OpenOffice.org. Just try to make a nice little webapp using Rails, Java or PHP and MySQL or PostgreSQL. Try to get the whole thing running. Once you are there - and this can be as little as a CD collection management webapp - you will have learned a lot. Your experience will surely help you to leverage that skills to bigger apps.

    BTW, I can only partially agrree with the Codinghorror article mentioned in the original post. If a company does something very special, like the low-level-security stuff mentioned, well, they just have to hire bright people and train them. There's no way around it, since only a very small number of people have that skill and are available on the job market. On the other hand, if I need people for a J2EE project, I don't have to hire ASP.net experts and retrain them. I can hire J2EE-experienced people in the first place. Especially in the Java world, I just cannot wait 6 Months for them to get used to most-hyped-framework-of-the-week, because in 6 months, that skill will have become obsolete. I will need the-new-hyped-framework people then. Does anybody use Spring anymore?


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.