Your question reminds me of the frequent cold war obsessions with things like the bomber gap and the missile gap where the United States was sure its rivals like the Soviet Union had an industrial or technological edge in one or more areas. Certainly Sputnik was a proper shock, but once the space race began, there were some significant accomplishments that showed some of the perceived gaps were not as big as they appeared.
In terms of your gaps I would challenge you to have some faith in what you know, but more importantly in what you can learn. If you can create a consistent determination to compete and make mistakes on the side of learning too much, I think that at worst, you will be facing a high class problem.
Can You Learn On Your Own?
Yesterday I had breakfast with a friend who has a PhD and has frequently been adjunct faculty at a university near where we live. His take was that many of the things he teaches (mainly digital signal processing and digital communications) could be learned independently from books. However, the pressure of the either getting a good grade or not getting a bad grade was an important motivation to stick to the hard task of learning the entire material at the highest level. I proctored an exam for him once. No one finished early, many looked pretty stressed. But I have also worked with his former students who say they learned more and used more from his classes than most of their other classes.
As he described, I have always found it helpful to have the structure and motivation of the school situation going. Beyond the motivation, it is good to have an expert selection of closely coupled topics that has some cohesion. To go a final step, and not all professor do this, it was extremely helpful to have professors who had an iterative / incremental plan for learning that presented less difficult material leading toward more difficult material and required frequent term project deliverables in much the same way a work project should.
Is the Degree Really An Impossible Goal?
University education is a great and generally well rewarded goal, particularly the undergrad engineering degree. Unless there truly is an impossible obstacle in the way, make the Computer Science undergrad degree your goal. Talk to your friends who have degrees as ask if they had times when they thought it would be impossible. You may find a few who tried and failed, then went back later and succeeded.
I realize that not every community has access to a good CS department. Most people must work and classes are expensive and getting more so. There are certainly many regional differences. In some places,there is tremendous government support so that almost anyone who wants further education can get it for little cost. In other regions, education at all levels has high demand with low supply, so only the most competitive candidates can get it. There are sometimes age or other limits, and options like part-time re-entry to degree programs is unavailable or rare.
I admire the boldness of people who migrate from their homes to face unknown challenges. Certainly, getting a degree is not more difficult than this, although layered on top of migration, I expect it must be very hard, and sometimes enabled by pooling the resources of extended families. Conversely, migration may make the degree option possible, so if you have that urge, and can stay in a place long enough to finish a degree, it could be your opportunity.
Benefits of Continuing Education
Benefits from continuing education, informal or formal may start sooner than you expect. All else being equal, if I were evaluating two candidates for a job, I would hire the most determined life-long learner whether he or she had a degree or not. Certainly someone taking courses one at a time toward a degree program would get my attention, even if the degree were years away. My feeling is that even a little college can open your eyes on some things. Even a free download from iTunes U of a Stanford or MIT course can give you a feel for the way academics define, discuss, and develop solutions to problems.
Some Specific Ideas About What Matters Topic-Wise
D. L. Parnas and Edsger Dijkstra are two Computer Science legends with ideas about what you need from a Computer Science program, and by extension perhaps, what you should fill in to assure there are no gaps in your training.
Parnas specifically identified compilers as something that was over-emphasized. My undergrad included a semester of compiler construction that was interesting and I think had some merit, but I can't say it had much direct benefit to my career thus far (which is mostly embedded systems). A prerequisite course called "Structure of Programming Languages" was much more valuable. It included information about parsing, use of Backus-Naur Form to formally represent language syntax, attribute grammars, abstractions required to implement language features to permit things like expression and flow optimizations, allocation of parameters and local variables on the stack in a unit activation record, and other stuff that did help occasionally in writing efficient code, but probably most often in understanding what showed up in a debugger often after a crash dump occurred.
Parnas was also very down on what might be described as emerging topics, even for Masters level work that is often considered appropriate ground for research. He was big on science and math, on software engineering more than computer science, and on picking things that were valuable 20 years ago and would be valuable 20 year from now. In someways, Parnas himself both reinforced and damaged this argument because even something as fundamental as software design. Parnas was a pioneer in objected oriented precursors, and helped evolve from structured to object oriented. Design would have been one of the long term value topics he advocated, but he helped obsolete much of what you would have learned twenty years ago, and of course, in twenty years we may still have objects, but our paradigm will probably be organized around some other design concept.
Dijkstra had a paper where he recommended that computer science students not do any programming until the second year of their degree because they needed proper formal groundwork before they could begin writing code in a way where bad habits would not be formed.
Robert Martin has some ideas about software that it should or could be more like accounting which teaches at the undergrad level what are called Generally Accepted Accounting Principles (or GAAP). Martin doesn't think anyone teaches a software equivalent (except he is trying), so software GAAP is probably not a gap that specifically happens from lack of a degree.