"Do i learn and practice more algorithmic problems to get better at that side, or learn and work with as many technologies I can to get some 'real world' experience." It's the same question I had for myself when I was in school pursuing my CS degree. What I noted at that time(it may be WRONG now) was that if you wanted to work for companies as big as Amazon, Apple, Google, Microsoft...(it does go on) you should be good at tackling algorithmic problems and attend an university with decent reputation in CS. Otherwise, you would never get called for an interview to begin with. Knowing someone in the company also helped too. Those companies believed that a candidate with strong CS background would be worth their time spending on training him or her. On the other hand, most start-up companies were only interested in ones with strong technical background since they expected you to begin contributing to their code base by the time you join their team. I know it's difficult to pursue your passion and feed yourself at the same time. Good luck with your job hunting.