Ask Slashdot: Are General Engineering Skills Undervalued In Web Development?
nerdyalien writes After reading a recent post about developer competence, I can't help but to ask the question, "Are general engineering skills undervalued in web development?" I am an EE major. The course I completed, and the professors who taught it; mainly emphasized on developing skills rather memorizing reams of facts and figures. As a result, I have acquired a multitude of skills such as analytical, research, programming, communication, project management, planning, self-learning, etc.
A little over 3 years ago, I made the fateful decision to become a web developer in a small SME in SEA. Admittedly, I have an unstructured knowledge about CS theory. Still, within a short period of time I picked up the essentials of web development craft, and delivered reliable web applications. Most of all, I made good use of my existing technical/soft skills, despite the lack of my CS pedigree.
Recently I went through a couple of job interviews in MNCs, SMEs and start-ups alike. All of them grilled my CS theory or Java knowledge. Almost no interviewer asked me about my other skills (or past experiences) that could be helpful in the developer position. In my experience, web development is a cocktail of competing programming languages, frameworks and standards. Rarely a developer gets exposed to a single technology for a substantial period to learn it inside-out. Even still, in web development world, deep in-depth knowledge in anything will be outdated in few years' time as new technologies roll out. So, what matter's today? Knowledge on a particular technology or re-usable engineering skills ?
A little over 3 years ago, I made the fateful decision to become a web developer in a small SME in SEA. Admittedly, I have an unstructured knowledge about CS theory. Still, within a short period of time I picked up the essentials of web development craft, and delivered reliable web applications. Most of all, I made good use of my existing technical/soft skills, despite the lack of my CS pedigree.
Recently I went through a couple of job interviews in MNCs, SMEs and start-ups alike. All of them grilled my CS theory or Java knowledge. Almost no interviewer asked me about my other skills (or past experiences) that could be helpful in the developer position. In my experience, web development is a cocktail of competing programming languages, frameworks and standards. Rarely a developer gets exposed to a single technology for a substantial period to learn it inside-out. Even still, in web development world, deep in-depth knowledge in anything will be outdated in few years' time as new technologies roll out. So, what matter's today? Knowledge on a particular technology or re-usable engineering skills ?
and can not produce a decent web page to save my life.
I am very small, utmostly microscopic.
If you are ever in a position to hire people, you will find it is the hardest business skill to acquire. HR people don't understand the types of skills technical jobs require, and hiring managers don't understand how to evaluate applicants on anything except technical skills.
The result is hiring on trivial but easily tested skills. I was just turned down for a job because, after 20 years of delivering successful projects, which I had documented, they wanted me to take a basic coding test, and I refused.
I'm not usually that ornery, but at some point I want the people I might be working with to show some common sense.
All I can suggest is you are going to run into this over and over, and the only thing you can do about it, especially early in your career, is learn CSS, JavaScript and JavaScript frameworks, and HTML5. You are going to need to learn them anyway.
As for Java, that's a big one, but you could get started. All of the tools you need are free and are available for both Windows and Linux.
Being in Webdev for 15 years I can say that getting the job done quick is all that counts. Most of the web is run by the bizarest of contraptions in software you can imagine - but they get the job done. Take for instance Wordpress: It's a prime example for bad software architecture and the inner platform antipattern.
But it works. It delivers, Any idiot can download and install WP, pop in a theme and start fiddling. The webev gets called in when the system is all gummed up and feature x,y or z has to be added with magic programming trick (i.e. dirty hacks) quickly.
Same goes for PHP as a PL. Strange, bizar and hilarious, but it get's the job done.
That's what counts.
All that been said, it's precisely because of this that your skills as a webdev determine wether you'll have some freedom to pick your job and a fair salary or if you'll be treaded badly. I've been through so many projects that I can tell you even the crappy devs don't mean it. If there's a crew of 5 coding without versioning, that's because their to dumb to know any better and they won't listen to you if you're not ready to walk out of a job that only pays you a McDs salary.
If however, you've got the skills and the tools, most people will think you're a demi-god. Use whatever technology you want, but be able to deliver. I've started building my own toolkit a while ago - it involves bash-cli snippets and PHP code - and dive into any mess my client/boss requires me to work with, be it Wordpress, Drupal, Joomla or whatever. I've since become good enough that I can make some demands, but I have no illusions about my outlook in the webdev world. It is a volatile occupation and unless you move into Java/Oralce, SAP or MS territory, it will stay that way.
The upside is the freedom we have. We get to use FOSS most of the time as primary tools of trade and get to try out new things 5 times a week - neat. You can't have it both ways.
In a nutshell: If you want to stand your ground, you have to be good at both: Overall problem solving experience and proficient expert knowledge in the current tools of your trade. If you stick to building those mostly from tried-and-true FOSS technologies, you'll keep pointless learning to a minimum. For instance, I make a point of using grep to search for snippets of code in a project. My IDE may be dead 3 years from now, as may be the system I'm using. grep will be around until I die.
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
Web and other programming is just that and is not engineering.
I saw this happening in the mid 90s - programmers insisting on calling themselves engineers.
I do not know why this happened other than the pathetic egos of our profession and engineering envy - like economists have physics envy. Somehow, programmers got it in their heads that being called an engineer is better than being a programmer or software developer. Why? I have known plenty of engineers who couldn't lay down a decent program. Spaghetti city!
Me, I'm just a programmer - thank you very much. I am not an engineer because I do not have an engineering degree, the experience or the exams that says I am.
Within the web development industry, which the submitter is referring to, "CS" is often taken to refer to "Adobe Creative Suite". You know, it included Photoshop, Dreamweaver, and lots of other tools that are popular within the web design and development industry. Even since the switch to Create Cloud, a lot of people still refer to it as "CS" out of habit. Computer science isn't their first thought when hearing or seeing that acronym.
Again, within the web development industry, "EE" is first and foremost known to refer to the "Experts-Exchange" website. Electrical engineering isn't the first thought when hearing or seeing that acronym.
So the submitter probably is using acronyms that he thinks mean one thing, but the audience he's expressing them to takes them as having a totally different meaning. Then he wonders why they don't value him. It's because as far as they're concerned, he's talking gibberish to them.
The companies are probably looking for the cheapest code monkeys they can find and thus don't want to pay for any other skills.
I'm a consultant - I convert gibberish into cash-flow.
It used to be that you'd go in and you'd be asked to talk about the projects that are on your CV, talk about what challenges you faced and how you solved them, and you'd be asked some basic technical questions to confirm that you hadn't completely made it all up.
Now, nobody gives a crap about your CV. The last time I went through it, to be a PHP/MySQL developer, the tech lead or whatever came in without my resume in hand, gave a curt look and a limp handshake, and launched into it:
"I have 3 questions."
First off:
"Design a game of blackjack." with no further explanation. A silent stare as I asked for clarification. Okay you want me to give you an object model. Doing that.
Much pain later and condescension and derision later (yet in my opinion done well enough to be functional,) comes the second question with only 10 minutes in the hour remaining:
"Design an algorithm to efficiently sort a list of trillions of elements."
And I barely got off the ground on that one. Bounced some thoughts at him with the same derision and impatience in return. Needless to say I never got to hear what the third question was.
His colleagues were not much nicer. I didn't get the job, but fuck them. I wouldn't want to work with these miserable assholes anyway. As I was walked out I saw their big developer pit or whatever they call it, this nightmarish contraption with no privacy and all this agile frenzy going on. No windows, all artificial light in the middle of the day, these giant monitors mounted on walls showing the build status or whatever the fuck, this cheap synthetic carpet, not a single person smiling. I'm sure they are very productive and God bless em.
OTOH, yup, I'm still looking for full time work.
Those things you mentioned are either not general or are general principles of thinking, not really related to engineering. Understanding of physics is the only one that could be said to be a general engineering principle, but that's kind of a tautology. "To understand physical systems you have to understand physical systems."
> Really? I have a four year engineering degree, and spend the first two years of that learning mostly general principles.
I don't know where you went to school but I spent the first two years learning physics and math. Are you saying general engineering principles include math? If that's what you're saying then we are in full agreement. Programmers should learn math.
A fool and his hard drive are soon parted.
A structured web app will use something like AngularJs to bind that click to a controller method, separating layout from logic. To have any level of quality in the code delivering a web app, even a 'simple' one, you're going to have to use an html5 browser with javascript enabled. If you prefer not to, I prefer you not use my apps because I'll be damned if I'm going back to the days of slow-loading pages glued together. Even my personal shopping list app which is a glorified simplification of the standard todo app, uses ajax to provide a responsive experience. When I select 20 items to be removed, I don't have to wait for 20 page reloads on a slow connection. 20 async remove requests spin up and the entire job is done in about a second. Go back to the old days? Hell no.
I have a formal training in engineering and no one ever gave me a set of general principles to learn.
... then you either didn't get a real 4-year engineering degree, or you somehow missed the fucking point:
Every engineering assignment ever = show your work so it can be properly reviewed.
Statics = how to break down and analyze big problems.
Linear algebra = how to create models of systems.
Multivariate calculus = how to understand problems with multiple inputs.
Differential calculus = how to identify boundary conditions, transients, and exceptions that can fuck up systems.
Fourier / Laplace / S / Z / transforms = how to organize systems so simpler solutions can be applied.
Right, the whole story came across as "I'm amazing, but for some reason interviewers keep turning me down after finding gaps in my knowledge, shouldn't they just overlook the gaps in my knowledge and see me for how amazing I really am?"
The 2 best programmers I have ever worked with in my life, both had little more than high school educations. One quit programming to become a massage therapist. I dont know what it takes in the heart/mind to be a great developer, but I do know that neither a degree in CS or Engineering is a requisite.
Our number 1 dev just quit to work on his film hobby. He was also completely self-taught, no formal education. Some people just 'have it'. Some don't, no matter how long they study.
It is dangerous to be right when the government is wrong.