I came into software from a mechanical engineering background as well.
One advantage was that I spent my career doing simulations on computers using finite element software. Not so good when you needed someone to fix your car or design a workable solution on the fly. But it did help with my sidestep into software development. I always had my fingers on a keyboard, and I was always writing software to either augment the packages I was using or tools to do calculations on the side. I learned FORTRAN, as did every ME of my generation, but then I learned C, then C++, and onto Java.
One thing that helped a lot was going back and taking fundamental classes in computer science. I don't think it's possible to be successful without an understanding of fundamentals like the relationship between hardware and software, data structures, parsers and compilers, relational databases, etc. I got 3/4 of the way through an MS in computer science. I did not complete the degree, but the course work has been invaluable.
You couldn't practice as a mechanical engineer without knowing statics, strength of materials, heat transfer, fluid flow, etc. Same with computer science. Gotta know the basics.
Computer science is different from mechanical engineering in that you can practice in the former field without a degree. When I was a mechanical engineer I didn't know anybody without at least a BS degree, and most people had a masters as well. A non-degreed engineer is as rare as a non-degreed medical doctor now.
Don't rely on this quirk. If you want to be more than a coder, you'll have to come up with a plan for acquiring those fundamentals. One advantage that you have now is the Internet. There's a wealth of information available to you (e.g., MIT algorithms course from iTunes). You just have to create a plan that's as rigorous as a formal class, give yourself a deadline, and stick to it.
Good luck.