Posted
by
Soulskill
on Wednesday January 22, 2014 @05:16AM
from the integrated-abacus-solutions dept.

An anonymous reader writes "I've been a software engineer for about 15 years, most of which I spent working on embedded systems (small custom systems running Linux), developing in C. However, web and mobile technologies seem to be taking over the world, and while I acknowledge that C isn't going away anytime soon, many job offers (at least those that seem interesting and in small companies) are asking for knowledge on these new technologies (web/mobile). Plus, I'm interested in them anyway. Unfortunately, there are so many of those new technologies that it's difficult to figure out what would be the best use of my time. Which ones would you recommend? What would be the smallest set of 'new technologies' one should know to be employable in web/mobile these days?"

By what you said, I guess I would recommend you to start with HTML 5 and Javascript. Both are growing, well stabishled, not very hard to learn and very usefull (for desktop, mobile and even server-side using node.js).Learning something about OOP is good too. I love Ruby, so that's my first choice. But java and others are ok too.

Learn Javascript. It's everywhere:* client-side in browsers as little helper fragments attached to buttons, etc* used for building rich client applications within browsers* can be used server-side with things like Node.js* is embedded as a scripting language into various tools

And it's actually not a bad language. The underlying concepts are simple and elegant, although some features for large-scale programming are lacking (no module system, etc).

It's also fun to learn, because you can achieve interesting/amusing results within a browser with just a few lines of javascript.

With some solid javascript knowledge for both client and server-side style code, a lot of job opportunities will open. Learning something like Python is an alternative, but even then employers who look for Python programmers for web-based apps will usually also want javascript skills...

You got 15 years experiene writing C code, good luck finding a "whiz kid" who can do it better than someone who's been doing it for that long.

You said it yourself, C isn't going away anytime soon. Stick to it as your bread and butter.

If you want to learn to program for Android/iOS, that's great, but do it as a hobby. Employers nowadays want 10 years experience on a tech that's only been available for 5 years (yes, it's that crazy), so by the time you get up to speed, the market will have already moved on to the next shiny thing.

You started with "It's 2014..." What will you do in 2025? Like I said, when it comes to your bread and butter, stick to what you know best.

... learn C++, Objective C or Java, all of which should cover you for mobile development in one form or another. And if you learn C++ you'll be a bonus to any project that hires you since too many C++ devs these days don't have a clue about low level bit twiddling or memory management - its all frameworks and objects for them without a real appreciation of whats going on under the hood.

Pretty much - let the hipsters chase the shiny tech. When the littered remains of abandonded technologies is cleared away the old stalwarts will still be there because there hasn't been any *real* innovation in languages for a long time. The basics were invented early on.

Make sure not to mistake 'technologies' for 'programming languages'.
For now, I would say programming on mobile devices. Now that many people have mobile phones with apps and all that, and tablets becoming fairly popular. Learn what has to be taken into account with mobile device architectures, and learn the languages used to program on them.

Employers nowadays want 10 years experience on a tech that's only been available for 5 years (yes, it's that crazy)

a/k/a H-1B job listings - meant only to prove that there are no Americans to fill the job. The real disadvantage Americans have is that we have no time portals which allow you to get 10 years of experience with a 5 year old technology. Some other countries are obviously filled with these time portals, as companies are able to find people meeting the job qualifications in those countries.

FWD.US is obviously on the wrong tack with their "think of the children approach", when what we need is a program to make time portals widely available.

Unless you are simply passionate about web technologies and just really want to work with it, stop trying to chase the latest and greatest here. You will find it remarkably hard to compete for the Javascript/web/whatever jobs as the 20 year old wizz-kids will have more experience than you in web-stuff but will probably need much less money.

Instead focus on improving what you already do, and expand into new areas of the embedded sphere. All that fancy web tech will in the end use and require embedded devices. We will get many more embedded devices, rather than fewer of them. Furthermore, try to expand your embedded domain knowledge. Perhaps there are some really exciting new embedded devices (drones, wireless home management devices, etc) you'd enjoy working on as a hobbyist? Expand into other embedded languages as necessary to work on the range of devices you like (i.e. Objective-C if you want to write iOS apps). You will only really learn properly if you have something concrete you want to do anyway.

The point is; unless you hate what you're doing, you should work on ways to make all those 15 years of embedded experience count. Chasing some Javascript web-stuff will not achieve that.

If you can lie and bullshit people into thinking you know what you're doing while at the same time you can keep talking and talking 'til they believe you based on how they don't have the foggiest idea what you're talking about but can't afford to look like they don't because they think their job depends on understanding you 'cause, well, you're expensive......congrats, you're a consultant.

Check if there's a Free Software project you're interested in, or you have a project of your own that would benefit.

Learning is one thing, practical experience is what matters. So unless you actually use those skills, they are close to worthless. And learning and using something is a lot easier if it is linked to something that matters to you.

Python is a really nice language. For a Python backend, you could start with the Django tutorial [djangoproject.com]. Go through that and a Python tutorial, and try to remember not to program Python as you would C, and you'll have a good start.

For the front end, you'll need to spend some time with HTML, and learn a bit of Javascript/jQuery for any dynamic parts. And if you want it to look any good (and you should care about this because people on the web are generally less forgiving of not caring about the looks), you'll also need to figure out how to mimic a graphical style from a designer with CSS. For hobby stuff, you can just mimic some existing designs, if you're doing it as a business you'd probably want to pay someone to come up with the design, or buy a pre-existing one.

It sounds like a lot of work, but Python + Django is actually lots of fun because you can get a lot done in little time (there's a video of someone doing a wiki site in 20 minutes), and the whole front-end thing is also quite fun because a browser is an interactive beast so you can quickly change things around and see things happen graphically.

The question that TFA asked "Which technology should I learn" is in itself, a wrong question.

The author should have asked him/herself "What do I want to do 10 / 20 / 30 years from now?" and then proceed from there.

There will always be technologies - many old technologies will still be around and some new technologies will be discovered / created - and once the author knows what kind of situation he/she wants to be in the future, he/she can start picking which route to go

Many people have chosen the wrong tech and end up in the wrong career, but at the end of the day, it's up to that person to "right the wrongs" and to make the best situation out of the mudane, for its his/her life and he/she should be the master of his/her own life

Take me, for example. Some 40 years ago I ended up in the States and did not know what to do. At that time there wasn't much for me to chose - genetic wasn't available, laser tech wasn't mature, and many fields were closed to me, a person who is not a born American.

So I ended up in computing. I dabbled in both hardware and software ever since.

Would I choose computing if I got the chance to start over ? Perhaps not. But, as I have said, back in the early 70's there wasn't a lot of tech fields opened to a nerdy kid from China.

Which really just means that he posts things that go against the groupthink so prevalent here. It's why I post anonymously now. It seems that anyone not interested in a self congratulatory circle jerk is expeditiously shoved in a corner on this site.

For the next 30 years, 2014 to 2044, you should know: basic health and hygiene, home maintenance and construction, cooking, gardening, maybe farming and animal husbandry if you are going to own some land.

It doesn't hurt to understand finance, a little bit about the legal / political system.

If you don't want to be held hostage every time your car breaks down, learning some mechanical skills is good too.

Oh, yeah, and these computer things - that's a good way to earn money, use your brain in the manner of the oldest profession: become whatever people are paying for, and be ready to change and adapt as the market changes. Look back to 1984, predict from that point what skills you should have learned for 2014, the next 30 years are going to be just as volatile on the tech front, but those other skills have been valuable assets for hundreds of years (70ish for the cars), and will continue to be valuable into the future.

Along these lines, I once heard someone say that asking what the world needs is the wrong question. You should ask yourself what you are passionate about, then do that, because what the world needs is people with more passion.

Correct. But, you could flip that around and ask yourself how many times during the last decade or so have you done things the harder way, or reinvented the wheel, because you didn't understand HTTP headers well enough to leverage existing functionality?

I write medical imaging software, most MR / CT studies have anywhere from one to a few thousand images, every server call you can avoid makes for a happy radiologist. This might mean wedging various DICOM fields in the headers when thumbnails are downloaded so you can rapidly populate the UI, build up annotation layers, sort thumbnail stacks, all kinds of cool stuff.

As a C programmer, I had to descend into the depths of ASM about twice in the decade I have been developing. But KNOWING about it sure helped me avoid stack overflow security errors, mostly because I knew just why they pose a security threat.

The point is not that you have to USE it. The point is to know about the basics to understand WHY you do some of the things you do the way you do them. Rote programming is one of the problems of our times, where programmers do stuff a certain way because they were taught to do it that way without understanding the basic idea behind the reason to do it that way.