Ask Slashdot: It's 2014 -- Which New Technologies Should I Learn?
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?"
Or, how to not get caught !!
Get intimate with the http protocol first and foremost! I can't tell you how many times I've worked with "web developers" who have no clue what the different HTTP verbs do, or why they're there in the first place.
Secondly, if you want to code backend I''d stick to backend. Find a serverside technology that suits you(ASP.Net, Java or PHP) and start learning. Don't waste to much time learning frontend web technologies, as that's a completely different workflow to what I think you want to do. Most serious web development companies have dedicated frontend developers for a reason :).
Good luck!
Javascript/jquery front ends, php/python/ruby/sql backends.
Objective-C for iOS.
Those will keep you employed for the next 10 years.
I would recommend learning yourself BNF and make a mini compiler, it's a nice pet project. This way you can learn how languages are created and how compilers & interpreters work. After that learning a new language will cost you much less time. For me it worked in such a way that all 'languages' look the same.
As for C also learn a object oriented one and a functional one. java/c# or something. As for the functional one well maybe "Haskell" is a nice one.
Answer:
Corporate Finance, Intellectual Property Law, Data Mining
If Pandora's box is destined to be opened, *I* want to be the one to open it.
...it's called "outdoor activity"
completely amazing and revolutionary stuff
although i'm personally opposed to any such new technology... that's why i still use linux :-)
what a douche. im pretty sure he/she isn't interested in what YOU aren't interested in. your comment was absolutely unhelpful to them or anyone thinking about the same question :/
How is not Linux a new technology?
as if your reply were any more useful
2014 will be the "year of the fatass", so my comment was extremely relevent
I was thinking the same, except mine was:
A programming language for the ages: C11
If he was developing embedded systems in C for years, I'm pretty sure he already knows the language quite well.
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.
Good luck.
Learn to lie and bullshit with a straight face.
These skills can take you everywhere. Even right to the top if you're good enough at them.
Being willing to use people and steal are also good.
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.
But learn whatever it takes to webify those embedded systems with utterly pointless interfaces to appeal to the new generation of people who wont even buy a loaf of bread unless it can be monitored by their mobile device. Now, off to the shop to buy toilet paper as my iWipe assroll monitor says that the bathroom is reporting only 3 slices left. Get off my........
If you want to have more job opportunities learn C#. You will then have a solid base for both mobile development and web technologies. You can also use your C# skill to develop for android using Xamarin Studio (standalone, or there is a handy plugin for Visual Studio) or you can learn Java faster because they have similar syntax and functions (there are exceptions, of course).
So we wont have to put up with this horrible slashdot beta crap.
maybe it would serve us to look at the 'new' things we do that we would we be better off not doing? not as complex as having to re-invent everything every quarter to keep the phony #'s happy & us ordinary unchosens falling into spiritual bankruptcy with the analcystic numerologist genociders by proxy still
perfect balance is a fatal illusion (band of 85 WMD on credit cabalers calling the shots) we must live by?
In web programming specifically? I'd say, make sure you know the fundamentals first and foremost.
As a previous poster said, knowing the HTTP protocol well (RFC2616 - be familiar with RFCs in general) will be important (more than you'd think - a misused verb led to Google's standard webcrawlers hosing a site because said site didn't implement forms/links properly), I'd recommend also getting intimate with some of the other building blocks such as SMTP, POP, FTP, SSL, ... you get the picture. They'll come in handy when trying to piece together/troubleshoot a larger solution.
On top of that, know the roles and differences between different server apps (app servers like JBoss/WebSphere; web servers like Apache, nginx), know at least 2 popular database engines (I personally favour MariaDB and SQLite but that's up to you; you might want to look at PostgreSQL or CouchDB for something radically different), after learning HTML and XML/DOM fundamentals, know about cookies and AJAX specifically (which are part of your HTTP knowledge, but revisit later) and a take a web security course, or at the very least read far and wide on the matter. Someone suggested focusing only on back-end - fine if that's what you want to do, but at least be aware of how things behave in theory on the front end. Again, fundamentals.
After (all) that (a fortnight's worth of reading, not counting any experimentation?), the choice of languages to work with these building blocks is entirely up to you. Most commonly mentioned are PHP and Ruby in different setups (honourable mention to JSP), Perl and Python for CGI and general scripting, Ruby on Rails as language+framework...
When staring out and for longevity, choose fairly popular languages that run in open source runtimes (they're durable, they're documented, there are plenty of communities), and stay nimble with frameworks - a previous ask.slashdot showed how some of them can easily get canned despite a strong user base, and frameworks are just a flavour of the year... more likely than not, someone else (project lead, customer, policy...) is going to tell you what framework to use, so just make sure you've mastered your chosen language set.
For iOS devel you're not going to escape Objective C. Android I understand is purely Java. But most things you're likely to want to do that are web facing, you might as well do in a web page.
And, in general, stay nimble. But you knew that, right?
-- "Simplicity is prerequisite for reliability." --Dijkstra
... 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.
If its web you want then HTML5/javascript.
ActiveX, BASIC and COBOL.
Its time to let Java/Python/Ruby die.
In a world of energy efficiency, its time you pulled your weight.
Think of the end users performance, think of the energy it costs to run your application.
Learn C++ instead. Stop being a selfish "wannabe". Make the world a better place.
Java = var lookatme = 640000000;
C++ = unsigned long lookatme = 640000000;
It really isn't that hard guys...
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.
Reading subsequent comments, 2 points stand out
If you know C, and it's not going anywhere soon, why change? Are you bored of the current projects you're on? Or do you think you'll be better off elsewhere? Greener grass etc
Some are being a bit more meta and suggesting fields to apply computing to, like data mining, marketing, etc. Worth investigating if you float that way, but I didn't think that was the point of the question.
You could also consider going into management as a techie, to at least have someone sane at meetings where the majority know more business than technology.
-- "Simplicity is prerequisite for reliability." --Dijkstra
Yeah, but it will be "year of the _linux_ fatass", so there's that.
If you are already a programmer, or even if you're not, then there are three technologies that you should attempt to learn (or at least recognize and be able to say "yeah, OK, this makes a sorta sense"). These are HTML, CSS and JavaScript. HTML is the basis for web pages. It is what they are built upon. I suggest starting with HTML 4.01 (strict) and XHTML 1.1 (there are major differences that may not look like being major), and then moving onto HTML 5 (yet to be fully finalized). The older HTML should teach you some good habits, as should the XHTML (and while you're looking at XHTML, learn what XML is, and why XHTML exists). Then you need some style to make your pages look pretty. That means CSS. CSS is broad, and you can just learn the basics and pick up the more complicated stuff as you go along. (That basically means start with CSS 2, and learn "CSS 3" modules as and when you need them.) CSS is capable of doing a lot of stuff that previously required JavaScript.
JavaScript is not an essential. But you should know the basics. And most importantly, you should know two things, when not to use JavaScript, and what progressive enhancement is. (Progressive enhancement might also be called graceful degradation. It's basically the same thing, in the way that Open Source Source and Free Software are basically the same thing. There are philosophical differences, but they still do mostly the same thing.)
---
And that's the web. Finished. You can go home now.
Oh, still with me? Yes, there is still more to learn. Learn PHP. "But I heard it's awful" you cry. And it may well be. But it's also probably the most popular backend web language. It's what major and widespread software is written in. WordPress, MediaWiki, Drupal, and others are all written in PHP. But, like with JavaScript, unless you want a job, you don't need to learn more than the basics. There are great docs that can help you with almost anything.
Similarly, learn SQL if you don't already. If you're learning PHP from scratch, use the PDO functions, then you can easily switch databases (and not be stuck on MySQL). .htaccess file, and especially redirects.
Also, learn how to wrangle an Apache
Next, I hear Ruby is getting a lot of press. Maybe learn some of that, and Ruby on Rails.
---
Finally, and this is more important than Ruby on Rails, make sure you don't get hung up on pages looking the same in every browser. But do learn the fuck out of how to test in different browsers, and on different devices. And test the fuck out of your pages in different browsers. If you're page isn't readable in Lynx, maybe you need to do some reconsidering.
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
You can do most things in ios with plain old c and a sprinkle of objective C. I eould go about doing that if I were you.
You should know a minimum about databases. RDBMSes are going to die, so learn how to interact with one of the major no-SQL databases. Apache Cassandra is a good starting point. So are MongoDB and Couchbase / CouchDB. The most bleeding-edge ones are Titan and neo4J, both graph databases.
Godspeed !
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Oh, and I should have mentioned (and others have already), you also should learn at least the basics of the various protocols. You should be able to recognize the various parts of a HTTP message, and know what most of the verbs (e.g. PUT, POST, GET) and codes (e.g. 200, 404, 408) mean. You should know how HTTPS works (and for bonus points, know at least two major flaws with it). And you should know what TCP/IP means (and if you're really good, how they work), what DNS and DHCP are, and so on.
Good luck.
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
A programming language for the ages: C11
Right. If you call yourself a C programmer with 15 years experience, and you don't know C11, then you're outdated. Junk heap.
You should be able to find your way around in C++ code. Even in jobs that are supposedly C jobs, you will run into C++ code. Someone with 15 years of C experience _who is good at it_ will learn C++ in a very short time.
Check out the Stanford iOS programming course on iTunes University. Good introduction to Objective-C which should be relatively easy if you know C, and iOS programming, and I suppose you will learn lots of new things (all the object oriented and event based programming) that will be useful in Android, MacOS X and Windows application programming.
Antigravity, nuclear fusion, holodeck.
By learning CouchDB / Couchbase you get some javascript and JSON experience as a bonus.
Also, XML is dying, long live JSON.
I think given the momentum C++ has right now (for better or worse, I can't say yet) you should try to learn C++11 and all the new tricks that come with it. It's a pretty different experience from C and C++98 in my opinion. Watch this for a nice roadmap and insights : http://channel9.msdn.com/Event...
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.
Leverage your C skills in the context of the internet of thing. It potentially touches an order of magnitude more devices over time than mobile.
Learn some web/distributed systems skills (javscript, html, http, rest/soap) so you can understand/integrate well into the current webby context.
First, a disclaimer: Yes, I understand that the "cloud" means nothing more than playing Buzzword Bingo with the same old crap hosted by someone else, with a shiny new billing model that lets the service providers rub their hands while cackling with glee over all the idiot CEOs out there willing to pay more for what they don't recognize as the same ol'.
That said, if your resume says you've worked in the trenches with VPSs and hosted solutions, you can expect the HR drone's eyes to glaze over because it doesn't match any of the buzzwords on their pre-screening checklist. If, however, you say that you've "Deployed critical corporate assets to the Azure cloud", well now, you may well have yourself a job!
Just make sure when you actually get to interview with a real IT manager, you know the difference between the PR bullshit and reality; the pain of trying to integrate between different "clouds" you don't control; how to code in C# and Javascript and SQL. The rest just gets you in the door, you still need to do the same old job as ever.
Android for mobile and javascript, node.js w/ express, bootstrap, and many other node.js modules for web development :)
Systems: redis, riak, mongodb, git, svn, mariadb, postgresql
Languages: ruby, node.js, php, python, java, javascript, html5
you probably know half that stuff already and have a good foundation to start the rest
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.
Assorted stuff I do sometimes: Lemuria.org
If "anonymous reader" actually does embedded C, then I'd envision him running amok if he tried out for the marketingdroid team. Unless you're supplying free Drano.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
If he wasn't interested, then he's pretty stupid for posing his question publicly.
I'd caution you first to take a good look at this article by Jeff Atwood (http://www.codinghorror.com/blog/2008/01/the-magpie-developer.html) discussing what he calls "Magpie Developers" - developers that flock to new shiny things just because they are new and shiny,
Once you've taken a look over that, here's my take on web and mobile technologies.
You are going to have to learn JavaScript for the purposes of front end development. You should also learn the principles of responsive web design and graceful degradation to produce web sites that look good on mobile. That obviously means a through understanding of HTML and CSS as well, which although not "programming" per say, are important technologies nonetheless.
On the back end, Python and Ruby on Rails still have a lot of traction. node.js is rapidly gathering popularity as well, and since you already have to know JavaScript for front end work.it can make sense to use it on the back end also. All three of these have substantial following and demand on the market.
PHP is on the way out, but still used, and probably not going away. It's main "advantage" is that it's the only thing that works on the numerous "bargain basement" web hosts that people still use for some crazy reason, and therefore, there's still a lot of applications, content management systems, and frameworks written in PHP. WordPress in particular comes to mind - a lot of smaller projects are just slapping some custom application on top of a WordPress CMS, since that's what the organization is familiar with.
Now. for the subject of Mobile app development. Mobile apps can be important, but not every site should be an app.. Being able to articulate this to an employer is important. They may think their mom and pop online store needs a mobile app. They don't. They need a website that works well on mobile. A mobile app can supplement that, but it can't replace it. Users want apps to do things that are absolutely indispensable to them, not a screen full of icons for 200 different companies. Don't make the mistake of letting "oh, just download our app" be a substitute for poor mobile web design - for something that a user should have been able to easily do or find out in their mobile browser, they are likely to just go elsewhere instead. Similarly, don't make the mistake of thinking good web design = good app design. An app and a site are two different things.
For iOS development, Objective-C is the way to go (and as far as Apple is concerned, the ONLY way to go). There are other technologies now that can produce iOS apps, but in the past Apple has made a big fuss and big show of banning or breaking other tools, I seem to recall them even going so far as to ban apps because of the environments used to develop them. This has relaxed somewhat lately, but there's no telling if they might do it again. Objective-C should be a smooth enough transition from C for you though.
For Android, it's more or less a variant of Java, although there are ways to develop in other languages, including C and C++. There's pretty broad selections of tools available for you. Fragmentation is still a very real problem, but it doesn't have to be as big of a problem as it's made out to be - you just have to be aware of it and plan around it - it's not unlike the problems of responsive web design (although progressive enhancement is probably preferable to graceful degradation for apps)
The other mobile platforms right now lack enough market share for most apps to worry about native development - develop a proper responsive website, and pay attention to make sure that it actually works, and you won't leave the Windows Mobiles and Blackberries of the world out.
Windows 8 !
With all due respect, I don't think Souskill is interested in the answer to his question. If you really want to know what's in demand, look at job descriptions on job boards. I think he's more interested in /. readers' reactions to the question and opinions of the different client and server scripts/languages. Makes for an interesting discussion, does it not?
As there seems to be quite a buzz around the "internet of things" right now, why not leverage your existing expertise by focusing on that rather than mobile and web. Focus on web services rather than web pages, familiarize yourself with HTTP rather than HTML and stick with C and maybe Java and Python (a lot of "embedded" devices are running Linux under the hood and some Android, and other uses of Java such as Bluray get embedded) as higher level languages that are less stressful to code networked apps in than pure C or even C++.
If I knew C back-to-front and wanted to get into 'web development', I'd be sending my CV into Mozilla and getting a job on the rust/servo teams.
They're constructing a systems language to rebuild firefox from the ground up.
Ummm........ Starting with HTML 4.01 and CSS 2?
Why not the start learning PHP too, from version 3 or something?
Start learning from the most up to date version you can find. Then you don't have to relearn stuff later on when they have changed in future versions!
Windows is the one that is bloated.
Obviously you need to learn COBOL and FORTRAN. Like 'C', they will never go away. :)
I do not fail; I succeed at finding out what does not work.
You have to learn the technologies that make you competitive in the job market. Your competition isn't the guy down the street, it's the guy in India or other like countries. You have to substantially market yourself against someone that could be making as little as 1/6th what you make now. In order to do that you have to have the skills that they can't bring to the market or that they don't tend to have. Any type of skills that requires personal presence is well worth adding.
Any skills that could be commoditized by and large have been by the likes of IBM to feed their outsourcing work. Remember that they focus on training up people for outsourcing and tend to stick to basic skills that can be marketed across a wide range of contracts.
If you really want to know what to focus on just go to the Indian versions of Monster, Dice and see what is in demand. Find what isn't in demand there but is in demand locally and is difficult to outsource. Specialist jobs are good for this as are consulting jobs as they are difficult or not worth the effort to outsource to India.
If you have a generic resume that only contains basic skills in wide usage you are extremely vulnerable to outsourcing. You will also have a difficult time landing a job once you have a few years experience and aren't fresh kid out of college cheap.
Right. If you call yourself a C programmer with 15 years experience, and you don't know C11, then you're outdated. Junk heap.
Bullshit. I code against to the ISO 9899:1999 C99 standard; C89, C99, and C++0x FTW.. No need for anything else.
The caveat to the rest of this is that I'm somewhat new to the web development frontier. (a yearish of unpaid experimentation)
;)
Having said that here are a few technologies/languages that I find highly useful, perhaps you will too.
Redis, everyone needs a cache/queue, if someone says otherwise they're lying to you. The really cool part about redis is that operations done with it are (mostly) atomic at the operating system level, and it has persistent records of transactions, which sets it far apart from its other competitors. Redis is something I would use in any sort of web application backend.
At least one of: rails/vibe.d/yesod/spray. These tools, while not ideal solutions, are extremely useful for maintaining separation of concerns, as well as rapid prototyping, I would consider knowing some framework essential.
Ember.js/angular.js are both javascript frameworks that are extremely powerful, the necessity of these increases with the more interactivity you want, they're probably a bit overkill for most webapps, but I'd definitely recommend looking into one of these at some point.
Foundation/Bootstrap are frontend frameworks for easily organizing the layout of your pages and styling them, again, for simple projects these will probably add more complexity than necessary to the project, but these are another thing I would consider essential.
Postgresql is a rdbms similar to Oracle that has very powerful/fascinating features that no other db system has such as hstore which is essentially a key value store that allows you to input whatever in a column, which is great for unstructured/semi-structured data (e.g. user uploads). Mongo can't beat an ACID compliant json store.
I could go on for a while in this direction, but I hope this helps.
Personally, I use rails/ember/foundation for frontend stuff and use spray/redis/postgres for the backend, they seem to fit my workflow the best and solve the problem at hand the most effectively.
> RDBMSes are going to die
keep dreaming...
There really is no future in IT. The bubble has burst and Everything 'IT' is in danger of becoming just another commodity.
If you aren't already a manager then just don't bother.
Take up a new career NOW before it is too late.
I've been writing software for 40 years ranging from cobol on Punched Cards through C, C++ , Java and onto to more modern things like Ruby, PHP and NOSQL.
I'm just hoping that I can hold on and keep employed until I retire in a couple of years.
Or you could slap on some makeup and pretend to be an H1B Visa holder. I'm sure you will get a job quickly but you will have to drop your salary expectations but hey, at least you are still employed.
I'd rather be riding my '63 Triumph T120.
Become a qualified Plumber.
1) Your work can not be off-shored
2) There are no H1B visas for Plumbers
3) Weekend working is tax free
4) Meet bored lonely neglected housewives
5) Increasing demand due to rising sea levels
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.
Muchas Gracias, Señor Edward Snowden !
var lookatme = 640000000;
c++
auto lookatme = 640000000;
My Shop uses (in order of importance):
C#
Java
ASP.NET
All popular versions of SQL (recommend learning MYSQL or PL/SQL first and then the rest of them will be cake)
Office/VBA (I know this sounds stupid, but you get a lot of requests from office managers with no clue what they are doing in the form of word Docs, Excel spreadsheets, etc... etc... Knowing all the ins and outs of these programs will save you a lot of time. Like how the Excel Average function converts nulls to 0s by default)
PHP
VB
Hope that helps.
Oh, and I think VM is the way of the future (for good or ill) so I'd get used to using VMs.
There should be '+1 Troll', to reward skillful trolling :)
There is no updated version of CSS. CSS 3 is not actually a thing. Instead, there are what are called modules. CSS 2 is a good starting point, because the basics are all in one place. And it's still all valid.
HTML 5 isn't finalized. Moreover, learning HTML 4.01 (strict) and XHTML 1.1 will (as I pointed out in my post...) teach good habits. (And make a person appreciate the really good parts of HTML 5, like the new form parts.) Oh, and they are still valid...
Unlike with something like PHP 3 and 4, there is no security risk in using the older versions of HTML and CSS. Moreover, unlike older versions of PHP, knowing the older versions of HTML and CSS can directly translate to knowing the newer versions. (A valid HTML 4.01 strict document is also, with a different doctype, basically a valid HTML 5 document.) PHP has deprecated loads of stuff, and has thrown out a lot of the bad ways of doing things in the later versions. Later versions of PHP are much more coherent than older versions. But CSS 2 is still excellent, if that's all you need.
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
JavaScript is not an essential. But you should know the basics. And most importantly, you should know two things, when not to use JavaScript, and what progressive enhancement is.
Though I agree with most of what you have said, I think that also what parts of JavaScript you use is important, combined with some good patterns of design for your code most of which is achieved by convention in JavaScript and C. I've found JavaScript to be quite nice when used in a minimal 'language features' way.
'Javascript: The good parts' is about as thick as 'The C Programming Language' but not as dense, which sums my comparison of the two nicely.
My ism, it's full of beliefs.
Just focus on the latest trends of core technologies which some 60%+ employers rely on today: Java, SQL and C variants.
Specifically to your new market targets, and going away from low level and embedded, I would say you need to go hands dirty with the most popular frameworks for things like web, mobile and distributed systems, which are indeed vast, but if you wanted to evolve one of each I'd say JavaEE/Rails, Android, and JavaEE (again), respectively to each technology. REST/SOAPclient and server knowledge, along with concepts of SOA will also be a plus for general-purpose. If you want to keep your C roots go for the .NET version of those standards.
If you're looking for a way to break into web / mobile, and coming from C-land, I cannot imagine a better starting point than to learn javascript (and HTML/CSS too). It's syntax is based on C and has many of the familiar trappings, it's used extensively in web and mobile application logic and UI logic, and it'll be a part of the web and mobile tech sphere for many years to come.
It's primarily useful in front-end development, but can also be used in backend development if the company you want to work for uses a javascript server as the backend (such as node.js)
also, javascript developers are always in demand.
from there, if you plan to focus more on backend development, your best bets would be to either start learning PHP or ASP.NET
Try learning about formalised testing (ISTQB), then look at the mobile testing market http://opensignal.com/reports/... and make a killing out of the lack of standards in the Android Market.
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
Learn object oriented programming, using Java or C++. That will give you a strong basis for almost anything else you want to do (I used to be a C++ programmer, and was hired as a Java programmer in spite of having no Java experience, on the strength of the C++).
if you want to do web stuff, learn a little HTML and CSS - you don't need to become an expert because most companies have people who specialize in HTML and CSS. You just need the basics so you can understand and modify pages. Also get familiar with HTTP.
Then Javascript, followed by some back-end language(s). Start with Java and/or PHP.
Most professional-grade sites are built on CMS's. Drupal is quite popular. Learn that with PHP and you should have a leg up.
Be prepared to keep learning new technologies constantly. Things are changing quickly, and even if you establish yourself as a PHP or Java programmer, new libraries are always popping up that you'll need to learn.
No sig? Sigh...
SOAP and REST (both XML and JSON) web services. This, not HTML, is what makes the web an application platform. Javascript alone does not a web app make.
You're already good at a low-level language, C. Now, add a high-level language (aka "scripting language") like Python. The two are complementary. Low-level is best when computer time is more valuable than programmer time, and high-level is best when programmer time is more valuable than computer time.
Python is fairly easy for C programmers to learn because it imitates C as much as it can while still being Python. It's also a nice way to learn OOP, if you don't already know that. It's also very pleasant and fun.
Some people don't like Python's lack of braces, but I think they're mostly being paid off by orthodontists. However, if you appreciate the minimalism of C, you should appreciate the minimalism of Python even more.
Ok, most of the advice on here seems way off the mark, though some was good. Who am I to say something like that? A self-taught dev making six-figures and having worked 20 years.
First, always be learning a new technology. Ignore the folks that said stop trying to learn new things.
As for what to learn, there are two ways to go.
One way is to track trends. You try to track all the trends and you're head will spin. The major trends though, as I see them, are: HTML/Javascript apps (including mobile apps), functional languages (on JVM learn Clojure, off JVM learn Haskell or Erlang), distributed and parallel computing (which are not the same, here again Erlang is good to learn, Go is another alternative, and Rust will be as well once they stop changing the syntax).
Another way is to track the kinds of problems you want to solve. If you don't have a kind of problem you are passionate about, find one! That is a key way to differentiate yourself, market yourself, and enjoy what you do. Here though you'll need to do the research. Some popular problem areas right now are healthcare, sharing to address resource scarcity or cost (think Uber), and disaster management. A great way to get involved in these areas and learn while doing is to volunteer. You also will make a lot of great connections, learn a lot, and feel great about yourself in the process.
To finish: always be learning something new, do something that you are passionate about, and give your time to others because you will be paid back many fold.
There are a lot of companies/ISP running horrid programs written in Java or whatever not. Learn the APIs for communications and Internet protocols.
I would suggest that you ought to forget employability.
Get the web Version of âoeThe incredible Secret Money machineâoe by Don Lancaster. Then realize that the new growth industry is poverty and homelessness. Invest in that!
Make a bicycle trailer that can be a really practical camper. Or make a good solar system. Just one product line is all you need for starters.
Make something that the homeless or soon-to-be-homeless can use to live and survive cost free.
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
Dart! It's time has arrived
Do you want to work on the client side or server side? If client, do you prefer Java/Android or Objective-C/iOS? If server-side then the answer is less clear as there are more competing technologies. If you choose to learn a dynamic scripting language I'd choose Python over Ruby or PHP. Having a working knowledge of traditional SQL is usually handy, though, nowdays, you can also pick one of the non-RDBMS alternatives and go deep on that. Coming from a C-based embedded environment I'd recommend you take some time to really "get" object-oriented design so that your Java (or Objective-C) code doesn't look like it was obviously written by a firmware engineer.
In C you just cannot use inheritance in any useful way
Give ASP.NET MVC a look. It's a server side technology that uses C#. C# is a fun language that doesn't get in your way -- it's a real productivity booster. Especially when using LINQ. Also, Visual Studio is an excellent environment to use C# in.
If you thought you knew CSS and JavaScript three years ago, but you haven't done much since then, relearn them. They're rapidly becoming very different beasts from what they once were.
Learn Android. I see a lot of demand for Android developers today. Android requires basic knowledge of Java, but only basic skills. The android framework is very different from other Java frameworks.
no, I don't have a sig
Hi,
My 2c:
* Learn about HTTP, verbs, and how the "web machinery" actually works. Learn especially about GET /person/1010, PUT /person/1010, POST /person, DELETE /person
* Learn Javascript. Well. Then learn a good client-side framework: start with Jquery. Then AngularJS, BackboneJS, or Dojo. (Dojo is my choice, but the others are also good. It's a matter of preference.
* Learn about (Json) REST stores. Basically, it's how you use HTTP verbs to manipulate resources via HTTP.
* Learn NodeJS. Use ExpressJS, and use a pre-made library (possibly mine, https://github.com/mercmobily/JsonRestStores , but you can use anything) to write JSON REST stores easily
* Learn how to write good applications: a rich client that works uniquely by making AJAX request (via JSON REST) to fetch, present, and manipulate data; and a server that only implements REST stores (or, very little more)
*Also learn PHP. It's terrible, but it's here.
* Be quick. This is not C. A lot of this stuff will be irrelevant soon. Keeping up is lucky, and it takes a bit of luck.
Note that this is only a possible angle. It's my favourite one though.
Merc.
The title says it all. If you learn nothing else, learn HTTP, HTML5, JavaScript, the JQuery library, and MySQL.
HTTP is the backbone of much software development, and you need to know how it differs from thicker client/server models.
HTML5 and its new element types (like Canvas) make a lot more things standard and simpler than older versions. HTML is not just your presentation on the web. Its document structure is the basis for your most important object in JavaScript for the web: The browser DOM (Document Object Model).
By JS in the title of course I mean JavaScript. On the server you can use JavaScript, Perl, Python, Ruby, or Java. PHP is worth learning additionally, but don't make it the only one of these languages you learn. It's useful but the namespace pollution, rapid feature deprecation and such other nonsense is a nightmare compared to the others. If you learn JavaScript and a couple of libraries (like JQuery and node.js) and you can work on the client side and server side with the same language. This is a pretty handy thing. There are also Perl, Python, Ruby, and Java for the server side. Despite what rumors you may have heard, all of them are alive and well. I prefer Perl and Ruby, and I understand Python's appeal to others. Java has its share of proponents, too, and you might become one of them if you take a look at the options. Lua, Common Lisp, Scheme, NewLISP, Arc, and a few others (even HaXe) are decent ways to handle things too, but they are less commonly used.
Some of the non-JavaScript server-side languages have strong libraries for server-side control of what's done on the browser without having to know JavaScript yourself. It's still good to know JavaScript and some strong library or framework for the client side. One of the most common is jQuery. YUI, Prototype, Scriptaculous, Google Web Toolkit, Twitter Bootstrap, and ExtJS all serve their purposes, too. I see a lot of work being done on moving from YUI and ExtJS to jQuery though as places standardize on one library throughout their organization.
MySQL isn't the only database system out there. It isn't even the best. It is ubiquitous. Because it's often the only thing on low-end hosting plans, there's a lot of documentation, tools, and support. Lots of other docs are for people coming from MySQL to other databases. Lots of other databases have come from it or seek to be compatible in some way with it. PostgreSQL is better. I recommend you learn both, and also SQLite. It wouldn't hurt to know Oracle, DB2, and others as well. If you only know one though and you're looking for the most opportunities, learn MySQL.
That's a start. There's so much more.
Since you are coming from an embedded systems background, have you considered staying with embedded systems? I would expect there will be more need for embedded programmers, not less, as cars get increasingly gadget-laded and Amazon starts delivering packages by drone and whatnot.
I am just speculating, but I would predict the embedded systems of the future will differ from the embedded systems of today in that they'll have sensors and will be wirelessly connected to the "internet of things." Gadgets like the Arduino and Raspberry Pi boards make it affordable to experiment with building robots at home. :-)
By all means, pursue smartphone programming if you're interested in it. This is just an option no one else has mentioned yet.
[Sir Garlon] is the marvellest knight that is now living, for he destroyeth many good knights, for he goeth invisible.
sic
There's gold in there.
Skot Nelson music is my saviour / i was maimed by rock and roll
As some others have said, your best bet now is to continue in what you know best. 15 years is a lot of experience in any field -- and embedded is one of the places where the action will continue to be for the next 25 years at least. Automated (e.g. A/I driven design) and inexperienced resources are going to have their limits for at least that long -- and will lose their lustre when their unrestricted use ends up causing one fatal accident or another (for now they're just losing money, but so far the movers and the shakers have found ways to print more of that, mostly by taking it from the rest of us). You may have, or want, to go overseas at some point. While you're skills will continue to be in demand, the work will probably move the BRIC countries (if I were 10 years younger I'd be looking at Brazil) as the US continues to spiral down into economic irrelevance due to the wholesale, unrestrained, looting that has gone in the 30 years.
In order to avoid many of the OWASP top-ten requires a detailed knowledge of not only the difference between GET and POST but also when Cookie headers are posted and when they are not.
Preventing Cross-site Request Forgery and Crosssite scripting in particular *require* some knowledge of "what is actually happening".
Forget about extreme security ninja skills! Since I'm saturated on C++. this year my objective are learning serenity and improve my patience, to have better results on handling with sociopath. That's the most intelligent way to have a better comprehension on what actions should be taken before, at and after problems come.
Cool isn't it? Sometimes the answer can be found on people, and that's will be technology as we know, in the future. :)
He must have be stuck on Slackware 6. Its pretty stable these days. No need to learn anything.
Why don't you just learn/try what interests you most?
The stuff you ask is just to complicate to answer:
Mobile:
Android or iOS, or - safe you god - Windows Mobile?
While you can program with C for Android most use googles "Java variation" for it. iOS is usually programmed in Objective-C, but can be programed with C++ or with cross platform tools with HTML5 and JavaScript.
So you see: brought spectrum.
Web the same problem.
Hard core developers use plain HTML and JavaScript, based on popular JavaScript frameworks (like JQuery or prototype and such). Server side then is pretty decoupled and everything is possible.
As well you could use Flash (*cough*) or Silverlight (*cough* *cough*) for your client side stuff.
On the server everything via cgi (C/C++, PERL, etc.) or PHP (*cough* *cough*) frameworks behind an Apache web server to Java (Servlets/JSP or simple XML based or JSON based transfer) is thinkable.
I personally use GWT for web stuff ...
What to do mobile I have not decided yet, I hope and wait for JavaX.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Go down on the abstraction ladder not up, learn VHDL, FPGA-s, hardware interfaces. World is full on webpage-monkeys, engineering closer to hardware pays better.
Would be Java and HTML.
Java gets you entry into mobile app writing and a lot of server side stuff for the web at the same time. Plus the amount of Java out there is immense. It's the Cobol of the 21st century.
HTML gets you into the presentation and UI.
Later add in Javascript. You can even pick it up on the fly, it isn't particularly hard.
Good Java and C expertise is a pretty sweet combination.
I'm a front end developer with around 15 years experience. I spent half of 2013 during a job transition experimenting with IT Recruiting. During sequestration, I spoke with a lot of C/C++ embedded guys that had been happily siloed at government contractors for the last 10-15 years and were suddenly confronted with a job market focused on web/mobile technologies. At least in the Philadelphia market where I work, I can tell you it was very tough for them.
In my experience these technologies had the highest earning potential and demand in order.
C#/ASP.Net - these developers had the most power and earning potential in the job market. Managers that took too long in their hiring/decision making process found their first, second, and third choice candidates were all snapped up before they could extend an offer.
Java - is tenacious and still commands very high salaries.
Objective C - falls into the category of managers wanting more years experience than the iphone has been in existence, so few developers match the requirements. Very high demand.
HTML5/JavaScript/Jquery
I worked for 17 years as a mostly hardware and low level software person, with just enough MFC/Windows/Qt to make reasonable UI's. At the job I started 6 years ago everything is web based "enterprise" software. I now work on a small engineering team (about 8) in a very large company. I got hired for my expertise in C++ an dLinux to work on a biometrics project but as I finished it I needed to acquire skills more generally useful to the team. I started with PHP - it's very C like but with less type safety :). Modern PHP is much more object oriented, if you are comfortable with C++ it'll be very easy. Javascript is absolutely essential; JQuery and Knockout are nearly as essential (frameworks that clean up javascript and make it more portable). Any web app with more than 2 or 3 users needs to use AJAX rather than postbacks to have reasonable performance. In a windows shop you must learn ASP .Net and C#, Ojective C is useful if you want to target Apple products (phones or computers), but with HTML 5 you can do an awful lot without going native. Our apps use an abstarction framework to let one code base target all the popular phone O/S's with pretty standard web apps. (javascript/HTML front end, windows or linux backend REST service) Some SQL is very useful but you don't need to be an expert - any serious web development team will have a database expert who will do the DB stuff, you just need enough to code up test setups, prototypes and to talk to the DB guy. A Pluralsight subscription is very useful (no I don't work for them) I have learned a lot in a short time form their courses. Finally if you are going to work on "Enterprise" development you should really learn about Kanban and agile development since most of them use it in some form.
golang.org
Briefly:
1) Go is a modern "better c from the people who didn't bring you c++"
2) Go is designed from scratch to make concurrent programming simpler, and believe me they achieved this.
3) Go is fast, portable, lightweight, simple.
4) Go is designed and worked on by the likes of Rob Pike & Ken Thompson.
5) Programming in Go "feels" like c, but with the simple expressiveness of a scripting language. It's both low level and high level, depending how you use it.
6) The standard library is really good, especially given that go 1.0 only came out in 2.12
7) The community is even better.
-- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz
Omnom nom, nom
I thought the proper sound for cookies was clickity-clickity-click.
The guy just wants to publish a mobile app and get rich... using "the smallest set of 'new technologies" possible.
The answer is obviously the entire iPhone/Pad development environment and the entire android development environment.
No need to worry about blackberry or windows phone so that cuts down the requirements a little bit.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
RDBMSes are going to die the same way tablets will replace personal computers, ie. not really. Different tools for different purposes. Maybe they'll become rarer, but there are situations where they can't be beat. This is like people saying that Java will replace C++ or that Python will replace Java or whatever other bullshit you get when something new and fancy appears.
...that tomorrows tech is just a collection of encapsulated tech from yesterday.
So learn a couple modern web/mobile frameworks.
Their structure and workflow will show you current development trends and give you a taste of each piece before you take a deep dive.
For extra credit (and an enhancement to your adaptability), pick both a popular web stack and an obscure one.
Anecdotal: After being out of web development for 2 years, I spent last week with jquery/mongodb/backbone/handlebars/bootstrap and feel like I never missed a beat. I feel like I gained a beat! My last project before this was on a LAMP stack, so the transition was not only easy, but also refreshing.
Making fire with two sticks.
Building a shelter with a minimum of resources.
Foraging for food at night.
Navigating by stars.
Hand-to-hand combat.
Great new web app builder -> https://www.meteor.com/
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.
Of course there are. You can have 10 years combined experience with the tech and its immediate predecessor, such as Android and Sun Java, or iOS and OS X Cocoa. Or you can happen to have worked at the company where the tech was invented, such as someone in the iPod division of Apple while the iPhone was still in development, or someone who worked for Android Inc. before Google bought it. These ads demanding impossible experience smack of wanting to poach from a specific company.
If he picks up Objective-C and sticks an app in the App Store
How should someone go about doing that without running the risk of having Apple reject it because it duplicates the functionality of what's already in the App Store?
Maybe you should turn away from the vagueries and demands of industry for a while and focus on some personal enrichment that will make you a better programmer (yes, even after 15 years), and smarter, too, using the language you already know. Do the first 100 problems at Project Euler. Then later if you still want to learn a new language, you can do them again in that one. Learning new languages this way is whip-crack fast.
Plastics.
HSJ$$*&#^!#+++ATH0
NO CARRIER
That RDBMS remark has nothing to do with hype. The hyped-up no-SQL paradigm says that no-SQL is good for loosely structured or unstructured data, of which there is actually quite a lot "out there", in the wild. What I see, is different, especially when it comes to the latest generation of graph databases, like neo4J and Titan: as soon as people encounter those technologies, they begin to think differently even about already highly-structured data. As a matter of fact, all data whose structure can be depicted in a relational schema can also be represented by a graph.
Add to that the growing resentment and inimicity Oracle is encountering with its extant client base, simply because of vendor lock-in. Add to that the natural cap there is on SQL Server usage numbers, due to slowly shrinking Windows ( server-side ) market penetration. Add to that the slow disappearance into gloom of mySQL.
For sure, very conservative corporate customers, like banks and insurance, will continue to rely upon RDBMSes for a long time. Same thing as for COBOL. You may not believe me, but I am willing to bet several hundreds of euro upon it: 10 years from now, Oracle will be company in trouble ( only their large cash reserve is keeping them outside of troubled waters right now; remember Blackberry ? ) and SQL Server will have dwindled to insignificance. no-SQL databases of a kind and of performance we can, right now, not even yet dream of will rule the roost.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
You should first learn how to filter out what technologies are essential.
This skill is super handy for the coming years...
Then keep doing C. Many companies are hiring C developers these days, the mobile processor vendors are grabbing as many C folks as they can to support Linux device drivers (Linux is the basis for Android and ChromeOS).
If you don't like C, then find something you do like. There are even jobs out there for people who are into SmallTalk (mostly to do business logic in European markets). The new programming languages that get most of the media attention are interesting as well, but aren't the only jobs out there. And honestly if you haven't picked up on them now, you might find yourself a bit behind the competition when you go to apply for that dream job in Haskell, OCaml, Go or Rust. (or Python, Erlang, ...)
“Common sense is not so common.” — Voltaire
My original submission (ClarityRay vs adblock) http://slashdot.org/submission... vs. what he put up instead, completely altered http://ask.slashdot.org/story/...
* Notice ANY difference there? I do... that, folks, is bogus to do!
APK
P.S.=> Between crap like that & the troll infestation + those gaming & cheating the easily beaten so-called "moderation system" here (downmodding others, logging out and trolling by anonymous coward posts AND using multiple registered account sockpuppets etc.)? This site's really going downhill - especially when downmods are applied to posts that have facts in them that the trolls can't disprove (such as my posts on hosts' value in added speed, security, reliability, and even anonymity http://ask.slashdot.org/commen... that NOBODY can disprove here, or elsewhere, online - makes me laugh, since truth inevitably & invariably, always wins out in the end...)
... apk
I started with .net c# 13 years ago. It has pretty good feature parity with java, in some cases better. Much worse memory management. I actually enjoy java much more. I cant make the switch because of experience. But you can do the same things in .net as in java. Not defending microsoft but they are really, really close and in most cases can accomplish the same tasks. Now running the bloated framework on a win server versus java on a nix box is a different story. Java can run allot more with less.
I also see tones more jobs for java (in silicon valley) than net.
Let me give you some advice, as someone who went to school for Computer Engineering (very aware of embedding programming) and now works for a major Internet browser vendor. C may have been considered high level back in the day, but relatively speaking is now one of the lowest level programming languages. While it's simple, and fast, it is verbose as hell to write anything useful. C's idea of portability is also bizarre, relative to modern higher level languages (autotools generates thousands of files). I love C, and it's my go to for lower level languages. I just cannot keep track of all there is to C++, it's like a dog that kept getting legs nailed to it until it was referred to as an octopus. C++ is a great language, but it's not for me. I have one lower level language that I'm expert in, and one higher level language that I'm expert in. Java, and C# in my opinion don't differentiate themselves enough from C (by design) as a dynamically typed language would.
That said, it's worthwhile to learn multiple different languages, even if you don't master them, because each one has something to teach you, will change how you think of programming, and make you more effective in programming with other languages as you can reuse interesting patterns. Seeing other people say "don't follow new trends" is disappointing; it's so close minded that it's sad to see that they've closed themselves off from learning new paradigms.
As far as higher level language is concerned, I'd recommend JavaScript. It's dynamically typed, which should be a new paradigm for you. Its loosely typed nature shouldn't be completely foreign to a C programmer (unless you don't understand C's implicit promotion and conversion rules). JavaScript is pervasive and you don't need an IDE for it (not like making an IDE for a dynamically typed language is trivial); just fire up your browser and you can play around with it. You'll find the web to be much more portable for your programs (though it's still not a perfect solution). JavaScript can also be used for the back end as well, with the Node.js runtime. Further, there are even higher level languages like TypeScript or, my favorite, CoffeeScript. CoffeeScript combines some of my favorite parts of Ruby and Python, but if you're not careful can generate some awful JavaScript (returning the evaluation of a for loop), but you can do the same with mistakes with C (generating awful assembly). JavaScript will also open you mind to functional programming, while not forcing it down your throat.
PHP was my first love, but many developers fail to recognize it as a language and think it's tightly bound to Apache. Ruby has some of the most mind bending metaprogramming features, but the performance pails in magnitude to modern JavaScript VMs. Python's community has a split that I see as detrimental between 2.X and 3.X, but has some great features of the language. I'm really not sure what differentiates Perl anymore, as its regex functionality has been borrowed by Python, Ruby, and JavaScript. Lua might be useful in place of JavaScript, as it's embeddable within C projects and is used frequently in scripting game engines (so I would recommend that, or JavaScript). That said, I have learned something useful from all of the above, and am glad I took the time to learn more about them, even if I did not choose to master them.
For my senior design project, I used C in an embedded device, as well as CoffeeScript to receive info and display it via a web interface. It was awesome to have such fine grain control of the bits when I needed, and the ability to create a Hash with a literal when needed. That's why I recommend on mastering one low level and one high level language.
For a quick intro I gave recently on JavaScript: http://mozilla-ntu.github.io/s... For more on C and JavaScript: http://nickdesaulniers.github....
If you don't agree that higher level is the way to go, Rust has an interesting new approach to systems programming, even if the APIs change every (still in beta) release.
Just kidding.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Reading and writing. If you haven't heard of these killer apps, check wikipedia.
Yours In Obscurity,
K. Trout
If you want to learn something, which will become a standard, then learn a functional language. Haskell, SML, Erlang, clojure etc. Now we have 8 cores in our computer, but in 10 years it will be 100 to 1000. Good luck taming that beast with javascript. Besides that, it pays the bill: http://www.tsurucapital.com/en/jobs.html#programmer
If you don't know HTML, PHP, and javascript, then you should learn them.
excitingthingstodo.blogspot.com
I will base my opinion of your post on the quality of your work.
Javascript is hurl inducing. I'm losing my lunch right now just thinking about using javascript on the back end.
The future of javascript programming is in getting rid of as much javascript as you can. Otherwise we are doomed.
Actually, most developers and a lot of systems I encounter use a character encoding that they say is UTF-8, but actually kinda uses ASCII. This causes all sorts of interesting issues, which is why I've dubbed this encoding WTF-8.
you might want to watch this video from Computerphile: Characters, Symbols and the Unicode Miracle
understanding is important and this is interesting stuff :D
NOT javascript, php, or java. Those are the tools of the dead men walking. They don't realize it. It is really sad.
Every kid is learning those - do you want to compete against people with 4 months experience happy to make $10/hr?
Learn something slightly less popular, but stull highly capable. You pick.
People always love say that PHP is bad.
And then they always like to forget that facebook is built on it as well(okey they turn parts of it into bytecode, but still, so can you)
About the same pay and you don't have to use your brain for work. That is what I did. Now I only code open source and get paid just as well for menial work as I did for constantly worrying about deadlines.
But they aren't webscale, because they use joins.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
Object C is the language to go for!!... Mobile technology in the coming years will just take over all other technologies!! ... In fact we are into mobile game development ( http://www.xcubegames.com/ ) and can say what 'huge' is coming in the mobile world!!
You really have to have a chronic lack of imagination to draw a blank there.
The difference is that as a student or as an employee, one has a boss to tell him what to make. In order to get onto the App Store, one has to stop thinking like an employee and start thinking like an entrepreneur, and some people might have a hard time making that change.
With respect to the "leaked guidelines", do you realise this is not secret information
I fail to see how it isn't secret. When one signs up for a free developer account on Apple.com, he has to agree to a non-disclosure agreement stating that any information on Apple.com behind a paywall is confidential. This means, for example, that the Guidelines are confidential.
That's a badly misinformed rant written by somebody who clearly has an axe to grind.
So how would one go about refuting that rant without violating NDA?
No, you don't have to spend over a thousand dollars buying a Mac, an iPad, and a certificate just to see the guidelines. You just have to have a paid developer account, which costs $99.
In other words, you are claiming that one should buy a paid developer account, read the Guidelines, and then buy a Mac on which to run Xcode and an iPad mini on which to test an application. Do I understand you correctly?
as long as you stick to the guidelines, the risk is minimal.
One problem is that it costs at least $99 to even see the guidelines. I signed up for an Apple ID and registered as a developer, but when I tried to view the guidelines, I got an authorization failure because I'm not yet a paid member. And once a developer finishes paying $99 for iOS guidelines, $99 for Mac App Store guidelines, $99 for Windows store guidelines, etc., he's out quite a chunk of pocket change.
Honestly if you don't already know, you'll never get your timing right anyway...
Some knowlidges are very old, very deep, and very useful.
Here's the list I been learning for past decade:
1) Regular Expression ( very useful, it gave me many ways to shortcut the hardwork )
2) Garbage Collection ( it's so cute once you know about it )
3) Prologue
4) Expect ( not the language itself, but reason we needed this, was very interesting )
5) TCP/IP ( especially concept of sliding window helped me a lot when I needed rough flow control feature )
I know none of them are new, even 10 years ago. But people told me it worth learning even 10 years ago, and at least for me, they were right.
In my view, it will take your lifetime for salaries in third world countries to rise to the sinking level of 2nd and first world countries.
You are best to consider a career that takes IT as a hobby, but which will reward you with continuous work from graduation to retirement.
I was lucky. I got into IT in the late 1950's, with the boom. However, after 2000, work started to migrate to India, Malaysia, etc. If however, you from those countries, then I would definitely make IT a career.
I would learn Linux, object oriented design, functional design, and business functionality. By the latter, it is to understand about the detailed functioning of every department of an enterprise, from sales, finance, warehousing and logistics, manufacturing, distribution, Human Resources, Engineering, etc. Be able to apply your skills in those areas, and do take advantage to become the corporate specialist who knows it all.