In my career, I've been fortunate (or unfortunate depending on your point of view) to become heavily involved in the process of recruiting and hiring engineering talent for multiple companies. I'm discouraged to say that the User Interface Engineer (which I'm defining quite differently than Jared Spool's UIE.com site) is among the most difficult positions to fill (right up there with build & release engineers). Too many people get into Web Development with no formal engineering background making them ill-equipped to solve engineering challenges that they face daily while building a User Interface. I see so many resumes for traditional web developers who can't tell me the difference between an Array and a List or how recursion can often provide a simpler solution than iteration. I can assure you as the guy who will be reviewing your resume or doing your phone screen or interview: developing these skills is no longer optional!
What is a UI(S)E?
As I said, my definition of a UIE is quite different from the common usage describing someone who designs interfaces (I generally refer to this practice as Interaction Design). My definition is a software engineer who writes the code that breathes life into what people of the former category design. It's someone who is passionate about building a great user experience. It's someone who cares about how it's built as much or more than why it's built. I'll be using the acronym UISE going forward; for User Interface Software Engineer; though these two roles need not necessarily be mutually exclusive.
Historically, these people have been referred to as "Web Developers;" a term so generic that I'm loathe to use it for it's lack of context. However, the term itself demonstrates the problem: many of these people never took the step to become software engineers; and if you're a software engineer, you understand the difference.
Why Do We Need Them (Us)?
Simple: most software engineers who came to be software engineers through the classic routes find the user interface to be uninteresting at best; or even boring at worst. The UI often gets thrown together despite it being the only aspect of the software the users will experience. There are hundreds of examples of poor UI (both in terms of experience and the underlying code) that have been perpetrated on the world by engineering teams who just didn't care about the interface.
It's not that your work to optimize the search so it it was able to go through a million records in 1 second instead of the original 5 isn't worthy work; it's that the user doesn't know that it once took 5 seconds and doesn't care that it took 3 weeks of your time to make it palatably fast. The nature of "under-the-hood" software engineering is that users simply take it for granted. And all of it will have been time wasted if the search results don't behave as the user expects them to. Obviously this is a simple (and well-explored) example; but the crux of the discussion is that your User Interface is something you should absolutely care about. Since that UI is part of our software, let's subject it to the same level of rigor that we put into the rest of our project. After all, we're going to have to add on and maintain the interface just like the rest of the system; so we can apply the lessons learned through all of software engineering to our UI as well.
How Did You Become a Web Developer?
Time to Step Up!
Start in Your Comfort Zone
Become Language Agnostic
Learn Ruby. Learn Python. Learn C#. Learn *gasp Java. You don't have to like all of them (I personally can't stand writing Java; but I'm quite capable of it) but learning to write in multiple languages not only increases your knowledge of software engineering, but it broadens the scope of the job opportunities available to you. Learn object oriented programming and design patterns. There's nothing special about this advice: continue to grow beyond the confines of where you found your beginnings.
Embrace Your Inner Engineer!
If you've come as far as writing code, and you, like me, are able to accept that you aren't an artist, I encourage you to take the advice I've offered here. In the world of software engineering, you'll find great challenges and wonderful rewards. You'll go from cobbling together bits of code to create a web site to building entire application experiences and you'll become innovative about how those experiences are architected. And most importantly, you'll set yourself for wonderful career growth opportunities when your resume crosses desks like mine and doesn't get tossed to the side as "just another web developer."
* I mean no ill-will towards A List Apart, a fine publication for which I've written; I only use their tagline, "For people who make websites," as an example of how broad the concept of a "Web Developer" truly is.