WARNING: walls of text ahead.
Though it can be something personal, I can vent my experiences here
I finished CS at University last April.
-1st year was a bit hard because I knew nobody. It was all maths and fundamentals of CS and of programming (thankfully my branch of CS didn’t include physics x_x).
-2nd year was horrible, I took 13 subjects, and I didn’t have time for anything. And yes, computer architecture was one of the worst subjects, most people didn’t pass the exam, and I had to take it 3 times (well, in truth they were just 2, because I couldn’t go to the exam the first time as I hadn’t passed the practice exam). Fortunately I met many people who were at the degree several years already and helped me (I also helped them in anything I could, because we began to make projects in pairs).
-3rd year was the worst of all them. I had no holidays nor week-ends, such a long year… We had several subjects with group projects and we had to organise our timetables to be able to meet and work on the projects. The fun part is that at last we could do advanced programming (I mean, with a UI, anything before was on the console -except if you did some optative subject on web programming or things like that). The killer part was a subject called Operative Systems. It was one of the most useful subjects in the degree but at the same time most time consuming and we had to fend for ourselves because we had class very few hours a week and there was not time to explain everything. In that subject we learnt about OSs, servers of all kind, and services (we didn’t get to learn Cloud services but we had enough workload already x_x). Though most of this learning was self-obtained, we used Google to search how to implement the services and all (in short, tons of stress, but also fun when tinkering with our partners computers via networking ).
Finally, I took 3 months of practices at an enterprise to finish my last credits, but it wasn’t a CS enterprise, it was a museum so I was alone with my knowledge. I accepted it because it was in my town and I could get there without much trouble (I still haven’t got a car license, at this rate I’ll use public transport forever - which may not be that bad, but limits my planning of time).
And I tried to learn Java last summer during a couple of months. My preferences are:
Hate: Visual Basic and other loosely typed languages (I can bear them but I really dislike VB in particular).
Love: C# and any other language with garbage collector.
Some people think that 1st year was planned to get rid of people who really wasn’t aware of what CS implies. Learning the syntax of languages is easy, but you really need other knowledge in order to make maintainable applications, starting with a good analysis and design, and then good programming practices. I had to be fast with my career because if I hadn’t done it I’d have had to change to a new studies plan, which I disliked.
I still haven’t got a job, but I’m determined to get one this year. I get discouraged by job offers that demand many years of experience, as I just have what I learnt at University. At the moment I’m doing 4 activities: learning intermediate French and basic German, making a distance course about online shops, attend this forum and revising my knowledges/learning new things while searching for a job. I had my doubts of which type of job I would apply, because it seems that the web is the future, but I also like making desktop applications (I haven’t tried mobile apps for the moment, I don’t have a mobile touch phone either). In any case, I’d like software development.
My advice would be: look into what you really want to study and all its scope. CS is a wonder when you realise its full potential but also is a headache the time it takes and the need of group working to finish big projects. If you really want to be a programmer, go for it, but don’t regret it later. If you want to dive into hardware there are specific branches, but programming is a fundamental thing.