You are off to a good start, but I think you are a little bit pessimistic about what a college degree entails.
An employer would expect someone with a computer science degree to have a reasonably good understanding of how data structures and algorithms are put together. A candidate should be able to understand a number of algorithms to be able to design efficient solutions to various problems that would be encountered while working on a project. Someone with a couple of years of experience might be able to come up with a solution, but it may not be as efficient or maintainable as other options.
Knowledge of C++ is one tool in a programmer's toolbox. There are many more.
Do you understand various sorting algorithms and why one may be better than another is a particular circumstance? Do you understand big-O notation and why it's important? Do you know the difference between a directed graph and an undirected graph? Do you have at least a vague idea of what Dijkstra's algorithm is and how it works? Are you familiar with the concept of Design Patterns? Ar you familiar with source code management? Do you know how operating systems work (at some level) and how tasks are scheduled? Do you know how to work with sockets? Do you know how to work with network protocols?
There are many more. Nobody has all of the tools, but a good candidate has a number of them. In some ways, knowledge of the language may not be as important as some of the other tools. Once you know how to write a quicksort in C++ you can write it in any language once you are familiar with the language. Someone with good computer programming skills can leverage his/her knowledge when learning a new language.
I was like you, I think. I was a civil engineer with little formal computer training. I spent time on my job writing little computer applications to help me and my coworkers do our jobs more efficiently. I also had a very large program at home that I was developing. It was probably 10000 lines of BASIC in which, among other things, I unknowingly developed my own little database (cool, but not very efficient or maintainable).
I later went back to college for an MS in comp sci and just in the pre-requisite courses I had to take before I started graduate classes I learned all sorts of things I never would have come up with if I had only worked on my own little pet projects.
To answer your question,
Okay, so how many years of experience would equate to bachelors in CS? |
, I would say somewhere between 5 and 10 years based on the type of programs you are working on and the type of knowledge you are gaining. Pick up some books on computer science (not programming language, but theory) and read it. Look at a requirements for a college degree and figure out what you don't know. Or better yet, sign up for a college program, even if it's 1 class at a time on-line. As you learn more tools you will be more employable.