The Web Development Skills Crisis
snydeq writes "Fatal Exception's Neil McAllister raises questions regarding Web development skills in an era of constant innovation. Sure, low barriers to entry give underdog technologies ample opportunity to thrive without the backing of name-brand vendors. But doesn't this fragmentation of the Web development market put undue pressure on developers to specialize? Choosing one tool to be your bread and butter from a field this broad is one thing, McAllister writes. Recruiting talent for a Web project when your technology requirements eliminate most of the applicants is another. The result is a crisis, McAllister concludes, one in which maintaining a marketable skill set gets more and more difficult as the so-called state of the art changes on an almost daily basis."
Everybody and their cousin seems to be calling themselves Web Developers...
There's no place like localhost
I think the emphasis needs to be less on specific and proprietary technologies and more on how a candidate thinks. While the task and platform/architecture at hand is important, picking someone because they know flash, and you're "doing" flash may be the wrong reasoning. Instead, focus on picking someone who has some proven background, strong in at least a couple of areas. Verify they really are strong, but then ask them questions that make them think. Give them problems to solve. Give them something unsolvable to solve. See how the react.
Getting a sense of how they maneuver in problem-solving situations is going to be a much better indicator of their eventual worth than some credential (certificate, etc.) in the chosen technology du jour. A good tech can always and easily adapt to new and different ways to do things.
Is the state of the art really changing that fast or is it all a problem of "buzzword turbulence", if you will?
Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
Real programmers don't care what language they need to write applications in. They write them in C.
Recently, I had the opportunity to get back into doing some internal web development after years of not doing much web work.
My issue is sorting out all the new technologies that have come out since then. I don't have time to learn them all before I pick one.
I think I'm going with Ruby on Rails, but I have no idea if this is the best choice. I hear good things. You go by word of mouth.
Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
Real engineers can work in any language. ... except Java.
StoneCypher is Full of BS
because you are a moron.
if someone was building a house, they would hire carpenters.
if someone was building a gigantic stadium, they would hire welders.
they wouldnt hire somebody 'who has experience with ryobi chop saws and drills' or 'must have 10 years experience with fiberglass hammers'. you would assume the person could figure out that a fiber glass hammer is not a big deal compared to a wooden hammer or a plastic hammer, and a ryobi chop saw works pretty much like every other damn chop saw.
then again, if you were in the building trades, you wouldnt call yourself an 'engineer' just because you can do amazing things with a crane or a nail gun.
As many libraries there are for the web, there are still ten times as many GUI toolkits for traditional GUI's. Oh, then operating systems, platforms, virtual machines, etc, etc. The whole blog is silly. As complicated as web programming has become, it's still many times simpler than trying to create a gui in almost any other language (without an IDE).
If an officer ever threatens to taze you, say you have a pacemaker.
Sadist.
My organization just started a unique online system, which was custom written by a vendor. The software is all PHP with a Linux/MySQL backend, and uses OSS software throughout. I took the reins to get the system up and running, but now, for the first time, we started looking for a dedicated web developer to publish works to this site, work on troubleshooting, and work with the vendor to design modifications to it. We went through over a dozen interviews over the past few weeks. It was bloody awful.
My (admittedly high) goals was a web developer that new PHP, could work with Linux (SSH), and had very basic client-side programming (C, Perl, whatever) to develop more tools for us down the road. Oh, and someone that could do some graphic art work would be a definite value-add.
Every single person that came in was an mainly ASP or ASP.NET programmer. Only two had Linux experience. Three or four had Photoshop experience. As a programmer myself, I ventured to the hopeful candidates on what languages they would like to learn next, or what skills they want to improve upon. Across the board, they were all happy staying with ASP, didn't want to learn PHP, and some inquired into when we would want to move from PHP to ASP. I had intentionally kept the field open to non-PHP people to try and find a true programmer that just didn't have those letters on their resume, but the majority were sticking themselves to a single language.
When all was said and done, we hired someone. He didn't know Linux, and didn't know PHP, but he was a definite "Active Learner". He was self-taught in nearly everything he knew, and was willing to learn any language we needed him to learn. He was one of the two candidates that had expressively mentioned that programming was just picking up a language and using it; all the rest were ASP specialists and thought that using another language wasn't worth their investment.
So you're equating A fiberglass hammer vs a wooden hammer with Ruby on Rails vs Django? Maybe if using the fiberglass hammer required that the user speak English while the wooden one required Spanish. A better analogy would be asking Kanye West to write you a hit rap song in Sanskrit. Not. Gonna. Happen.
I open up MS-Word. Type things in, move things around, paint borders, etc. etc.
then I...
File-->Save As...
web page
Ta Da! I'm a web designer
Traditional web applications are like the mainframe applications of yesteryear. They're very form/request-oriented, and they're not necessarily meant to be particularly responsive (although in some ways, web form apps can be the most responsive) but instead they're meant to enable to allow a lot of people to work with the same data at once. And they can be assembled from baling wire and chewing gum...
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Web development is such a dead-end job. Most web sites are by kids, imbeciles and graphic designers who fancy themselves as coders. Trying to maintain or develop their code is soul-destroying.
The next time you try to use a small business web site to buy something, do yourself a favour and look at the page source.
If your details aren't being sent out over the intartubes unecrypted, and if you still want to make the "purchase" you might see a way to pay nothing, or bare minimum with a discount.
Scotland is a good place to start looking.
Stick Men
I've run into this very thing before in trying to decide what to study. There are so many different web languages, each of which come with their own toolsets and frameworks. How are we expected to keep up with it all? I don't want to commit to a language or technology that might easily be eclipsed within 2-3 years.
My biggest concern is the amount of time required just to keep up with the Jonses. How much time can I siphon away from paying work on php to learn about rails or django? What about the X number of new Ajax toolkits that have recently emerged, or some supposedly fantastic deployment set? I think of how fast javascript has accelerated since 2005 from digraceful reject to shining star, and it truly terrifies me how little I know of it. I'm used to mastering a language, understanding its uses and differences from others, then applying it towards the future. Do I have time to do that any more?
In the end, I came to the conclusion that I would just study Java and its ilk, because it seems to have made major inroads in enterprise applications and it's free-ish. That's good enough for me, and it bodes well for long term stability.
checking for libvirus... no
ERROR, libvirus.so not found, terminating
If you lower the hurdle that much then raise it suddenly, more than a few people are going to bash their faces in. The barrier to entry being so low is what causes the lack of good developers, people plateau too quickly, few excel.
Excuse me while I gather the virgin sacrifice and assemble the pentagram required to solve your problem
Right now .NET, J2EE, LAMP seem to be the key 3 divisions in the field. Whats really pissing me off is I was recently interviewing, and I was getting people wanting 1 years experience in .NET 3.5 which has only be released for a few months, and I was getting all these interview questions about brand new stuff that no one has done. J2EE is basically Weblogic jobs. LAMP doesn't seem to have much steam in the Enterprise, but mostly for small companies or small applications. Also I've been getting all kinds of screenings from people who don't know what they are talking about. Nowadays the trend seems to be how fancy of an AJAX UI can you create, barring the obvious difficulties of cross platform development and support for older browsers. I can see whats going to happen: many projects are going to fail because AJAX applications are very difficult to develop for a huge audience and reliably and requires much more skill than just html.
#1. If they're taking 6 months, you've got the wrong person. Anyone who is decently qualified would be able to pick up the new tool in less than a month.
I can't even imagine how to learn (to the level required of a professional developer) any large subset of, for example, the java, python, C++ standard libraries in less than a month, and I'm already at least passingly familiar with all of them. I will stick with my gardening for a career path, I guess. While I have no doubt any high-schooler could learn the basic language syntax of the above examples in less than a day, the libraries are typically the real value in any application development language.
#2. You'd have to be a damn good project manager to be able to spec out the requirements sufficiently that you could hire a contractor like that.
Or have started already... or have decided on the tools... or have the tools decided for you already by the existing environment... etc etc.
Which is why you want to hire people who can learn new approaches quickly. And the goods ones can. They know the technology, not the tool
See my response to #1, above. Off to my garden now... :D
Since they only match acronyms and can't discriminate from a person capable of easily assimilating new technologies vs. someone can't can't and/or is very inexperienced.
More acronyms = more HR inefficiency.
-M
Yeah, he'd just rap on top of some guy reciting the RigVeda or something.
"We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
I'm glad my company (Japanese) doesn't have this problem. My last job had about a week of actual training that wasn't very useful. My new company is sending me to external training ($$$) for about 30 days. Then I get about 12 weeks of company training in Japan. And then 5 weeks of on the job training, and back to Japan for another 4 weeks. Its about 6 months of me doing nothing productive, just training heavilly. The company is making a serious investment in me, and from what I have seen from it in the last month, I will hopefully be sticking with them for a long time.
Don't skimp on the training. Its exactly what makes your employees experts in their areas and want to stick around. We also have casual Friday every day, and that doesn't hurt either.
Even those who arrange and design shrubberies are under considerable economic stress at this period in history.
Always kinda blew my mind when people get anal about specific technologies.
Do I know JavaEE? PHP? Ajax?
Doesn't matter.
Why?
Because I know programming. WTF does that mean? It means that language/technology is irrelevant because it takes me a matter of days to pick up on new languages/technologies.
Anyone who touts a single language as some kind of achievement is fucking pathetic.
FLAME ON!
A good professional programmer should be able pick up a new imperative language well enough to get started in a few days. It is almost certainly take longer to learn about the application area then it will take to learn a new programming language.
If Kanye West is a good profession song writer, he should be able to write a decent country music song in a few days, too.
This just in: people who can constantly master and excel at new technologies with minimal lead time, constantly changing specs, expectations, tools, and standards, and put them in front of end users in rapid, frequent development bursts are hard to come by.
Wow, who'dathunkit?
I think there's a trifecta of issues that plague the hiring of web developers:
(1) Rapid Technological Change means no OJT via college. Unless you're doing your web tech in Java, there's a decent chance you're not getting college grads trained in your language and tools. The good ones will have adaptable skills of course. You do know how to distinguish between the good just-graduated devs and the bad, right? No? Oh...
(2) Crowd of Pretenders lowers expectations of skill/quality, and salary. Shockingly, unqualified idiots are willing to work for less. Some places hear about these mythical highly skilled web devs willing to work full time (+?) for $32k a year, and generously offer $40k. They get no response, or they get morons. This reflects poorly back on web developers in general, especially those who are skilled programmers.
(3) An incredibly low barrier to entry for many models means talented people start their own companies. If I'm one of the most skilled, and can handle (or partner) to provide design, programming, and business aspects of a web page, there's a decent chance I can find a niche where I can make a run at a real business. Which is why there are a thousand Bantrs and Flickrs and Cheezbrgrs and Meebo Zeebo Zimbra Flumbrs all spun up. The expected value for a buyout by Google or being the next SmugMug is so high, even a small chance makes it worth it, especially if you can get enough funding to put food on the table.
And #3 has an inverse: the low barrier to entry also means that a lot of people get their godaddy hosting, start tossing together web pages with their pirated photoshop, and think they're ready to make 80k a year.
It's so horrifically bad, I've considered going into business as an interviewer. I've had remarkable success getting good devs on my team. I think a major problem with companies hiring web developers is: they don't know how. They don't know which skills out there are transitive to skills they need. They don't know which related skills (security, networking, system administration and integration, database architecture) might be critical for their project.
As a lot of cogent programmer/bloggers have pointed out, you can only really hire someone better than you are by luck. I keep coming across companies who could really, really use some programming/IT experience - in fact, it's so bad, they don't even know WHY they need it. Their knowledge isn't sufficient to even inform them to what good staff could do for them. You start a little project for them and ask, "Well, why not do this?" "Oh, you can do that?" "Sure, and we could also..." "Really? Can you...?"
Ultimately, you also get what you pay for. If people expect "good" web developers to work for way less than skilled programmers in other languages, they're nuts.
OTOH, I think the specialization argument is bunk. How many specialties are there in application programming? Everything from databases to development tools to reporting, 3d software, operating systems, embedded, RTOS, a/v en/decoding - we could go on all day. But web is fragmented? Heck, web isn't *that* fragmented. It's one of the things that makes development so fun, fast, and effective using it as a platform.
"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."
I think the colleges/university's are partially to blame as well. It seems that any of the kids I interview know how to use flash, photoshop, dreamweaver, etc, but the schools don't seem to be teaching them the creative process.
It's as if the schools teach them how to hammer nails into a board and then send them out into the world letting them think that they're carpenters.
It would be nice if the schools would force the students to learn nothing but design principles the first year and then start introducing them to the different tool sets. If you have a strong concept of the pre-planning/design phase, then your better suited to choose from the various tools for any particular project or problem.
I'm assuming that the schools need to have the latest and greatest flashy tools to try and wow the potential students. I don't know.
The real Sig captains the Northwestern. This one captains
I can only assume that a "career programmer" or and hr person started this thread as it feels grossly out of scope from reality.
Step 1 - The Posting, as a job poster, are you looking for script developers, or application developers. In general, scripts are loosely types, and applications - being compiled and required a high degree of stability - are strongly typed.
Once you realize this, you will also realize that script languages PHP and Ruby and JavaScript [ Python, Perl, etc ] fall under a very specific easy to find umbrella.
Conversly, C#, Java, ASP... are also very similar and _could_ be found under the same umbrella.
Find out what type of programming you ACTUALLY do. Procedural, Imperative, Event Drive, Prototype, OO.... FIND OUT.
Step 2 - The Interview (More important than step 1) - once you've found the candidate, get one of your true developers into the interview. Time and again a line has been drawn between a "career programmer" and a "developer" or "geek" and a geek should know another geek, because they will share information like mating rabbits, and your "career developers" will get lost in the discussion. It's very possible that while they are catching up, the geeks will have already devised an approach to the company's problem.
Geeks are curious, and smart, and take pride in their work. It's a matter of pride to know why, and if they don't, to find out, and to make it work even if the prescribed methods fail.
In their spare time, geeks are geeking, and becoming better, smarter, stronger, faster. "Career programmers" use their time searching for the next highest salary, shmoozing for a cushy course to attend, and perhaps drinking beer (killing brain cells)
"Career programmers" are only in it for the money. Intelligent or not, I've always found inferior results from someone who doesn't generally care about the problem / logic at hand.
Step 3 - Architecture. Now that you have the tool, apply it to the project. A persons' preference and specialization is still a factor, but the manager hedging that "We do Ruby" is not an excuse.
I would agree that you can't test every framework or library can be tested to fit, but I think you would agree that a framework with a strong, open, and well-documented API is better (aside from bugs). With a true geek, API is all he requires to start laying the foundation on your application, and it doesn't require months.
PS - yes, geeks need sites like this to aggregate their data at the pace they are able to acquire it, but simply posting and reading here is not a clear indicator.
Hogwash! The problem with web development is knowing the limits and oddities of various sub-tools, such as DOM and specific browser vendors; or even the quirks of something specific like Rails. It's NOT about mastering some magic equation or closures. Those who learn and adjust to this changing swamp of sub-tools are the most successful.
The biggest problem is lack of consistent and usable web GUI engine standards. This is what the industry needs the most.
Table-ized A.I.
I am 43 years old. I have been programming for over 25 years but just can't keep up with the new "state of the art" programming techniques/APIs and frameworks that seem to come out every year. When I was young and hungry, I would spend my nights reading computer books and newslists. Now that I know I'm mortal, I just don't want to do this anymore. I spent 20 years learning C++, Java and .NET - but just don't want to relearn how to do my job over and over again.
Am I a dinosaur? - perhaps, but I'm also yet another experienced developer who is sick of the constant change and will be soon making the move into "management".
Perhaps, this is the reason why at 43, I'm considered an 'old dude' amoungst my peers!
To my shock, I got an angry call from their HR department, who were actually calling to chew me out for applying even though I was "unqualified" for not having the required 6 years of experience.
The weird thing is that you got a phone call from them. Why would they not just send you a generic rejection letter, but actually make the effort to pick up the phone and take the time to call you personally? Something seems fishy -- like it was posted to satisfy some requirement but could get them in trouble if someone actually found out that it was fake and that they had no intention of filling the position -- if it existed in the first place.
Once you've gotten past the whitespace thing in Python you'll slap your forehead and say why didn't I use this language before? I do my development in Django and I am far more productive in it than in other web development applications. If you need to work in Java there's Jython. If you need to work in .NET there's IronPython.
There are a lot of other cool Python web technologies out there as well:TurboGears, WSGI, Plone, Zope, Twisted.
What major company hired Guido van Rossum, BDFL? What major company rolled out GoogleAppEngine (based on Django)? Ruby's pretty hot right now but so is Python.
"You'll get nothing, and you'll like it!"
Well, for starters, if they paid to retain the employee, they wouldn't have a position to fill, right? Second, when they do get that opening, they can't as easily convince another good programmer to come on board to fill that position.
That was the point of this thread. The perceived shortage isn't really an actual shortage. It's like a high school dropout complaining that there is a shortage of companies paying more than minimum wage. There is likely more than enough programmers with the required expertise. It's just a lot of them have probably moved on to working in areas that actually pay more reasonably. Good programmers are very versatile.
Add to that that some companies are either too cheap to hire good admins to set up web environments properly so the developer has to also be a jack of all trades in that dept.
You can also add the fact that if a client has got some problems internally on their networks
you must be able to bypass this so as to make your app 'work' in their environment...or else you get the old...'well this doesn't work so it's not a good product'.
More like stop being a cheap ass and get web servers configured properly...
If i could just code, I guess i would be much more advanced in my field then I am....
but i would not be able to set up a full domain with webservers and cache servers running
in a multi os environment.