Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Leaving C++

Options
  • 06-06-2019 1:14pm
    #1
    Registered Users Posts: 6


    Hi there

    I work with a company who sell a legacy Windows desktop application written in C++.
    The role is secure and well-paid (I think) but there is no potential for progression, and I feel like my skillset is stagnating where I am. I do enjoy the job at times, particularly when it comes to implementing new features, but most of the time I'm fixing old bugs, a lot of which are not my own doing. I think it's demoralising in that situation because you're only ever seeing problems and things not working as they should, and I think you end up ultimately having an adversarial relationship with the software you're writing.

    Our development process is very lax, and the principal developer often wants us to take the path of least resistance instead of the optimal architectural solution when writing code.
    It's all quick fixes and short-term solutions. We don't do agile and there is no automated testing because there is so much spaghetti code that attaining adequate code coverage would involve massive refactoring. I feel like this sort of environment deprives developers of experience with best practices and encourages then to pick up bad habits through osmosis. I don't want to work here for another 5 years only to apply for a job and find out my skills are obsolete! I just feel the longer I stay here, the greater the chance I'll be left behind by the jobs market.

    I'd be curious to know how other people deal with this type of situation. I'm not sure if it's just a typical "career crossroads" type thing or if its something peculiar to the company I work in.


Comments

  • Registered Users Posts: 7,157 ✭✭✭srsly78


    Learn python and find a new job.


  • Registered Users Posts: 87 ✭✭phildin


    I think you've identified important short comings in your current role (automated testing in particular) which is good, in short, you know what you don't know. From your description, it sounds like those short comings are not going to be addressed.

    I imagine as a competent C++ programmer, you would find Java or C# very straight forward. The main challenge with Java won't be learning the language itself but the frameworks. The most marketable skill in the Java world right now is probably Spring framework and in particular, Spring Boot for ReST based web services (not so much call for Java on the desktop any more). I suggest finding a good course on Udemy for Spring/Spring Boot.

    If you're going to go down the route of back end/web services development, it's no harm to have a smattering of front end stuff so a few hours spent learning Angular or React would probably be time well spent too. Personally, I don't enjoy frontend development but it's important to understand some of what's going on in that space even if you're not doing it yourself.


  • Registered Users Posts: 6 Bagger288


    Thanks for your replies. It sounds like Python and Java are the way to go. I have a couple of years experience with webapps on AWS built with PHP and Node, a bit with Java, and a tiny bit with Python. I've very little experience with frontend stuff tbh.

    I have an idea for a side project, nothing monetisable but it would be a good way to get going either Spring or Python/Flask. I'm not sure that it would be best way to secure a new career path with them, but there is no hope of using them in my current position.

    It's one of the really weird things about software development - for such a fast-changing industry, the onus on personal development is entirely on the developer but they are left to do it in a really ad-hoc and unstructured way, such as personal projects. It seems a bit crazy given that other professions such as accounting or finance require staff to undergo regular exams and CPD programmes.


  • Registered Users Posts: 7,518 ✭✭✭matrim


    Is it C++ you want away from or just your current role? Why not look at current C++ roles available as there are always companies hiring that use modern C++ and development practices. Head to a meetup and talk to people there to get a feel for what other companies are doing.


  • Registered Users Posts: 2,022 ✭✭✭Colonel Panic


    Developing desktop applications in C++ is a bit of a dead end. Let me guess... MFC and maybe some third party library sitting on top of it to make it look at least half decent? Or if you're lucky, QT?


  • Advertisement
  • Banned (with Prison Access) Posts: 1,093 ✭✭✭Nobelium


    change companies, but you don't necessarily have to give up on C++, especially if you move into embedded / IoT. Every dog and it's turd is already doing java and python.


  • Registered Users Posts: 2,717 ✭✭✭ARGINITE


    Agreed with the other posters about C++, if you want away from C++ then Java is a great language to have under your belt. On the other hand if you want to learn modern C++ and use best practices then there are opportunities out there for that to.


  • Registered Users Posts: 6 Bagger288


    matrim wrote: »
    Is it C++ you want away from or just your current role? Why not look at current C++ roles available as there are always companies hiring that use modern C++ and development practices. Head to a meetup and talk to people there to get a feel for what other companies are doing.

    Good question. I think it's more the role. I've no particular gripe with C++ other than a worry that demand for it will lessen in the coming years.


  • Registered Users Posts: 880 ✭✭✭moycullen14


    Bagger288 wrote: »
    Hi there

    I work with a company who sell a legacy Windows desktop application written in C++.
    The role is secure and well-paid (I think) but there is no potential for progression, and I feel like my skillset is stagnating where I am. I do enjoy the job at times, particularly when it comes to implementing new features, but most of the time I'm fixing old bugs, a lot of which are not my own doing. I think it's demoralising in that situation because you're only ever seeing problems and things not working as they should, and I think you end up ultimately having an adversarial relationship with the software you're writing.

    Our development process is very lax, and the principal developer often wants us to take the path of least resistance instead of the optimal architectural solution when writing code.
    It's all quick fixes and short-term solutions. We don't do agile and there is no automated testing because there is so much spaghetti code that attaining adequate code coverage would involve massive refactoring. I feel like this sort of environment deprives developers of experience with best practices and encourages then to pick up bad habits through osmosis. I don't want to work here for another 5 years only to apply for a job and find out my skills are obsolete! I just feel the longer I stay here, the greater the chance I'll be left behind by the jobs market.

    I'd be curious to know how other people deal with this type of situation. I'm not sure if it's just a typical "career crossroads" type thing or if its something peculiar to the company I work in.

    The situation you find yourself in is very common. Not sure of the figures but the vast majority of non-product based systems probably fall into this category. Legacy systems that require more and more maintenance where there is never enough time or money to do it right but always enough to do it over and over again.

    It's nothing to do with the language: you'll find the same problems with java, c#, etc.

    My suggestion would be to never go near internal systems once the initial development has been done. They just descend into a morass of maintenance and heartache.

    Product based development is, generally, more dynamic. You have to evolve or you die. You won't get away with flogging 20 year old software that only runs on IE but I see that sort of thing every day in internal 'enterprise' systems.

    However, the market for people who can keep legacy systems chugging along will always be there, so if it's job security you're after then maybe it works. You'll probably die of a combination of boredom, frustration and stress thoughhttps://b-static.net/vbulletin/images/smilies/eek.png :eek:

    My advice would be to pick the company and the market sector over the technology. If you want to learn and be 'cutting edge', go for companies that are developing new, innovative software. Essentially align your goals with the company you are working for. The company ain't going to change (nor should it) to suit you


  • Moderators, Society & Culture Moderators Posts: 15,750 Mod ✭✭✭✭smacl


    If you want to learn and be 'cutting edge', go for companies that are developing new, innovative software.

    Agree with all the above though cutting edge is also well described as bleeding edge for good reasons.


  • Advertisement
  • Registered Users Posts: 768 ✭✭✭14ned


    Bagger288 wrote: »
    The role is secure and well-paid (I think)

    A senior C++ dev in Dublin city centre might get 100k right now. If you haven't moved companies recently, you won't see that sort of salary. The only way to get market rates is to change employer.
    but there is no potential for progression, and I feel like my skillset is stagnating where I am. I do enjoy the job at times, particularly when it comes to implementing new features, but most of the time I'm fixing old bugs, a lot of which are not my own doing. I think it's demoralising in that situation because you're only ever seeing problems and things not working as they should, and I think you end up ultimately having an adversarial relationship with the software you're writing.

    In fairness that's going to be the same for any older codebase, in any language. Especially if it's gone into sustaining. Nobody wants to monkey around too much with a product with decreasing future revenue streams, you're basically there to extract as much revenue for as little as possible cost or risk.
    I'd be curious to know how other people deal with this type of situation. I'm not sure if it's just a typical "career crossroads" type thing or if its something peculiar to the company I work in.

    No, it's very common for all legacy software maintenance roles. If you value stability above all else, most people make their peace with it. If you can't stand it, or are worried that the revenue streams may be dipping and you'll need a new role at some point, then now is the time to act.
    I've no particular gripe with C++ other than a worry that demand for it will lessen in the coming years.

    Lots of people here will recommend that you retrain into another language, but if you're in your 40s or later, you'll find employers won't want someone self taught into Python or C#. They'll look at your CV, see C++, and that's you labelled as a C++ dev.

    So I'd recommend that if you're sufficiently senior, stick with C++ (equally, if you're not that senior, don't). But you'll need to seriously improve your C++ skills. Legacy C++ of the kind you do at work won't get you a new role paying 100k, or perhaps even any new role at all. Employers want C++ devs with a deep knowledge and experience of C++ 11, minimum. And ideally C++ devs with experience in C++ 17, especially the new value categories model as it has such a profound effect on codegen. That sort of hard to find skillset is what gets people 100k salaries.

    How to upskill? Well, there's the classics:
    • Start regularly attending the Dublin C++ users group (https://www.meetup.com/cppdug/) and begin networking to land that new role this time next year. This is a very vibrant C++ users group, one of the larger ones anywhere in the world in fact. Surprising given it's Dublin, but all the more an asset to you for that.
    • Start attending the major international C++ conferences e.g. ACCU, CppCon, Meeting C++. Even better if you present talks at them.
    • In your spare time, start contributing meaningfully to a major open source C++ 11 (or better, C++ 17) codebase. Bug fixes, successfully getting large pull requests merged etc.
    • If you want to be extra clever, choose an open source C++ project with an office in Dublin e.g. MongoDB.
    • If you want much more salary than 100k and don't have children i.e. you have tons of non-work time, you may consider getting a library into the Boost C++ libraries. Be aware that this is very hard and will easily suck down 2000 hours or more, but equally, if you succeed, you'll find employers actively bidding against one another to hire you, and pay rates will be heading into the top 2% in the industry.
    • Finally, you may wish to participate in C++ standardisation. The next meeting is in Cologne (July), the following in Belfast (November).

    Ultimately your career future lies in your hands, and in your hands only. I would recommend that you use your current secure role to fund upskilling yourself and making yourself as marketable as possible, build out that network of contacts, and build out a portfolio of your C++ 17 experience, so that in a year from now when you seek to change employer, you'll land yourself a top new role. You'll probably end up doing exactly the same kind of work as now, but it'll be better paid, and on newer tooling, and you'll have added another decade before your skillset becomes stale again.

    Regarding the future viability of C++, there is no doubt that in total numbers it's in long term decline. However, it has moved ever more into specialised niches, and those are booming. If you're top of your game in one of those specialised niches, a 200k or 250k salary is entirely possible despite living in Ireland. There are a fair few world class bleeding edge C++ roles in Ireland right now, self driving cars, robots, finance, machine learning, computer vision. It is a shallow pool of roles here in Ireland, all the more work to break into it, but entirely achievable with a lot of hard work and a bit of good fortune.

    Good luck with your endeavours!

    Niall


  • Registered Users Posts: 9,557 ✭✭✭DublinWriter


    My advice would be to pick the company and the market sector over the technology. If you want to learn and be 'cutting edge', go for companies that are developing new, innovative software. Essentially align your goals with the company you are working for. The company ain't going to change (nor should it) to suit you

    Couldn't agree more. The software sector is just as fickle as the fashion sector.

    It's all about the platform you're developing under, rather than the language.

    In terms of basic syntax, there's not a whole world of difference between C, C++, C# and Java. However there's a world of difference between coding in C++ for the Win32s API and in C# for ASP.Net.


Advertisement