views:

104

answers:

6

I've noticed a lot about jobs being posted that require the applicant to know several languages or technologies. Especially I find this with web development. I don't really like this considering the point that the more you specialize in several things the less you actually know about each one. I recognize that this is good for the bottom line when you can pay one person to do many things, but is it worth it for inferior service which isn't really their fault? A good read is research like this.

It shows that the more you multitask the worse quality work you do significantly.

Here's my question. I would really like to only specialize in a few things, because I like to be good at what I do and I don't want to lie when I tell someone I can do what they want. Will being more specialized in a few things make it harder for me to find a job then if I worked in many technologies?

A second point. My father is a DBA, he tells me that I would be shocked at the number of people who only learn enough of something to trick the employer they know it and then learn it after being hired. He then told me maybe if I needed to I should do the same. I don't like it and only want to apply at jobs I confidently know how to do. I see this as the right thing, yet I have trouble finding jobs while people who lie find them easier. Is this something I'm always going to have to deal with, will specializing more in a few things be better for me in the long run?

Interesting things I guess, just wanted to know from experienced developers. I'm 21 and specialize in html/css, javascript, and python. I also know some lisp stuff but just dabbling.

Thanks guys

A: 

With regards to web development: the general definition of Web Developer is someone who knows (at least) HTML, JS, probably a JS framework (like jQuery), CSS, a server side language (in your case, Python) and probably at least one server side framework (Django? I don't do any web develoment in Python). That's four or five languages right there.

That said, 99% of what you learn in a single language is applicable to another language. I do most of my work in Java and PHP, but I started learning C++ for a class this week, and within two days I was writing small OO applications. This was primarily because many of the things that PHP and Java do, they took from C++, but the same can really go for most modern languages. Were my apps production quality? Of course not, I've still got practice to do, but don't assume that just because someone is proficient in five or six languages that they'll automatically code more poorly; in fact I'd argue the opposite is probably true; you'll learn to look at things differently when using different languages, and as a result improve your code all-around.

EricBoersma
I don't know if I mean things that extend a language like Django or ajax libraries. I've seen lots of jobs where you need to have experience in asp,html/css,javascript,.net,perl,php and stuff like that.
Isaiah
A: 

It's obvious that employers would like employees with knowledge of multiple languages, the more the better, so the developers can be more flexible in their assignments. In my opinion, specialization in a few languages is a definite plus (if these languages are typically needed), but so is knowledge of multiple languages.

If you're specialized in python, having knowledge of OOP PHP, C# or Java (or other typical web languages) means you can easily adapt if the language is needed. If you have no knowledge of these languages, the learning curve will be substantially harder if those technologies are needed. As a web developer HTML/CSS/JavaScript is important regardless of server-side language.

The popular server-side languages are often fairly similar. If you read a few books on other languages, you will get a feel for their syntax and way of doing things, and will be able to pick up the language fairly quickly if needed.

Mads Jensen
+4  A: 

Unfortunately, there are a lot of people in the tech industry that do try to just skate by. Many of them will go as far as learn enough to pass a certification exam to fill the roll they think will get them easy money. There are a lot of DBAs that fit that description, because most managers don't really know what is expected or required of a DBA.

As far as development goes, the principles are what are really important. Once you understand the concepts of OOP and other paradigms, filling a role with those understandings puts you at the same level as 80% of the market competing for the same position. There are a lot of specialists out there that do not understand the basic principles of development, and have simply filled a role long enough to claim expertise, or they took some course or accreditation program. Most times, a good generalist will be able to perform and deliver just as well as those specialists.

Granted this is based on my own experiences, and on sweeping generalizations. Most of the time it comes down to selling yourself to the ignorant management and HR people, which will be looking for the buzzwords, certifications, and degrees. It's usually not until a second interview or internal evaluation do you get to the technical individual that can truly evaluate someone's history and understanding when it comes to development work.

So, should you specialize? Well, you're going to need to in order to have practical understand of the general principles for development. So, you'll end up specializing in something. But it is more important that while you're studying the deeper parts of a specialization, to understand the general principles. Specializing, without a true understanding of the concepts will put you in the same position as the COBOL and RPG programmers of the mainframe days. You're choosing to move into a field that changes very quickly, and specialization for specialization sake will get you stuck in a dead-end job at a big boring company. The more agile your mental capabilities and understand of the development paradigms is, the more freedom you'll have to work where and when you want.

Benjamin Anderson
And as a side note, though the web is the current platform of choice, learn or at least keep an interest in desktop development and mobile device development.You might be developing for the web, but you aren't developing on the web. Being able to script and develop your own utilities when needed will increase your productivity and your value as a developer. Because as many resources as there are on the web, you can't always find what you need already available and coded.
Benjamin Anderson
I agree, I have familiarity in a good number I haven't mentioned. I have basic familiarity in C#, java, and I did some perl in college. I also did some work in web.py, I've done some looking into django. I'm just not confident I know them enough to list them in a resume. I also know what you mean about being left behind in technology shifts. I have a good friend who was a big COBOL programmer who lost his job and still hasn't been able to find one. I guess I don't really mean to pick a few languages and stick with them, but stick with a few at one time while being aware of future developments
Isaiah
Yes, as long as you're paying attention to the shift of demand within the industry, specialization is current architectures, languages and frameworks is a sane thing to do. Spreading yourself out too much will result in too shallow of an understanding. Those people are usually the "architects" that don't do any real work, just talk, tell stores, and eventually become slightly effective management.
Benjamin Anderson
A: 

Will being more specialized in a few things make it harder for me to find a job then if I worked in many technologies?

Is this something I'm always going to have to deal with, will specializing more in a few things be better for me in the long run?

Even in web development (and in python world in particular) there are projects which try to utilize single language for all purposes, like Pyjamas. It is based on same idea implemented in Java by Google, GWT. So there are definitely some tendencies to get rid of the mix from development.

As for finding such job, usually it depends on your ability to persuade people rather than actual knowledge. You definitely could find someone willing to use Pyjamas/GWT for the web development, for example.

Daniel Kluev
+1  A: 

You're misapplying the word "multitask". Multitasking is trying to do multiple things at once, not using multiple languages.

I'd never hire someone that called himself a "specialist" at any language. To me, the word means nothing but "having a fatally limited range of expertise". Programming languages aren't fields with boundless levels of expertise, where a specialization will make you better than anyone else.

I also don't want to hear about a focus in any language, because learning a language isn't an accomplishment for a professional programmer; it's routine. A fluent understanding of JavaScript and its browser APIs is a few days of work--if someone overstates it, as if it's the result of hard months of training, that tells me it they're probably inexperienced.

Glenn Maynard
I don't agree. The syntax of any language is a few days work, but different languages have different paradigms and best practices. It takes weeks to mo ths to be really efficient in any given language unless they are essentially the same. That ssaid, focussi g to strongly on a single field will limit your usefullness. It's always good to know what the competition is doing:)
extraneon
I was writing useful code in Python in an hour or two, and writing code naturally and proficiently in a few days. JavaScript took much less time, it's a simpler language. If it takes months for an experienced programmer to become proficient in a language, the language is seriously flawed.
Glenn Maynard
A: 

You do realize how many things can be stacked together yet some people just think it is all one thing, right? For example, in my web development world there can be some MS-SQL servers in the back-end, some C# middle-tier stuff, some front-end ASP.Net also in C#, XSLT for some of the page renderrings used by Sitecore, the HTML/CSS of the pages along with some Javascript and jQuery that all comes together to be a web page that some may not see all of those skills coming together. While there may be some web developers that can stick to a single stack, I'm not sure how many of those there are really as many people just adapt to what is around them and to what employers may want them to use.

Secondly, you do realize that most places may have coding standards and practices you may not know right off the bat, right? There can be a period of adjustment while you figure out what works and doesn't work in that environment. While some practices can transition pretty easily, knowing that change is almost always right around the corner isn't necessarily a bad view to have.

You will always have to deal with a certain amount of lies and BS in the world. The only anomaly I can see would be if you worked in either academia or some research branch of Microsoft or Google where you don't experience what goes on in the real world in a sense. Someone may say they want an application that does X and you deliver that to a response of, "Well, ya know, I really wanted Y and Z in there too. Didn't you know that when I sent in the request?"

Bottom line, know what works well for you. Is it structure, specific tools, specific practices, or something else? Only you can know what works for you and it may take years to find the place that can appreciate this.

JB King