Despite an engineering degree in relational databases and artificial intelligence, I mostly worked in real-time embedded software and tools.
Beside writing a few hundred thousands of lines of assembly/C/C++ to try to make the bloody things work, I produced a couple of compilers and countless bits of scripts to ease the arduous task of bringing life to barebone hardware platforms.
More recently, I started dabbling in web sites.
I think I know hardware/software interfaces, parallel processing, parsers and software optimization well enough to give a few advices backed by experience.
I'm a bit wet behind the ears about web programming, but after spending more than a decade plodding through unforgiving barebone environments, I find it incredibly refreshing to have virtually unlimited resources and lavish debugging tools at hand.
I believe software engineering should be about spending the best part of your time designing a solution and picking the right tools for the job before embarking in the messy business of implementing it.
That makes me a big hater of the "one language does it all" approach, especially when it comes to the atrociously convoluted mess C++ allows so readily to produce, the eye-watering perl regular expressions, the JQuery goo oozing from a vandalized DOM, the CSS nazis lecturing people about their whims of fashion, an above all "practices", be them deemed good or bad.