Thread: career prospects question, if i may

  1. #1
    Registered User
    Join Date
    Jan 2011
    Posts
    8

    career prospects question, if i may

    I'd love to get some wisdom from industry veterans on potential career directions down the line.

    Having written static website content for years, and fiddling with Perl-based modem scripts as a teenager, I decided I far preferred development/programming to IT support, which I had done for a while. So I sought out, like many, to learn dynamic languages, first starting with Microsoft ASP, then eventually moving to PHP on linux/web which I have now been using for a while on/off professionally, and will be programming day to day for a while to come.

    Having the passion/aptitude for development and the desire, my 3-5 year goal is to become proficient in at least one more relatively ubiquitious language, namely C++, to move towards system/desktop programming. I hesitate towards C, simply because I most likely will not be writing OSes for a living. While being a fast, compiled, expressive, versatile, and close-to-the-metal "platform" - all things that are attractive to me - it seems that C/C++/compiled is giving way in the marketplace to all the web-based, proprietary, partially-compiled, or downright interpreted languages like C#/Java/Py/Perl/Ruby, etc ... I know why this is the case in general - probably having to do more with economic pragmatism and the immediate bottom line, than elegance - I suppose you could call me a purist of sorts. I also understand everything people say about "you shouldn't learn a staticly-type low-level language after learning a dynamic/interpreted language because it leads to bad coding habits", etc, etc. I don't believe that for myself, because I love what I do and have an understanding for the underlying logic. I say, jump into some open-source projects and go for it!! right??

    I know nobody can necessarily predict the future. I hope to get some reassurance and your thoughts from a wiser point of view than my own.

    Will compiled C++ development be around 5-10 years from now? Many say ... there is a really small market for desktop programming, and it's not a smart career path, etc, etc, etc. I don't buy it - I think the web ("cloud") development/computing paradigm is just a cycle - as more people are also seeing the advantages to hosting your own data and applications in a business environment. Apart from doing open-source projects, operating systems, or low-level programming, is C/C++ a smart career path down the line for a purist such as myself?

    To put it simply, with passion and drive, can I reasonably expect to make a jump to a career in the C/C++ family world of development in 2-3 years?

    Am I asking the right questions?

    Does my question make sense?

  2. #2
    Gawking at stupidity
    Join Date
    Jul 2004
    Location
    Oregon, USA
    Posts
    3,218
    I'd think that compiled code (C/C++) will have a place for the foreseeable future. At least the next 5-10 years. Interpreted code is nice for quickly whipping up something that doesn't require a lot of speed, but when speed is a necessity, the lower level the language the better.
    If you understand what you're doing, you're not learning anything.

  3. #3
    Registered User \007's Avatar
    Join Date
    Dec 2010
    Posts
    179
    A majority of the last 30 years has been C/C++. That means these languages have huge bases and need to be maintained. They will be alive forever.

    A majority of embedded systems and low level parts of OSes are still done in C/C++.

    So unless you plan on getting into web development, distributed systems or something like that where other languages shine-- then C/C++ is a safe bet.

    http://www.tiobe.com/content/paperinfo/tpci/index.html

  4. #4
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    Fair enough.

    Since I am focused on PHP/Web right now, I suppose the more accurate question is ... with a high level of interest, can I reasonably expect to make the jump from developing primarily for the WEB to developing NATIVE software in the future?? ie. desktop software, mobile software, android, etc.

    I suppose the frustrating thing would be to go through life, without ever having developed or at least contributed to a true desktop application, such as free software I use everyday, like Thunderbird for email, Firefox, chat software, media players - tools which will always be faster than web-based equivalents. Maybe it's early mid-life crisis....haha!

  5. #5
    Registered User \007's Avatar
    Join Date
    Dec 2010
    Posts
    179
    You could start today if you wanted to. Just do it~ there are a lot of free software projects out there.

  6. #6
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    Good point. Someone told me this in an interview once, "why don't you just go do that?" ... well, the answer is, I'm not skilled enough at it yet - and still need to use existing skills to make cash.

    Safer to make a living doing what I'm already a pro at (WEB), and building up to those things with side projects, then making the career break down the line when I'm confident - seems wise ...

  7. #7
    Registered User \007's Avatar
    Join Date
    Dec 2010
    Posts
    179
    You should be doing software development as a hobby until you are good enough to make a career of it. You will never be good enough without practicing it and contributing to the community in some way-- that counts as experience. There's no way to study web development and suddenly switch over to software engineering with no experience or skills in it.

    Need to start building them up now~

  8. #8
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    Well said! I already have some understanding, from studying, and having had assisted on an Objective-C project. Now to get my tail in gear and chase that goal!

    ... interesting that you have made that differentiation between "web" development and true "software", since one often runs on top of the other.

  9. #9
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    I say, jump into some open-source projects and go for it!! right??
    I say go for it... yes... by all means.

    But please don't be thinking that all of your code has to somehow be used by other people... I've been doing this as a hobby and sometimes part time money maker for a few years now and something in excess of 90% of the software I've written so far sits quietly on a couple of thumb drives waiting for me to review it for a good laugh someday. (Some of my early C code is probably fit for the "comedy hall of fame")

    Writing native code is a different mindset than writing web code. Web code is on display, by it's very nature... native code is not. It's also a lot more complex, dealing with all the intricacies of the machine. I think you'll find the best bang for your buck lies in a slightly different attitude... Think of it like learning a musical instrument... You don't start by joining the Philharmonic... you work up to that, practicing in private.

    With respect to Open Source projects... One of the biggest problems with Open Source is that it tends to attract the worst and most inexperienced programmers. Ever notice how perfectly good projects just suddenly go "out of development"? Generally this is because the quality of code has deteriorated to the point where the project becomes unsustainable or because interpersonal politics broke up the team... It is seldom because they've taken their project to it's ultimate goal and moved on.

    If you want to be GOOD at this stuff, start as a hobbiest --as already suggested-- and work on your own, out of personal interest. Do the dumb little Checkbook Balancer and Phone List programs first. Move up to increasingly difficult projects as you go... but don't try to start at the top. Your experience will be far more rewarding if you do and those of us who use Open Source software will thank you...

  10. #10
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    Quote Originally Posted by CommonTater View Post
    I say go for it... yes... by all means.
    Thanks for the positive bit of encouragement!


    Quote Originally Posted by CommonTater View Post
    But please don't be thinking that all of your code has to somehow be used by other people... I've been doing this as a hobby and sometimes part time money maker for a few years now and something in excess of 90% of the software I've written so far sits quietly on a couple of thumb drives waiting for me to review it for a good laugh someday. (Some of my early C code is probably fit for the "comedy hall of fame")
    Right, I would be happy coming up with some desktop/server tools/applications that are useful to me and my immediate associates.

    Quote Originally Posted by CommonTater View Post
    Writing native code is a different mindset than writing web code. Web code is on display, by it's very nature... native code is not. It's also a lot more complex, dealing with all the intricacies of the machine. I think you'll find the best bang for your buck lies in a slightly different attitude... Think of it like learning a musical instrument... You don't start by joining the Philharmonic... you work up to that, practicing in private.
    Indeed ... yes. I understand the necessity to think about data typing, memory allocation, hardware specifics, etc in doing native development - all of which I feel confident won't be terribly hard to pick up. Incidentally, I am a part-time pro jazz musician, so I understand exactly what you mean! Of course, sometimes I have found it valuable to just JUMP right in with the sharks and learn to swim, so to speak ;-) But, each industry has it's tolerance for this, of course.[/QUOTE]

    Quote Originally Posted by CommonTater View Post
    With respect to Open Source projects... One of the biggest problems with Open Source is that it tends to attract the worst and most inexperienced programmers. Ever notice how perfectly good projects just suddenly go "out of development"? Generally this is because the quality of code has deteriorated to the point where the project becomes unsustainable or because interpersonal politics broke up the team... It is seldom because they've taken their project to it's ultimate goal and moved on.
    Heard loud and clear :-) For what it's worth, most of my colleagues in the business have said that my PHP is quite sound - however, I realize the challenge in the native dev realm for creating sound, much less elegant designs.

    All this being said, what do you think about my prediction that largely interpreted language platforms being used for the "cloud" or web development are just a fad/phase, and will eventually max out their capability or benefit, and the pendulum will swing back in favor of the traditional client/server compiled-native application model, as people and businesses realize the security value of maintaining their own data and applications, as well as all the customization and speed that the desktop allows?

    Career-wise, I would think it smart to learn and be able to execute both paradigms (interpreted/web and compiled/native) in the long haul, as technologies phase in and out over time anyway.

    Thanks for the tips. I'm off to learn C on the side.
    Last edited by codeAddict; 01-11-2011 at 01:15 AM.

  11. #11
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by codeAddict View Post
    Right, I would be happy coming up with some desktop/server tools/applications that are useful to me and my immediate associates.
    Down the road yes, that would be a fine goal. But don't expect your first program to be anything bigger than "hello world" (The traditional first program of every C programmer).

    There is a reason for this... One doesn't learn from the top down. We don't start out seeing the intricacies of memory allocation and socket management... we start out learning how "if" statements work... Then we learn about "while" and "for"... it's very incremental, adding new skills with each step. Believe me comparing dynamic HTML in PHP, to writing a server in C is something like the comparison between peeling an orange and building the space shuttle.

    Perhaps the best skill anybody can have is a simple "mode switch"... Be a teacher when that's appropriate but never hesitate to switch to student when it isn't.

    Indeed ... yes. I understand the necessity to think about data typing, memory allocation, hardware specifics, etc in doing native development - all of which I feel confident won't be terribly hard to pick up. Incidentally, I am a part-time pro jazz musician, so I understand exactly what you mean! Of course, sometimes I have found it valuable to just JUMP right in with the sharks and learn to swim, so to speak ;-) But, each industry has it's tolerance for this, of course.
    Of course there comes a time when you swim with the sharks... but don't be in a big hurry, let the new experience humble you first (and it will).

    A little story of my own might help here... If you look in the C++ section you will see a couple of recent threads in which I am struggling --and a lot of very nice people are trying to help-- to understand the "objects" concept. Now I've been a Pascal and C programmer since the mid-80s, starting off in Pascal (which I truly loved using) and switching to C only after Borland ruined Pascal. Moving from Pascal to C was relatively easy because they're similar in many ways... but I was still humbled repeatedly by pointers and the lack of strings. Now, trying to extend myself in to C++ I am once again humbled, this time into total submission... There's just nothing there to hold onto so I'm learning from scratch again. The Pascal "teacher" has become a C user and a C++ student... no pride involved, it's what the situation demands.

    As a general comment, I usually find that newbies in any endeavour come in all full of bravado thinking there's only a little bit to learn and generally end up making a mess of things. My friends refer to it as "Just enough knowledge to be dangerous"... It's not a good place to go, especially when that humbling "I just don't get it" moment comes along. So I just admit right up front that I don't get it... switch to "student mode" and try to learn.

    Heard loud and clear :-) For what it's worth, most of my colleagues in the business have said that my PHP is quite sound - however, I realize the challenge in the native dev realm for creating sound, much less elegant designs.
    That's a pretty good start.

    PHP to C is not a huge transition in broader strokes... but it IS a different experience and needs to be appreciated as such.

    All this being said, what do you think about my prediction that largely interpreted language platforms being used for the "cloud" or web development are just a fad/phase, and will eventually max out their capability or benefit, and the pendulum will swing back in favor of the traditional client/server compiled-native application model, as people and businesses realize the security value of maintaining their own data and applications, as well as all the customization and speed that the desktop allows?
    I figure the cloud is doomed. It's only a question of time before some major server gets cracked and tons of private corporate information --all those embarassing memos-- spills out into the public realm and the "back turning" begins.

    Moreover; there is a reason for the big move from interpreted languages such as BASIC to compiled languages like Pascal back in the 1980s... Speed and Reliability are crucial factors in any stand alone program. Interpeters, no matter how optimized, will always be left in the dust by compiled code. Java and PHP, no matter how elegent both seriously degrade the overall performance of any complex system.

    Career-wise, I would think it smart to learn and be able to execute both paradigms (interpreted/web and compiled/native) in the long haul, as technologies phase in and out over time anyway.
    Absolutely. Talk to any successful web development company and you'll find they salivate rather openly when someone says "Yes, I know C++".

    Thanks for the tips. I'm off to learn C on the side.
    My pleasure... If you run into problems --and you will -- I think you'll find the gang here is very helpful and pleasant to deal with.
    Last edited by CommonTater; 01-11-2011 at 03:07 AM.

  12. #12
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    Understood - and I do fully understand the difference between the paradigms that I'll be making over time. Personally, it's not too much of a stretch for me, having already done some programming in Objective-C. Granted I'm far beyond "hello world" in C, but it will still take time of course, and I understand what you mean about taking the "student" role for a while. Because the underlying mathematical principles are still largely the same, and my engineering personality latches quickly on to these concepts, I feel inclined to not limit myself to mear "scripting" for the rest of my days.

    Well said regarding "cloud/web" technologies - suited to certain applications in the marketplace, but not suitable for many others. Also, I still prefer my standard desktop applications written in compiled native code, because they are just so much faster - granted, most of these are open-source freeware, and the people writing this code aren't making anything on the projects. To be honest, the idea of a web browser, virtual machine, interpreter, or other "byte-code compiler" layer between the machine and software (JVM,.Net,etc) just goes again my purist proclivities - but I realize these are big in the corporate world because they save time on development and don't require *quite as much* skill to develop on as close-to-the-metal languages.

    So, I shall choose to be content crunching numbers and aggregating data in my PHP job, and seek to move into more interesting pastures over time.

  13. #13
    Registered User
    Join Date
    Jan 2011
    Posts
    8
    I don't intend to sound cocky btw - just striving to be reasonably confident :-)

  14. #14
    Crazy Fool Perspective's Avatar
    Join Date
    Jan 2003
    Location
    Canada
    Posts
    2,640
    I don't know why you would discount cloud technologies as an argument in favour of C++. Engineering cloud architectures is a distributed systems/databases problem with efficiency as a high priority. There are plenty of opportunities for C++ in the cloud, though likely more on the server side.

  15. #15
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by codeAddict View Post
    I don't intend to sound cocky btw - just striving to be reasonably confident :-)
    Never thought "cocky"... did wonder about the "confident" part ...

    I think you'll do fine at whatever you decide to tackle.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Question bout my work
    By SirTalksAlots in forum C Programming
    Replies: 4
    Last Post: 07-18-2010, 03:23 PM
  2. A question about a question
    By hausburn in forum C++ Programming
    Replies: 3
    Last Post: 04-25-2010, 05:24 AM
  3. Alice....
    By Lurker in forum A Brief History of Cprogramming.com
    Replies: 16
    Last Post: 06-20-2005, 02:51 PM
  4. Question...
    By TechWins in forum A Brief History of Cprogramming.com
    Replies: 16
    Last Post: 07-28-2003, 09:47 PM
  5. Question, question!
    By oskilian in forum A Brief History of Cprogramming.com
    Replies: 5
    Last Post: 12-24-2001, 01:47 AM

Tags for this Thread