Summary
Can a focus on C++ get me through the next twenty-odd years? Is it time to stop chasing bright, shiny new languages and consolidate as a guru? A few thoughts on "legacy languages" and the later stages of a coding career.
Advertisement
I am 46 and my Dad's recent death raises the usual thoughts of mortality.
I probably will be working full-time for no more than twenty to twenty-five years. I am also highly unlikely to move up to management - my return to consulting in the last two years has reaffirmed that designing and implementing software is something I love doing.
I've wandered a bit on the language map in the last few years from the C++ that was my focus for the preceding fifteen: Python, and now Ruby as a dynamic language, REALbasic as a highly-productive cross-platform tool and C# enough to get through a WPF porting project.
A recent port of an old Macintosh C program to a WPF GUI and associated updates on OOFILE's report-writer had me working regularly back in C++ and reminded me how much I've internalized the language. It also how reminded me how much I miss Object Master because I'm still able to use Object Master on an old UMax Mac clone on the early OOFILE Source!
It is some kind of synchronicity that at the time I write this, one of the hotter threads on Artima is responding to Bruce Eckel's Language Archaeology posting about C++ design decisions. Unlike some of those commentators, C++ to me is like slipping on comfy old shoes. I like C++ and whilst there are things in other languages I appreciate, there are also a lot of times I found myself missing C++ features that they all lack. Admittedly, this love is much more about the semantics than the syntax but, hey, love in middle-age requires a bit of soft-focus on wrinkles.
In saying I'm seriously contemplating giving up learning new languages, I'd should draw a clear line between occasionally studying a language for interest or to see some idioms that might help you think differently and internalizing a language to the point where you can work fluidly in it at a high level of performance and expertise. I don't think I'll be able to resist the temptation to go peek at new goodies :-)
My internal debate reminds me of my rich, penny-pinching brother-in-law's dilemma he semi-gloated about at a dinner last year - as a wine connoisseur, he now owns more wine than he can drink through in his expected lifespan. Does that mean he should stop buying wine, which is much of the joy of collecting?
Should I stop worrying about trying to keep up with new trends in language design and assume C++ will see me out? If I put a little Objective-C on top, it will handle anything I want to do on the Mac or iPhone.
Microsoft have unfortunately dropped C++/CLI as a first-class Windows language if you want to work with .Net GUIs - it is now just an interoperability language because WPF and SilverLight XAML won't work with C++/CLI. So maybe I need to keep a little bit of C# going to do Windows GUI's.
I guess the only threat to this retirement plan as a legacy C++ guru is the hordes of bright young games programmers. But seriously, if you're looking to maintain some really old code in 2020, won't you want to hire a consultant with an authentically grey beard?
Sticking to a single ability as a selling point like being a C++ legacy guru even when one is a great master seems to be a dangerous path to me.
In my experience getting into a new language is the least of my problems but becoming comfortable with only a small percentage of application frameworks, libraries which multiply as I learn them is a major effort which takes forever. Ironically this is getting even worse when Microsoft declines as it is prognosticated by Bruce and others. When you are doing web programming with MS-tools you are using ASP.NET and maybe Silverlight. But which of the hundred Python or Java web-frameworks to choose? In Pythons case Django, Turbogears, Zope, GAE-Py, something along Twisted or rather Tornado? etc. etc. All of this together still doesn't have 10% of the market coverage of PHP. OSS is great but as a downside you always only draw the wrong decisions and the entropy increases.
Crosscutting concerns can be helpful i.e domain expertise. Say one starts to program Nokia smartphones with Qt and becomes an "expert on programming mobile equipment" in particular with Symbian, Qt and C++. Then taking a look at the surroundings with the iPhone and Objective-C and Cocoa as obvious candidates to extend the territory. I'm lacking here a bit myself because I'm rather a "pure programmer" with not much more than algos + data-structures + PLs in my head. Methodologically everything can be reduced to just this but contemplating the absolute ground like an ancient metaphysician doesn't help much when someone seeks a "web programmer" listing 10 commodities besides HTML and JavaScript as "key skills" I've never ever heard about. Same with relational databases and SQL dialects. It's an oddity I have to deal with at the moment.
Knowing something different is a good thing. Good teams have people with different skills working together on a goal. Learning new languages is only one thing you can learn. You can learn lots of other things.
20 years is forever, what were you doing 20 years ago? Are you saying this because you like C++, or because you think you will retire soon so learning stuff is not worthwhile?
> It is some kind of synchronicity that at the time I write this, one of the hotter threads on Artima is responding to Bruce Eckel's Language Archaeology posting about C++ design decisions.
Please don't consider artima.com the definitive guide on language popularity. C++ is a hot topic everywhere because it's a "controversial" programming language: it attempts to bridge the low-level with the high-level. It's the only language in that domain.
A good programmer should know a plethora of programming languages, because programming languages are tools, each one being useful for different work.
> It is some kind of synchronicity that at the time I write this, one of the hotter threads on Artima is responding to Bruce Eckel's Language Archaeology posting about C++ design decisions.
Please don't consider artima.com the definitive guide on language popularity. C++ is a hot topic everywhere because it's a "controversial" programming language: it attempts to bridge the low-level with the high-level. It's the only language in that domain.
A good programmer should know a plethora of programming languages, because programming languages are tools, each one being useful for different work.
At least if you can keep a good position in the technical fields, it may already be a victory, whatever the language concern.
I don't know of "old" programmers. At least in France, a study shows that it is easier for programmers to find a job outside IT than to evolve in IT. Bruno
LOL. This article subscribes to an outdated vision which was ultra-hip at the times of the "New Economy". As we remember this economy was new because a twenty-something entrepreneur with a bit knowledge of the new and super cool language Java could become super-rich although his company made no sales but got hyped in the stock-market fantasy role game circles.
With the exception of Rails we haven't seen a youth movement in programming in this decade. It's rather the other way round: young programmers have to be scared because everyone who wants to enter the market is required to have tons of experiences in technologies which are considered outdated and no one talks about anymore. MFC, ActiveX, ASP, VB 6, COM ... will haunt us for decades and who wants to learn old technologies which are a pain and make your working life miserable? Someone has to write hauntological reflections about programming.
BTW in Germany the average age is about 43 [1]. With 40 you are still young ( and people behave like that ).
I know a lot of people who know basically only COBOL and RPG and have made a very long career with no end in sight.
As long as you can get work doing C++ (I really don't know how easy that is) the question then is whether you really want to stick to C++.
> My internal debate reminds me of my rich, > penny-pinching brother-in-law's dilemma he semi-gloated > about at a dinner last year - as a wine connoisseur, he > now owns more wine than he can drink through in his > expected lifespan. Does that mean he should stop buying > wine, which is much of the joy of collecting?
Just my two cents, but you could suggest he give some of the wine as gifts especially to clever too-much-wine problem solving brothers-in-law. Also, he could sell some of it in order to buy even more expensive wine to drink.
I also think I will stick to C++ as the primary language for the rest of my career - many ISVs use it and it is not going anywhere any time soon, IMHO.
However, there are situations where using multiple languages in a same project makes sense. For instance, I use Perl for ad hoc scripts, and of course JavaScript is almost a must if you do any kind of web development. Therefore, it is likely that learning another language may be in your path even if you continue using C++.
And of course, I agree that learning a new language for the sake of curiosity only makes you a better programmer even if you never use it on the job.
> I know a lot of people who know basically only COBOL and > RPG and have made a very long career with no end in > sight.
Which devolves to the underlying question: does one write code to pay for his/her toys, or does one write code because it causes a brain erection? If the former, language matters not whit. If the latter, stick with C++ so long as getting through the doorway is difficult, otherwise find one that does.
I'm about as much of a n00b as you can get with programming, but I have an observation. For a time I worked for AT&T in enterprise and data support. Two of my co-workers were former programmers in their mid-50s. Both had been laid off by different companies in the dot com bust. Neither found work again in their fields. Their programming language? Cobol. They aren't gray-bearded consultant gurus dispensing valuable info about a legacy programming language. They are under-employed men wishing they could get better work.
> What will you learn instead of other languages? How to get chores done around the house, spend time with my wife and maybe study the occasional framework or programming technique (like really mastering OpenGL)? Just spending time implementing things instead of studying would be nice (I'm suffering a bit of .Net study overload!).
Maybe I've slowed down or maybe my idea of *learning* a language is more in-depth than most people. Studying a language to learn its concepts is one thing. I don't think I can be fluent to the point where I automatically program idiomatically to the full strength of the language, for more than two or three languages.
> 20 years is forever, what were you doing 20 years ago? Apart from being a VAX sysadmin, programming in FORTRAN and C, teaching myself Object Pascal on my second Macintosh and listening to a co-worker talk excitedly about this new object-oriented language that was based on C :-)
Flat View: This topic has 28 replies
on 2 pages
[
12
|
»
]