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 ?
Most web sites seems to have far more engineering and art than they need, and far less UX that they should. I don't care how pretty and dynamic a site is if the user experience sucks.
Yeah, they were probably all sitting there, reading through your resume, trying to figure out just what the fuck all of the acronyms you used in it actually mean.
I mean, in a fairly short Slashdot submission summary you managed to work in these:
I'm sure that you're dropping obscure acronyms in everything else you write, in some vain attempt to seem more important than perhaps you really are.
Unless you are going to be developing a site that is directly related to an EE field (mathematics/signal analysis/electronic parts etc), why would you expect your knowledge to be any more use than say someone else's knowledge of law ? If you want topics that would be useful but aren't directly related, art/art history/graphic design/advertising all come to mind.
I know from experience my undergrad was EE and I have Professional Engineering license and it really doesn't overlap much except for problem solving skills and logical thought.
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
I've spent about 20 years refining my programming stereotypes. I think they fit the data pretty well now. Here's my take on you, simply because you're an EE:
* You're smart enough to pick up pretty much any CS concept, from the simple to the arcane. For the most part, only physics majors will simply be smarter than you.
* Your code will look like crap, until you put effort into writing more idiomatically and until you learn the design patterns that help programmers use to tame complexity. Your code will, generally speaking, be harder to read than that produced by CS and physics majors, until you put some work into it.
* You mentioned having only a fragmented understanding of CS theory. I think that's true for most of us (I have a PhD in CS). There's just so much of programming for which good theory has been developed: type systems, parallelism (concurrent sequential processes, deadlock rules), user interfaces (kind of), system complexity, static / dynamic analysis of code, relational algebras, parsing, the expressive power of various languages in the Chomsky hierarchy, graph theory, complexity classes, etc. A lot of these theories can be useful for solving problems, but most programmers muddle by without putting them all together and remembering their implications. Heck, most programmers probably don't know about half of the things I listed.
So I wouldn't feel too anxious about that, especially w.r.t. web programming. But it can be very satisfying to to learn more about them, and may in some cases let you solve some problems that other's can't. If you want to get better at some of the brainier stuff, I'd suggest getting a master's degree in CS from a decent school. But that my be overkill for bog-standard web development, I'm not sure.
The coding may not have been what they were evaluating. You failed because you thought the test was beneath you. Bad attitude cannot be corrected!
Like most engineers, you're under the impression that your "magic ring" should automatically be given respect. Your whole post just screams "prima donna", and THAT'S your problem in interviews.
I do not fail; I succeed at finding out what does not work.
programmers insisting on calling themselves engineers.
You mean like mechanical, electrical, etc 'engineers'? When was the last time ANY of those people drove trains? What? You mean it's only ok for some people to 'evolve langauge' to suit themsleves, but not others?
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.
Since I don't know much more about IT than the average human resources guy, maybe my experience can be useful.
I taught myself how to write spreadsheets, and wrote a lot of them for my own personal use.
Then I talked to a guy who had been an engineer and programmer, and came into corporations to teach other people how to use spreadsheets.
He made the point that, when he wrote a spreadsheet, he included error-checking routines, such as calculating things in different ways, that would catch obvious mistakes in the spreadsheet.
For example, in a checkbook program, he would calculate the balance on each line by adding the debits or subtracting the credits from the previous line, as I did, and get a running balance.
Then he would separately total the columns and get the balance by taking the difference between the totals.
They should be the same. But if you made a mistake, they might not be.
People have made a lot of expensive mistakes by calculating the total of a bid but getting the range wrong.
This is a deliberately stupid example, but it's stupid enough that it was news to me (because I was self-taught), and it's stupid enough for an HR guy to understand.
I would suggest that you think up a few examples of how your general engineering and EE skills gave you insights that helped you write a better program, examples with obvious utility, examples that are simple enough for an HR guy to understand.
Since the HR guy may not even understand programming, you can give him a quick course in programming, which will demonstrate your educational skills as well.
It is true, my post isn't shit.
I am very small, utmostly microscopic.
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.
I actually feel the same way. I've got a few decades of professional coding experience, and would like to think I don't completely suck at it, but I much prefer the title "programmer", "developer", or even "analyst". The title "engineer" implies training and responsibilities that the vast majority of code monkeys like me don't have.
Please stand clear of the doors, por favor mantenganse alejado de las puertas
As someone else with a Physics degree, Engineering Physics, its not just the math that gives you the edge over the CS guys, but the lack of arrogance.
I have worked with many CS guys would couldn't code for shit because they never bothered to actually learn the language they're coding in, because according to them it's all just syntax. And the ones with the masters in CS are some of the worst developers I've seen.
Physics is a humbling degree to get because once you get it you realize that you're only scratching the surface and that leads to a similar approach to other areas as well.