Ask HN: After 20 years of programming, what do I do now?
I've held management positions, and while my projects were successful, I'm not interested there. The monotonous consulting-services work I've been doing for the last 5+ years hasn't lent itself to exploring new technologies, so I don't have the breadth for an architect job. I've tried the solo-business route, and while my app is loved and has sold copies, it's only breaking even and won't sustain me now.
Almost all of the jobs I am interested in (remote or product-based) want newer technology. SQL Server's been a big part of my entire career, but it feels like that is losing relevance with the ORMs/EFs of the world. I've only worked with MVC on personal projects, but even if I brushed up on it, I'm guessing managers would feel I am an expensive hire without any advantage a junior dev who worked with MVC their whole career.
Do I try to build a MVC portfolio, since that seems to be the popular MS technology? Or work on a JS portfolio (my web style today is already JS calling JSON services) and try to rebuild myself on the front end?
Do I take a big pay cut and try to rebuild my skills with a company open to a senior dev without the exact experience?
Do I try to gamble and find myself a newer technology to reinvent myself into, hoping it sticks around?
Or am I just at the natural point in my career where I'm supposed to be working for another services company?
Anyone refactor themselves into something new at a similar point in their career? I'd love to hear your advice. RefactorCareer@gmail.com in case you have any private advice.
84 comments
[ 2.8 ms ] story [ 92.1 ms ] threadI would suggest finding a job where you can leverage your experience in .NET Web Forms, while picking up the pedigree for MVC.
Here is a company I have worked in. They have legacy systems that are pretty heavily Web Forms and there is a lot of SQL work too. They are making the transition to MVC and ORMs in a lot of the legacy stuff.
http://careers.stackoverflow.com/jobs/75235/principal-softwa...
Hope it goes well for you.
I'm honest with myself about what I know and don't know, and I'm willing to work on side projects on my own to learn more if I felt hiring managers would count it for something. I'm just at the crossroads of what I should try to focus on next.
1. I would look at your CV and see your narrow focus but I would still be wondering based on your experiences whether you could move to the technology we use.
2. Good/great developers seem to be in short supply, if you can prove your ability to understand code, build robust things and ship you would be just fine in my interview.
3. I think you would find a lot of very similar technology in the Java field and it wouldn't be a huge hurdle for you to pick that up if you have a good and deep understanding of how you currently deliver apps using ASP. If you could show on your portfolio how you have picked up Java/Ruby/Python/whatever based on your 20 years of experience and show you understand "how things work" rather than the nitty gritty of a the language then you would beat a lot of the people we interview.
In short, if you came to an interview for a Java job I would be more interested in how easy you would be able to learn what we do with Spring etc and how much and how deeply you understood the stack you were working with rather than worrying too much about you not have "5 years of Spring MVC" or whatever other blurbs HR stuck on the job description. I've interviewed a lot of people who have no clue whatsoever how MVC works and have no notion about how things fit together to make a system, they just fill in the gaps in the Spring/Hibernate/library config and write a few lines of code and "it just works". If you have the deep knowledge I think you can easily take a senior/architect role in Java-land.
Focus on the general concepts you've applied to your jobs and the broad strokes of what you bring.
The HR barrier is admittedly present in a lot of places… the best advice there, probably, is to try to network a little to get in through the side door.
I wonder how much good talent is never even looked at because of this.
SQL Server is in high demand and most programmers have little interest in the DBA role, yet it is crucial (read "highly-valued") in most organizations.
Organizations want young programmers/developers. But when they think of DBAs they want someone with experience. So grow a beard!8-))
I'm finding in my contracting work that my database skills are above-average and usually one of the big things that I'm relied upon for and I think this is worth pursuing.
Then again, maybe DBAs aren't as bogged down by the minutiae in some places and have more of an ability to troubshoot and resolve DB code/structure problems. It always seems like that's their job but they never have enough time to properly do it with the myriad of other requests.
Looked like a sweet deal.
On the other hand there is a lot of pressure as the DBA. Backups, redundancy, security, etc... all fall onto the DBA to get done and done right. Fat finger a script and blow away a key table sucks (a DBA isn't a DBA until they have done this once), but it drives the point home that backups, backups, backups are key.
EDIT
The other part is the blame for lots of woes will end up on the DBAs desk. I'm a fix it and move on kind of person, but if you take things like that personally a DBA position might not be for you.
I solved that problem by bootstrapping a startup with consulting/development for other startups that are viable but weak technically, this gives me a lot of variety in side work while also funding my main startup.
In addition I'm currently in the process of setting up another 'startup' as a non-profit (which I'm funding out of pocket until I have a complete product at which point I'll create a charity, assign all IP to it and open the source, I wanted to pay it forward), that one is going to be a complete health management system for patients with chronic or long term medical issues (this one came about as a result of my having chronic issues essentially I'm building the thing I looked for when I got ill and didn't exist) - which complies with all the standards and legislation applicable to local and national government systems, effectively I'm building the system that should already exist for end users.
I do not know the style you were using, but doing things differently, showcasing things you are able to do and just going the extra mile to show you really want that job oftentimes helps. At least here in Germany.
OK; the wording is somewhat cordial, but that is just to showcase my personality. I strongly believe, that being rejected for this just is a great selector for places, I would not want to work.
[1]: http://cv.schriftrolle.de/.old/tuicruises/ This is about 1,25 years old and I did get the job (but am not working there anymore, having found quite a better place to be).
That might be a good way to go.
So, what does 'worth it' mean to you? I see money and flexibility as the plusses of your current job... maybe that's all you need from the job. Could you keep this one and do something additional to get at whatever 'worth it' means to you?
Finding, or starting, a relevant project, using technology you want to emphasize, seems to me like a step you could take independent of what you do about the job. As for the job, I think what they say about 'Change your organization, or change your organization' is true.
Of course, in similar shoes, I did something radical. I wasn't fulfilled in my monied, flexible job, so I'm taking a leap at what I really want to do: teach in college. It started when I came home from work one day, with a plan for how I could help local high schools with their AP classes and computer clubs, and my wife asked whether that would really do the trick of making me happy. I said 'No' and, 4 years later,I'm now ABD on a PhD, and could tell long stories of the highs and lows. It looks like it'll work out, but there's still a really strong case for having kept the boring job and looking for fulfillment elsewhere. Look up Eric Hoffer, who was a longshoreman by day, and philosopher and author by night.
here's the kicker: only learn so much that you know a little more than the other guys in the companies doing web forms, and then
market yourself as the guy
who knows the legacy code base, knows the organizational in and outs, knows the systems, and who's going to help transition them to MVC ( and newer tech )
so you're a guy ( or gal ) with little experience in MVC teaching folks with no experience in MVC, how to transition to MVC.
this is a niche, and you'd be perfect for it. it'll be stimulating as there is the conceptual challenge of bridging the two realms, the satisfaction of using your extensive experience, and the excitement of growing yourself into something new.
i'm excited for you. not many people will be able to be at the right place and the right time to do this. and it sounds like, with a bit of results, this could spin into your own consulting or dev shop serving this technical debt.
this path works and the future is bright for people like you.
Take a week or two to build a handful of sites in ASP.Net MVC with Entity Framework, so you're familiar with the basics. At that point you'd be marketable for a lot of current senior .Net positions. Experience with .Net is more relevant to most companies than MVC-specific experience. Add in your SQL Server skills for when Entity Framework doesn't cover exactly what you need and you can almost write your own ticket.
Introduce yourself and what you have to offer. Show that you understand their business and some of the technical problems they may experience.
Ask for referrals after contracts complete.
Open source contributions and presenting at industry conferences go a long way to establishing an air of expertise; carry yourself like an expert and you almost always will get a second look from a potential client.
Ruby on Rails opportunity for java and .net developers; note:I am not affiliated with covermymeds, heard about it on the Ruby Rogues podcast.
I don't work there myself, though we have a fairly similar culture at my work, just no free lunches everyday.
Chances are, you will be successful and unhappy at the next job.
If total beginners to programming can achieve this, you can learn any new technology in a breeze. You just won't have the certification which no one else in the field has anyway!
I'm curious to know more about what you mean by this...
If so, maybe you could make an argument to adopt new technologies there while keeping your large pay check. If you make a business focused case for adopting new tech, you might find success.
Problem to Solve:
So, how does adopting new tech save money and/or make money?
Crude Proposed Solution:
Talented developers care about their tools, so if you are using dated techniques / technologies you are alienating potential new hires which could add significant value to the company.
The younger programmers coming out of school do not want to program in COBOL. They want to invest in technologies which will increase their marketability as a developer.
So by adopting newer technologies / techniques you reduce your risk of becoming a slave to a dwindling developer community. A community which has stopped growing and is bleeding devs, starting with the most talented. You also open up your company up to new opportunities where they can higher younger talented devs for cheap. You can mitigate problems caused by inexperience by giving them specialist roles which will decrease the amount ramp up time required for them to start adding value to the company.
Apologies:
This is a very knee jerk response. I do not feel as though I have proposed an actionable plan that is well thought out. I hope I have proposed an idea that is worth exploring.
Persuade your existing company to adopt new tech in terms of saving/making money and by reducing future risk (a potentially mortal risk) of problems caused by tech rot.
A decent argument can be that plain old technology upgrades at some point are going to be gigantic herculean efforts if the same old language/framework is used for a long period of time.
And you are more susceptible to security issues and/or ridiculous "extended support" contracts the longer a tech is kept around - to the point where it is difficult to patch, etc.
Next: Web programming is something junior devs can do. (Maybe not as well, but they can do it, and for less money.) You need to move on to harder things, where your experience is worth more money.
What harder things? You mentioned SQL Server. You say it's "losing relevance with the ORMs/EFs of the world", but there's more to the world than that, and I strongly doubt SQL Server is going away. Find places where it is in use, and go there.
Alternately, you can try to move up to architect of someplace with a big web presence, but I'm less clear on how you make that shift.
I'm a senior dev, but still relatively early in my career (~8 years). I've been thinking about your exact situation a lot lately as I have interviewed several candidates from various backgrounds. I see a lot of people with lots of experience, but they didn't make the cut after taking our coding tests and technical interviews that younger less experienced devs breezed through. I wonder if I will be in the same boat in 5-10 years myself because I haven't kept up with the newest technology. Like you, I have no desire to become a manager and I'm quite happy being an individual contributor.
Also being a relatively new Dad (toddler and a newborn on the way) only makes it that much harder to keep up!
I ran the software dept for a small consulting company and yes you'd probably never get a call back from me if you were applying purely as a developer. While we have hired late 30-somethings developers, it's usually because they offer some fairly unique tech skillset (i.e., a few years of production-quality FPGA experience, not a couple months dorking around with "whatever hot new technology" on github--that's something I look for in a fresh-grad). So I think for a purely tech role, beyond getting another job at a similar company doing similar tech, you're a long shot at best.
But beyond that, the one thing that would case me to look at your resume is if you were wanting a leadership position and had the corresponding soft skills and experience. It sounds like you do, so highlight that, and work on it. The advantage there is that management skills: talking to stakeholders, setting expectations and timeframes, finalizing deliverables...are all applicable no matter what the underlying technology. So there's no reason you'd have to limit yourself to ASP management roles.
My previous company had lots of young developers doing engineering with lots of new technologies, but they'd have never delivered a thing had they not been guided by some experienced devs who actually spent most of their time in Excel (or trello or Jira or whatever we happened to be using to manage the particular project).
If he has been doing WebForms instead of MVC, he's probably not up on all of the basic table stakes client side stuff like BootStrap and JQuery.
I know at 41 years old, if I want to stay in development and not go into management and command the salary I want, I can't be complacent. The minute that my company stagnates, I must find another job. That means for me, being a full stack .Net developer:
1. Web - Angular, JQuery, CSS, TypeScript, and Bootstrap 2. Server side web - Asp.Net MVC, WebApi, WCF 3. Knowing how to speak the language of an architect (DDD, Design Patterns,everything that Martin Fowler writes) 4. Database theory and maintenance and EF. 5. Testing - front end and back end automation testing.
I'm not bragging, I know lots of developers who can tick off these checkboxes. If you're not willing to aggressive learn, this isn't the field for you.
It's a crap-shoot on which technology is going to take off. Microsoft was pushing heavily that MVC was just another way to do things during the events I went to. I tried to push the boundaries of what my company let me work in, and that just happened to not be where the market went.
In hindsight, keeping my eye open on the job market is something I should have done more.
Seriously it's way easier than webforms so if you've got that much webforms experience, you'll have absolutely no problem picking it up. Within a week you'll know 95% of what you'd need to know on most tech interviews and you'll do fine at your new job. Stuff varies so much company-to-company that MVC will not even be one of the top five differences.
In my previous response I was thinking more you were looking for some big change into something very cutting-edge. That would be a more difficult proposition. But if you're just looking to go from webforms to MVC, or even to a Java-based infrastructure, it's not a big hurdle. Like others have said, the HR filter will be the biggest problem. There will be an age bias too, you'll just have to deal with that.
FWIW I don't think you should expect a paycut or a cut in "rank" either just because of changing technologies. You'll get caught up on the technical side very quickly. Outside of extremely technical companies, "rank" is far more about knowing how to get through a release cycle coordinate teams than it is about specific technical knowledge.
All that said, just be warned, working on websites in MVC (or really any technology) is really no more interesting than Webforms. (In fact webforms may be more interesting because you get to invent your own way around its inadequacies).
With 20 years of experience you potentially bring far more to the table than "just" your dev skills. The great thing about being a developer is that you touch a lot of other domains...often at a fairly detailed level of understanding (I learned more than I ever wanted to know about the credit card industry by developing commercial credit card processing software for gasoline dispensers many years ago).
Of course, this is how many devs end up becoming managers...though you say that's not where you want to go. But there are other paths as well. For example, a Product Manager with strong development skills can have a significant edge over someone that's come up strictly through marketing.
People who can straddle the boundaries between domains of knowledge have unique value. At this point in your career, you likely possess knowledge and skill beyond just ASP.net development...skills that startups or companies would find valuable.
I originally came out of physics around the time of the collapse of the SSC project. I saw colleagues with freshly minted PhD's in theoretical physics (NOT a marketable degree...except for driving a cab) go off to Wall Street and become quants...and do quite well.
So the core question is: are you locked into thinking of yourself as just one thing ("developer"), in which case the search is for what kind of developer you want to be next...or can you think of yourself as someone whose years of experience bring unique and valuable expertise...in which case the search should be broader and more unconventional.
It's less about what the external trends are; more about how you can reset your internal self-image...and your willingness to make the investment to bring that into reality.
Of course that means adopting entirely new strategies for finding where your skills have value...those types of jobs aren't posted on HR job boards.
Personally, I've made some huge career and domain jumps over the years (physics, software, large-scale databases, robotics, biotech...and various startups). It can be challenging...and a little scary (but only in the roller-coaster/skydiving sense), but It's also made for an exciting life that's largely been quite financially rewarding.
Never be afraid to jump out of the box...
But you mention "adopting entirely new strategies for finding where your skills have value...those types of jobs aren't posted on HR job boards.", which would bypass the HR filter that I would worry about. Do you have any examples of these types of strategies? Is it more of networking? Cold calling into industries you've worked in? Anything that works for people who aren't natural sellers?
Here's the dirty secret: A hiring manager ALWAYS has more political power than ANYONE in HR. But in larger organizations hiring managers are also very risk averse (and political cowards) and therefore will always defer to HR. This is why HR is so out of control in most companies!
So either avoid large organizations and focus on startup, growth phase and SMB companies...or find a way to directly reach the ear of the hiring managers in a manner that reduces their level of perceived risk in choosing you.
Here are strategies I've used:
1. First understand how businesses and hiring managers perceive value (it's NOT as obvious as you might think!)
Then:
2. Write - blogs, articles, comments in places like LinkedIn groups where hiring managers might be loitering
3. Talk - conference talks, training, do a podcast, do webinars...but always with an eye towards message and audience (junior programmers will NOT be hiring you)
4. Network - take any opportunity to be visible and demonstrate expertise and knowledge. And tell everyone you know what it is you're looking for.
It not unlike marketing a product. Find where the audience hangs out, figure out what they value, and then communicate that value and be visible.
This isn't a "next week" solution, but could certainly be a 90-120 day solution!
As an example of one possible direction, I've seen some awesome product managers that came out of development. Did they have the Marketing degree or the 20 years of experience...NO!
But brought a unique understanding of how products were built and how to communicate the needs of the business back to the development team in a way that NO non-technical person would ever be capable of doing.
So don't compare yourself apples-to-apples with those already in the job (whatever role you're shooting for). In a certain sense, you have to BE what you want to become, even before you get there.
The truth is, there's nothing easier than doing tomorrow whatever it was that you did today and yesterday. Change is hard, and the hardest part of change is mastering the interior game. Knowing what you want and becoming that person.
Hope this helps
- You are going to present yourself an authority after certain period of time.
- Learning new technology and be accountable to outer world.
This is what I have been doing on my blog(http://blog.adnansiddiqi.me/)
If you want, you may make guest posts related to things you are learning.