In my country most jobs are for full stack, some jobs are for if you have lots of experience as a software developer and know C, C++ etc
BUT my Degree in Information Systems requires me to learn C and Python for Hacking and also MATLAB for Image Processing.And lots of Python for Machine Learning and Web Design
So what does one do here?
I was given advice on reddit that trying to learn both will end in failure and that you need to focus on either Full Stack or traditional software development because either will take a lifetime to master.
In the beginning you’re not expected to know or learn everything. It sounds like you’re at the beginning of a degree program. The reason you’re being told to take classes in all those areas isn’t because you’re going to master them all. The idea is to expose you to various disciplines and different aspects of the field.
As you gain education and experience you will likely find yourself drawn in one direction or the other and it may not even be the direction you thought of when you first started. Your job right now is just to gain a broad understanding of many related concepts. Specialization and focus on a particular sub-category will come in time.
I’m not one of them, but I know people who’ve learned both of these areas and it certainly hasn’t ended in “failure”. Also, you don’t really need to “master” something to work in the relevant field effectively. These fields are all constantly evolving anyway. You’ll never finish learning them.
If your goal is to get a job sooner rather than later then I agree that, in addition to your formal education, focusing on learning whatever gives you more opportunity for employment is a good plan. If that means you need some web apps in your portfolio then learning C/C++ is not the shortest path to achieve that, learning how to make web apps is. And starting with tools you’re most likely to get employed to use is a smart move.
That’s to start with. In the long term, learning a bunch of different tools, environments and languages is great. It’ll equip you to learn new tools more quickly when the need arises, see things from more perspectives, approach problems in a broader variety of ways. It’ll help you avoid “Law of the Instrument”-based mindsets, and potentially better equip you to take a lead position in multi-disciplinary teams (though technical knowledge is only one part of that).
That seems more like career advice, not technical. People hiring a Senior Full Stack Engineer like to see that you’ve got 2 years job experience with every cloud system, every minor web language and framework and so on, even if you could learn most of them in a week. Your last 2 jobs should have been Jr. Stack Engineer and Stack Engineer, for the appropriate # of years. Working at a game company would tend to be a minus (unless you were running their servers). As a practical matter, a dedicated working Full Stack Engineer might have a relationship with people at microsoft or Amazon, for when Cloud problems occur … and other things you can’t teach yourself.
This industry changes very quickly. The plentiful jobs today, won’t necessarily be the same in a few years. A few years ago, jobs for maintaining Unity projects may have asked specifically for JS experience. Today exactly 0 of those same jobs do.
For me most learning always happened during work and it was always just random things what the company needed at the time or what some customer needed. I learned to do something for some project and then possibly never touch it again. It’s not all going to be hugely beneficial afterwards. I’m not complaining though it just happens that way.
My degree focused on software development in C and C++. My first job was in web development. The company had a server admin, though, so I wasn’t working full-stack (more like 80% stack).
Anyway, it took me less than two months to get comfortable. learning C# and Javascript, event-based-programming, client vs. server-side content, all that stuff. The skills that you learn in one discipline significantly carry over to the other. They’re basically just variations on the same thing.
That seems more like advice for a company – get the contract and then figure out a way to either do it or at least get some of the money and blame someone else. A famous example is after IBM bought a BASIC interpreter from early microsoft (just Gates&Allen) they asked if those two had an operating system. They didn’t, but lied and said they did. Then they pirated one (they actually borrowed the code from IBM’s first choice, CP/M). When IBM found out they were in too deep and didn’t need the bad press, so paid off Gary Kildall (who wrote CP/M).
For a trained software person it’s not so much “yes, I can do [that thing I can’t do]”. It’s more that most computer stuff isn’t that different. You can almost always skim it and say, for example, “OK, angular is a fake back-end like REACT and I already know javascript and that pipes are a trap; so it’s fine”. Or Swift has these long explanations of its pointer types but it boils down to “reference counting” if you’ve learned that system.
Ouch. You know that this story is completely not true?
Gates & Allen referred IBM to Kildall
Kildall didn’t take the meeting seriously
Gates & Allen did not steal CP/M code, they bought 86-DOS, which had the same interface, but not the same code and made by Tim Paterson
Kildall never sued either Paterson or Microsoft (which means it was never proven that any of the CP/M code was copied) and AFAIK not even IBM
there was one attempt to look into this, fairly recently, one forensic researcher found no copy in source code (although the guy worked for and against Microsoft before, so his research may or may not accurate)
the only things was proven that some API was very similar (but also API look and feel does not fall under copyright - although this decision was made after the events, so maybe a court in the 90-ies would have decided the other way - I love the US judiciary system…)
I’m not against holding people accountable for their actions, especially not overpowered people, but I also would like to stay with the facts.
If you’re interested I think “ShowStopper” has the details, or another early book about microsoft. The story about Kildall not taking it seriously is fake (supposedly he was flying an airplane when they came to his house; but that’s silly – IBM had telephones – they didn’t cold-call people at their houses). My recollection is IBM finally found out microsoft didn’t actually write that OS, they tracked down who did, found out QDOS probably copied enough from CP/M, and paid them off. Another really fun part is microsoft’s contract with QDOS – I think they were going to pay a royalty per customer, but technically there was only 1 customer – IBM (who then sold it to their customers). You come to the obvious conclusion – the leader of microsoft was, much like Steve Jobs, great at making shady deals and only so-so technically.
Bu the point is a company can lie and say “yes” when the answer is really “no”. Gates doing that is what started microsoft. Whereas an employee can’t do that trick – they can’t buy a new skill the way an company can hire someone new.
Me too. My first job as an engineer was from doing just that. I was savvy with spreadsheets and some hardware tech, and my manager asked if could write Pascal applications. I said yes. After work that weekend I bought 3 books on it and had a very, very long weekend. This was a while ago, I don’t think I could get away with it today.
It absolutely is possible. I know many people who can/have/do both. They are amazing programmers, but still it is doable if you put in the effort.