What's new after 20 years?
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
Well, from one "old fart" to another I'd say studying C#, VS.Net and SQL Server might be a good bet. If you're so inclined maybe a web development technology but you don't have to go that route. There's a lot to do out there. Suggest, though, that you pick one major technology (whether that be .Net, Java or whatever) and stay with it awhile. I made the mistake of spinning my wheels trying to keep up with too much. Once I got focused on one technology I learned it much more quickly than by trying to bite off too many different flavors all at once. -Another Old Fart
-
Back when I started it was called DP (Data-Processing). It's been through several revisions since then! -CB
-
Hunter Cottage wrote:
like me should update my skills with...
These days you really need to decide an area to focus on first. You might mess around in Java or C# but it is probably impossible to explore all facets of those languages. So finding a direction early one would help.
jschell wrote:
These days you really need to decide an area to focus on first.
I will definitely second that. :thumbsup: I made the mistake of trying to ingest too many technologies at one time for awhile (studying too many different things) and basically spun my wheels for a good while. There's only so much bandwidth the brain will handle, particularly in an information-intensive field like this one. The old adage "Jack of All Trades, Master of None" really applies here. -CB
-
It's like surfing...Lots of product waves that are supposed to be the ultimate, become only the next big thing, then are forgotten (except for code maintenance). Silverlight is a good example. It was supposed to be "the next big thing" and to "conquer the web" and "everyone should learn it". Now it's abandoned by Microsoft and effectively dead for new development. Oh, wait...Now there's Metro! "Catch the wave, man! It's so cool! It's the ultimate!" Next year it will be something else that will save the world, produce world peace, and be the Silver Bullet. This same technology wave phenomena occurs in Java and to a lesser extent in other environments and tools. The newcomer will keep getting hit by the waves until he/she: 1. Picks one and rides it in to the beach. 2. Gives up. 3. Learns to surf. So pick a wave and learn to surf it and perhaps ride it in to the beach or keep catching new ones until you're tired of new waves! - Grant
C. Grant Anderson
Excellent advice Grant and 100% spot-on. In my opinion the developer that tells you he can master two disparate technologies (like Java vs. .Net) at the same time is either lying to you or he's not too hot at either one of them. I damn near burned-out trying to run two tracks like that for awhile. Once I decided to just pick one I feel much better and have tons more energy to learn. -CB
-
Great metaphor!!:thumbsup: Wise words, kudos to you!! Number 1 sounds like a good thing to do... I'm an avid climber, so don't have time for number 3!
Hunter Cottage wrote:
I'm an avid climber, so don't have time for number 3!
What I discovered when I was trying to learn Java AND C# at the same time was like climbing 500m up the face then deciding I wanted to rappel over to the trail on the other side of the face. I kept falling back to ground level having to start over because I couldn't remember exactly where all the handholds were on BOTH trails. That's how I viewed the situation when I decided to abandon Java and forge ahead with .Net. I've made more progress on my #1 "trail" in the last week than I made the last year because of that one issue. I just needed to back off and realize I was trying to [mentally] take on too much. I've always had that problem! -CB
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
I wanted to give a constructive answer to this question. As far as technology, "Not much." Compiler support for C++ has improved, but it's still mostly the same language. C++ was already mainstream 20 years ago. Microsoft has released three whole new programming APIs in the last 20 years depending on how you count them. But Microsoft had released a couple of new APIs in the period right before that, so nothing new there. You will have the advantage of not having wasted your time learning several great new things from Microsoft. In 1990 people were talking about functional programming as if it would be the next big thing. And 20 years later most of them are still talking. Moore's Law has not changed in 20 years. But the consequence of Moore's Law is that computers are a thousand times faster. And a consequence of that is that toy languages built by individual people run fast enough these days to do real work. So there are more language choices. Unless you want to go fast, in which case you have basically got C++ or some languages nobody uses. Teams are the same; full of geeky people, with all the joys and challenges of working alongside geeky people. If you like teams, that's good. If you hate teams, that sucks. Fewer women though. I personally think that's sad. What's Different The software industry really took off about 1995. A lot of code bases got their architecture laid down during the late '90's. So today there are relatively more jobs maintaining creaky old code bases, and relatively fewer jobs doing new code, than 20 years ago. The skill set for maintaining creaky old code bases is a little different than the skill set for writing new code. This one factor may most affect your employability and the enjoyment of your work. Another consequence of the industry taking off in 1995 is that the average developer is younger today than 20 years ago. There are at least fifty times as many working developers (in the U.S., but basically everywhere else too) today as there were 20 years ago. That means the average I.Q. of a developer is much closer to 100, with the kind of results you'd expect. With developers less mature and less intelligent (on average, I'm not talking about anybody on this site :-)), and with relatively less green-field coding going on, it seems to me that management has gotten harsher and probably also less competent due to the same growth-related force. So there is more work that is dreary and it's harder to find staff fit for really interesting work.
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
I'd take a look at some form of Java. It will be familiar to a C++ programmer. It runs on many different platforms. It's so similar to C# that you'll actually end up building .NET skills (or, at least, learning more contemporary thought processes) in a roundabout way. My academic background is in C++ as well, and I've done a lot of .NET professionally (you can't always expect your bosses to have good taste :) ), but I've never had any trouble picking a Java project up quickly and being productive. To call it C++ with a lot of the stupidity filtered out is an oversimplification, but not an entirely unreasonable one.
-
Member 353121 wrote:
Pick one and ride it in to the beach
Well said. It's not so much that things change dramatically in 20 years, its that things change dramatically every 20 days! But it doesn't really matter because ANY tool you select and become proficient in will be useful to someone. So my advice to you is not to worry too much about picking the right tool to focus on, but find a project that interests you (or, better, consumes you) and dive into it. Perhaps an open source project that doesn't have too frenetic of a development pace. Then learn everything you need to learn for THAT project. At the end you'll not only have a new set of tools in your belt, a shiny project you can refer to on your resume, but you'll have a sense of accomplishment. And that is something that will still be valuable 20 years from now.
kdmote wrote:
But it doesn't really matter because ANY tool you select and become proficient in will be useful to someone.
Yes but that doesn't mean that you will be able to get paid for it. Thus there seems to be some interest in Lua (a programming language) but a lot more in C#. So if one knows nothing then starting with something that is popular is more likely to produce positive effects.
-
I've been away from the business about 20 years now. I studied CS in the early 90's when C++ was the upcoming star, to find out that it is old hat now-a-days. I've been side-tracked by accounting and it would be interesting to find out your take as to what an Old Fart like me should update my skills with...
If you have nothing constructive to say, be silent!
I’ve coded for most of the past 20 years. C/C++ has given birth to many variants including C#, Java, JavaScript, PHP, etc… C# is huge; however I’ve seen an arrogance around it that just turns me off. BASIC (my favorite) is still alive and strong with a host of its own variants. Unfortunately it still endures a stigma regardless of any specific variant’s actual capabilities. SQL variants dominate most relational database programming. A NoSQL[^] movement also exists, however I'm not up to speed with it. Oddball syntaxes such as Erlang, Haskell, and Lisp have features that give food for thought. I’d say the biggest change has been in paradigms; specifically OOP[^], AOP[^], and functional[^]/declarative[^] (think HTML, XAML, SQL) to name a few. In short, if you’re looking for a star then grab a telescope. If you’re looking for a programming language then first ask yourself what you want to program. Use that as a guide to pick a language. Wikipedia has a few comparisons that might be helpful here[^] and here[^]. When in doubt, learn them all! (It can only help.)
-
kdmote wrote:
But it doesn't really matter because ANY tool you select and become proficient in will be useful to someone.
Yes but that doesn't mean that you will be able to get paid for it. Thus there seems to be some interest in Lua (a programming language) but a lot more in C#. So if one knows nothing then starting with something that is popular is more likely to produce positive effects.
jschell wrote:
but that doesn't mean that you will be able to get paid for it
Certainly I agree that there some languages that are obsolete. But diving into an existing open source project, as I suggested, is unlikely to land you in such a ghost town. Perhaps the best advice I can give is to checkout the incredible statistics collected at ohloh.net. The graph I've linked to confirms my suspicion that usefulness of a large spectrum of languages is converging to an astonishingly level playing field over recent years. It's hard to go wrong with any of them. (Although C# doesn't seem to be faring quite so well, at least in the Open Source world -- check out this graph.)
-
GREAT indexes!! I wonder how valid they are for Europe? Never thought my old C and Pascal would still be hanging in there!! That ADA is still used, I was glad to never have touched the stuff... Thanks for your input!! This was extremely useful!!:thumbsup:
You are welcome. Indeed old C is still well alive, even under several reincarnations. Much of the C syntax and concepts have been reused in C++, Objective-C, Java, C# and many others... The Pascal language also had much influence on ADA and Pascal followers like Modula and Oberon (still in use, on a confidential scale, unfortunately). I don'k know of an European index, but I don't imagine the outcome would be much different.
-
Hunter Cottage wrote:
I'm an avid climber, so don't have time for number 3!
What I discovered when I was trying to learn Java AND C# at the same time was like climbing 500m up the face then deciding I wanted to rappel over to the trail on the other side of the face. I kept falling back to ground level having to start over because I couldn't remember exactly where all the handholds were on BOTH trails. That's how I viewed the situation when I decided to abandon Java and forge ahead with .Net. I've made more progress on my #1 "trail" in the last week than I made the last year because of that one issue. I just needed to back off and realize I was trying to [mentally] take on too much. I've always had that problem! -CB
I have always had a problem with doing the same thing. Need to learn to concentrate on one topic at a time... :laugh:
-
Member 353121 wrote:
Pick one and ride it in to the beach
Well said. It's not so much that things change dramatically in 20 years, its that things change dramatically every 20 days! But it doesn't really matter because ANY tool you select and become proficient in will be useful to someone. So my advice to you is not to worry too much about picking the right tool to focus on, but find a project that interests you (or, better, consumes you) and dive into it. Perhaps an open source project that doesn't have too frenetic of a development pace. Then learn everything you need to learn for THAT project. At the end you'll not only have a new set of tools in your belt, a shiny project you can refer to on your resume, but you'll have a sense of accomplishment. And that is something that will still be valuable 20 years from now.
Also well said!! Thanks for the input!!
-
You are welcome. Indeed old C is still well alive, even under several reincarnations. Much of the C syntax and concepts have been reused in C++, Objective-C, Java, C# and many others... The Pascal language also had much influence on ADA and Pascal followers like Modula and Oberon (still in use, on a confidential scale, unfortunately). I don'k know of an European index, but I don't imagine the outcome would be much different.
Looking into the Tiobe index a bit more, I saw that it encompasses everything that has been written/coded (how they do that I don't know) but that should mean Europe is included... Thanks again for your input!!
-
C++ is still the bright star but the sky is full of stars. Programming is expensive, so you can do java stuff if you don't want to pay for well educated programmers. You can make a compromise with c#, which is better than java and quite innovative compared to other languages. But C++ is catching up, the current version contains a lot of interesting stuff, including the all good stuff C Sharp never had. Interpreting languages are quite common. Python or Ruby. PHP is used for a lot of small and/or buggy projects, because it's as easy to have success with one line of code as it is to get a two bug with two lines of code. There is some attention at functional programming like Haskell or Scala. Forget about anything you heard about basic, noone want's basic anymore. I would say, C++ is still top of the range, but C#/Java are more common for business stuff, like handling data bases stuff etc. The syntax of Java/C# is cleaner, at least at the windows environment, where C++ sometimes looks quite ugly. For portable software I do not see any real advantages of these languages. If you like to update your skills, teach yourself in C++11. If you're good with C++, everything else is just triviality - the rest are just programming tools with a specialization in the one or other matter. ;-) I am a c++ developer (officially I am C#-Developer, but I didn't write a c# line since two years or so), I was a java developer before. Currently I teach myself Scala just to know it and to keep track of this topic. For private projects I use C++ and a self developed programming language which currently just generates c++ codes.
I've understood that I have an advantage to already know C and C++. I just need to dust it off and oil up the machinery again... Appreciate your input!!
-
After 20 yrs, some one is going to write a s/w that will automatically write softwares for all devices. All programmers die :p
Well then I'll call myself an accountant who programs... ;P
-
My Computer Science degree is from 1988. There is really not much new. If you can read & write c and Pascal you are way ahead of the current crowd. The trend has drifted to bloated code and disregard for machine performance. A library or API call is preferred to self contained code. Getting a "tool chain" in place the first time is more difficult than actually writing code. A lot of what is called programming is actually scripting. Since Windows does not support legacy drivers each new release makes any special IO devices unuseable in about 4 years. Recently I have noted: The latest C++ specs were mostly ignored. Apparently those who actually write code are not interested in new ways to do the same old things. I got tired of Python and put it away for a while when I got to the matter of string handling. To me, the old way was concise and complete. The real attraction is that the package (Pyton.org) is free, can be run as an interpreter or compiled and is extensively cross platform. I have not got to JAVA yet but its popularity and flexibility makes it a must do. As soon as any programming package becomes popular there seems to be a movement to fragment away from any standards. Kind of a "Tower of Babel" event. C/C++ is available as open source and free. It works well and would probably be a good starting point for you. The whole Open Source movement is worth joining. Most software seems to become available well ahead of any written documents. Nearly anything you want to learn has a good YouTube Tutorial as well as free online tutorials. No individual can do everything, there is just too much. That has not changed.
I've thought a lot about your remarks, and they make real sense!! In the 20 years I've been away from the business, I've dabbled a bit with a few languages and have done some coding for a few Open Source projects. I must say that I really enjoy the fact of having Open Source available! It has made it possible for someone like me to sort of keep my hands "wet" without having to make major investments or direction changes... I'm feeling stoked again to dust off the old C/C++ and see how much I remember... and to get involved in something! Thanks again for your input!!
-
I've been in a similar situation. I took some comp sci classes in college (late 70's to mid 80's; degree in chemical engineering) and around 1990 took an extension class in OOP with C++. I maintain a handful of small programs at work (LOC in the 100s for each program), originally C++, then VB 6.0 and .NET, now C#. You may benefit a lot from looking at strategies rather than specific languages, depending on what you learned in school. A quick summary might be "Agile Programming" concepts. I found the shift from console programming to GUI programming a steep learning curve. Especially be aware of the separation of interface logic and model logic (Model-View-Controller and similar paradigms). When you are ready for a specific language, concentrate on one well-suited for the tasks you plan/want to do. I would also encourage looking into a functional language; even if you don't use it you will learn things that can make your programming better. In the long run, you will probably spend much more time learning the framework(s) used with the language than learning the language itself. To some extent, though, some languages are nearly synonymous with a framework (e.g., VB and C# are usually used with .Net).
I've actually wondered about some of the things you have brought up. Through the years I've dabbled a bit through Open Source available stuff, and have found some of the GUI/paradigms difficult to both interpret and learn. I have the opportunity to take some online courses, so I probably will take something in this line to get some structure in this area. Thanks again for you insight and input!!
-
I took a 13 year sabatical to do volunteer work, then came back to programming 5 years ago. My main professional experience was C back then (mid 80's early 90's). All the software recruiters laughed in my face and told me not to expect much in the way of salary. It took me 3 months to land a C++ job where my starting salary was 50% higher then what they are paying for those newfangled-latest-thing-web-developer jobs. The vast majority of job listings out there are web development for some company that doesn't know anything about computer science and doesn't care and just wants some code monkey to build / maintain / update their web-site. They want to pay you a code monkey salary and they think they can because there is always some bright eyed kid who thinks he knows everything about computers who is willing to do it for less since he doesn't have a family to support. There are still lots of work that is done in C/C++ and fewer engineers who can do that work (all of who expect to be paid a decent wage). A computer is still a computer no matter what form it is, and somebody still has to write the code that talks to the bare metal -- if you had skills in that area, they are still relevant. If you didn't have skills in that area, there is actually less to learn in that arena then learning all the API's and frameworks of the latest thing. If you are looking to get back into the business professionally, then go with what you know. It's still useful. After getting a decent job doing what I know well, I got a side job doing iOS apps. (I didn't need the money, I just prefer somebody to pay me when I'm learning something new.) Objective C isn't that different from C++ once you get past the weird syntax and wrap your head around the Apple reference counting memory management. You just have a reasonably size API with poor documentation and a worse IDE to deal with (but that's what you had 20 years ago). Your average smart phone is memory constrained (nothing new there either) and it just has a lot more pixels than you are used to. From there I've branched out to various web related technologies because sooner or later your smartphone app has to interact with the internet. (And again, I was getting paid to learn it since it was related to the iOS stuff.) If you aren't looking to do something professionally, but just want to get into it for fun -- then go ahead and dive into some web-stuff. Skip C#, you already know C++ and the only thing new in C# is garbage collection and a HU
Through this question here, I've understood that I still have viable knowledge, albeit dusty and forgotten, and that has been a real vitamin injection!! I sort of feel I need to stop thinking about making my code really effective. I've understood that performance isn't really an issue (except for games I guess)...
-
Well, from one "old fart" to another I'd say studying C#, VS.Net and SQL Server might be a good bet. If you're so inclined maybe a web development technology but you don't have to go that route. There's a lot to do out there. Suggest, though, that you pick one major technology (whether that be .Net, Java or whatever) and stay with it awhile. I made the mistake of spinning my wheels trying to keep up with too much. Once I got focused on one technology I learned it much more quickly than by trying to bite off too many different flavors all at once. -Another Old Fart
Well I hear you, and been-there-done-that (my wife suggests I still do) I'm going to dust off a few things and have some fun!!!