I already had two gap years after I completed the high school/+2, and my family was also not doing financially well. There was different factors that I had consider while choosing my major for my university program at that time but I was certain that I need to be in IT field. So I was asking myself, if B.Sc CSIT is really worth it, since Tech was more about skills and less about certificates and degrees. After giving it a good thought I decided that I will not be paying 10lakhs to college/university for B.Sc. CSIT and joined B.Sc. Microbiology which is still one of the cheapest degree that Tribhuvan University offers and it was still a Science field which I was comfortable studying. So I embarked on the journey of teaching myself all the necessary skills that I needed to be an IT professional.
Obviously it was intidimating, so much intimidating that I couldn't delve myself into learning things till I was on my third year of Bachelors. Partly because there were so much things, different technologies, programming languages, different scopes etc and partly because I lacked proper device on which I can learn or code thing that I learn. When I was on the third year of my Bachelors, I got myself a decent laptop with my savings than researched into different scopes and decided that I would incline myself in the world of Web Development. The first thing I did was, searched webdevelopment basics in youtube, then clicked on the first thing popped up in youtube which was 5hrs freecodecamp video tutorial about HTML5 and CSS. Alongside this I was also following python programming language maybe because it was like "the most popular language" and appeared frequently on social media.
There I was trying to learn HTML5 and CSS from freecodecamp tutorial video, I was easy at first since HTML was something that we had to learn on class 8-9th standard computer science book, CSS was bit tricky to learn at first I still find it bit daunting. Then I dived more into web development side of IT field, I learned javascript, jquery, bootstrap etc. After few months I fortunately got internship on this tech company, it was more of a branch of the main tech company, it was comparatively small team, I had a mentor and another colleague. I did internship in php web framework laravel for three months. I find php syntactically diffucult as compared to python. So I joined a fullstack webdev bootcamp(django,react and DRF) and left the internship. Bootcamp was a good experience but most of the knowledge I got it was from self research. I watched Corey Schafer Django turorial which was a gem. I downloaded lots of learning materials from torrent, which I am still doing to this day. I sometimes found everything so intimidating and felt like giving up this whole thing and didn't code a single line for months but I came back eventually at some point of time. As of now I possess all the skill and understanding of the WebDevelopment using Django and React. I can make RestAPI using DRF, but I am not on par with professional. The skills I have needs more polishing and refinement but I think I possess good knowledge about WebDevelopment as a Junior WebDeveloper would possess and I still have lot to learn about many things which will help me become better developer.
Obviously joining Computer Science program in university will bring you an edge over those who haven't. Firstly you are surrounded by people who have similar mindset i.e. people who want to do something in Tech Field and just being around these kind of people is going to be big advantage that being amongst people with interest in fields other than Tech. Similarly you joining CS program prepare your mindset and defines the path that you are going to take, so now you put more effort and energy in what you pursuing. Also you will have mentors/ teachers who will be guiding you all along the way about the difficulties and obstacles you might face. Its way better that a complete newbie searching for an answer of an error in google and reading paragraphs of tech keyword filled article which in you begining phase cannot grasp. So it absolutely is a headstart. But choosing CS as major also has its own drawback especially in Nepal.
If your are joining CS program of TU, then I would say that the syllabus is trash. The syllabus only covers fundamental programming concepts and dont dive much deep and because of this graduated students don't have significant skill(unless they are codephile and learn everything themselves). Considering this the money you spent seems unreasonable. That's why some college conduct different Bootcamps for their students to make them skilled to certain level with help of institutes which teaches coding(which is not academic institutes but private institutes). So there is that.
So overall I would say, it all depends upon an individual. Coding like any other skill can be learned and perfected if you put in enough hours to it. If you are CS student but not putting necessary effort then the results may not be as significant as you might have expected. In contrary even if you are not CS student but have put enought hours to learning and perfecting the skill then you will be better that any graduates. But whatever it be, one thing I must say is that as non CS student it will be hard time finding internships and jobs. Unlike your college assisting to find an internship, you are on your own. I still havent been able to land an internship though I have fairly good knowledge, on par with junior developer. Also being non CS programmer, it is more likely that you are able to find solutions to the bugs/problems by searching it over the internet beacuse you have been doing it cause you didn't have a mentor so there's that. Nevertheless as I have said programming is a skill and you need to put in hours to perfect and master it. If you are thinking of pursuing CS degree go for it, don't let this post grow doubt about it but be sure to be persistent and put effort on what you are doing. Same goes to people of non IT background who are trying to learn programming, its absolutely do-able. So that's all. Happy coding!!!