Ask HN: Does this old horse have a few years of useful work left?
So... now I'm back to living on couches and wondering / researching where I might still be able to be useful and productive in the world. It's not an easy question. There are more technology stacks than ever, and I'm suffering very severe paradox of choice. I sure miss the "good old days" when you just focused on writing a single app in C that ran on a well-understood machine, or even a single well-understood OS API. But those days are mostly gone. Now it's all distributed, multi-level conglomerates of varied frameworks and languages sort-of working together. I can't decide whether I have any interest in that. I sort of envy the people who can simply state, "I am a Rails dev" or similar.
I feel a lot of pressure to pick a niche. Something. Anything. Because living on couches gets old, fast, and even more dire financial straits await after that. So I'm being driven by the stick, and not the carrot - which is an unpleasant position.
I found a great game (on Steam) called TIS-100, where you progress by writing small, well-defined programs in assembly language, for a strange, highly constrained imaginary processor. It's great for its pure distillation of machine-level programming. There was a time when people used to get payed for doing what you do in this game. In other words, I fear I'm getting old, and my career options have just begun to seem uncomfortable.
[+] [-] m0nty|10 years ago|reply
Personally, if I have to go back to the circus, I'll probably aim for short contracts or part-time work. If you're looking to reskill, I see plenty of sys admin jobs out there. Except you're supposed to call them "Dev Ops" nowadays. Puppet, VMs, Vagrant, Ansible, cloud computing (Linode, Amazon, etc). It's a relatively small domain which is applicable to many different areas of IT, so you get that "good old days" thing where a little effort goes a long way.
Good luck with whatever you do. Don't let the demons of despair take you, make a deliberate effort to be optimistic and cheerful. You're not the only old horse out there wondering when it all became so complicated. OTOH, it's truly an incredible time to be alive, so much stuff going on!
[+] [-] estefan|10 years ago|reply
[+] [-] oliwarner|10 years ago|reply
[+] [-] hkmurakami|10 years ago|reply
Example of places would include TI, Intel, Atmel, etc., and also hardware makers that use their chips.
[+] [-] georgemcbay|10 years ago|reply
As a somewhat older (42) programmer whose early career was similar to what OP is describing I've been focusing on embedded systems and most recently Android development -- granted, Java isn't C and there are quite a few things I dislike about the language (and moreso the AbstractFactoryOfFactoriesClass culture it tends to have) but it is (practically speaking) MUCH closer to the sort of desktop app development that we used to do than either of back or front end web development (which I also don't really enjoy).
[+] [-] aprdm|10 years ago|reply
I've designed RTL with FPGA, worked with embedded linux, device drivers, bare metal c and etc.
the problem with embedded is that :
1. There are almost no jobs when compared to other kinds of software development. All the embedded jobs have been outsourced for so long and I don't see this trend reversing
2. The pay is really low for what you're expected to do. Really, really low.
I've made this thread before the transition: https://news.ycombinator.com/item?id=8158023
[+] [-] graeham|10 years ago|reply
[+] [-] Firegarden|10 years ago|reply
Your excitement is telling you that's the next thing you need to do. Following your excitement is actually the shortest path to what you want. Act on your joy to the best of your ability. If you look at all your options and realize that taking a walk or driving your car or calling a friend is the most exciting, then THAT is the thing to do. When you can take no more further action on that thing, then look around for the next exciting thing you have the greatest ability to take action on and do it.
Excitement is its own self contained kit and its own driving engine.”
[+] [-] learc83|10 years ago|reply
I haven't had much problem with this. I don't compete on price because I can't bid lower than someone who has a cost of living 10x less than mine.
One thing I've learned is that the higher your rates go, the less the global market matters. Few companies are willing to pay for $100+ an hour out of country contractors.
Even if you're not charging that much, you can always find companies who are just more comfortable with someone in country. Many companies want someone they can reasonably fly in if the need arises, or just someone who is subject to the same legal jurisdiction if things to completely wrong. IP theft is a huge problem in developing countries and legal remedies are very difficult when dealing with international disputes.
[+] [-] bragh|10 years ago|reply
Although the situation is changing for the better in the .NET world, the hardware cost, obfuscated licensing and pricing issues still remain. I had to buy an i5 machine with SSD and 16 GB of RAM to get the same development experience with VS2015 that I had with Netbeans on Linux with 4 GB of RAM. Also, a project in progress went for ASP.NET MVC 5 + Azure SQL on Azure and I'm afraid every day that we might get hit with some unexpected performance or insane pricing issues after the launch. Even the reddit thread on /r/dotnet wasn't very encouraging with regards to that: https://www.reddit.com/r/dotnet/comments/46rgf6/do_you_run_a...
[+] [-] PerfectElement|10 years ago|reply
[+] [-] groneg|10 years ago|reply
[+] [-] rhapsodic|10 years ago|reply
[+] [-] spc476|10 years ago|reply
[1] The department I work in is needed in our company, but it doesn't really fit in with the rest of the company [2], so finding a manager has been ... interesting as the only other person in the company that understands what we do is a vice president of the company who is busy with other work.
[2] The company as a whole develops software for Android phones. My department is there to support our software on the call processing side of things, so we get to deal with SS7.
[+] [-] justin_vanw|10 years ago|reply
I wish you the best, but it is silly for you to act like you 'just can't deal with it' rather than just admitting the real issue and trying to get help.
[+] [-] rhapsodic|10 years ago|reply
[+] [-] danieltillett|10 years ago|reply
[+] [-] Firegarden|10 years ago|reply
[+] [-] fighne|10 years ago|reply
Programming is programming, one language is not much different from the other. There are jobs for low level coder's ( think; drivers, kernel porting, RT ). Web has diverged 'front end' or 'back end' take your pick. Work remotely is another option. The niche makes it easy for the employment people to pigeon hole you. If you have that need do a couple of CV's tailored to that niche.
Don't believe the startup 'shit' that only a committed programmer can work there and you need to give 60+ hrs a week. If you get that spiel, get up walk out. They will use you and throw you away.
I've seen 60+ hr code, it's; crap, bug ridden, security nightmare. In the 'Agile' short term for a startup it's great for the long term...! Strange how Facebook changed their moto about 'breaking it' didn't they when it got serious.
I still come across young 'coders' who aren't programmers telling me that JavaScript isn't an Object language. Strange how the function is a first class Object!
I got asked in an interview recently if I could name a design pattern. I responded with "ow you mean 'Gang of 4', how about observer" the reply was " No not the old band and that's a newspaper" I laughed got up walked out. Then sent an email to the CIO telling him the reason his IT stank was that he had inexperienced people working for him. Strange that company no longer exists :)
Sometimes you got to 'pony up', do the 9-5 so have a nice hobby. Take the crap, but not for too long otherwise you start believing it.
When you find the right role you'll know. They don't always pay the greatest, the atmosphere is good, and you'll want to get up in the morning to do it.
Strike a life balance, your mind is your tool. Burn it out and abuse it then you'll loose it.
So you'll find me, sat at a cafe or bar along the Med. My laptop isn't the most modern (actually it's a 5yr old MacBook Air ). I'll be unpicking some crap code, putting in comments, and applying some old proven techniques. If you can stand the smell of Gauloise Disque Bleu, I'll buy you a beer.
[+] [-] _rpd|10 years ago|reply
[+] [-] gargravarr|10 years ago|reply
Modern computing has become far too generalised for the same sort of development - without all the levels of abstraction you've encountered, it'd be nearly impossible to develop something in a reasonable timeframe. I'm not defending it, but I think if you tried to develop something using such classical methods, you'd end up taking 10x as long creating the finished product. Price of progress I'm afraid.
[+] [-] jkot|10 years ago|reply
[+] [-] fit2rule|10 years ago|reply
No, those days are alive and well in the embedded/IoT world. I suggest you look into doing some embedded work, if you want to return to that style of development ..
[+] [-] typhonic|10 years ago|reply
[+] [-] bonobo3000|10 years ago|reply
Of course it depends on what your definition of end-to-end is, as the rabbit hole can always go deeper.
[+] [-] blfr|10 years ago|reply
As for the game, our very own patio11 and tptacek have developed something a lot like that but with the end goal of getting you a job aside from all the fun: http://starfighters.io/
[+] [-] rms_returns|10 years ago|reply
More of different linux variants actually. Amazon, for instance, provides their own version called "Amazon Linux" which is based on RHEL/CentOS for their aws servers. I've also seen many use Debian for their servers (In fact, Debian/Ubuntu doesn't differ much technically on the server side, but Debian's simplicity and FOSS-friendliness drives many towards it).
[+] [-] fsloth|10 years ago|reply
Except if one is developing desktop software. Windows is pretty dominant at desktop, especially when considering enterprise, CAD and so on.
[+] [-] agentgt|10 years ago|reply
Its pretty hard to give any sort of advice with such little information. I'll just say you really can't fall in love with the technology but rather you should love solving problems... ie be technology agnostic. There are lots of real world problems still left to be solved.
I also have some doubts that you seriously took advantage of working at Microsoft. I can tell you working from home with my own company you really really miss learning from others. The idea making synergy and excitement of being around other smart people even if its only during lunch break is a huge highly underrated benefit long term.... and now you will be sitting on a couch.
I honestly can't figure out if it is your goal to just program simple little programs with assemble or C? Is that what makes you happy? Did Microsoft not challenge you enough? Again serious lack of information.
[+] [-] andywood|10 years ago|reply
As far as my goal - that's what I'm trying to figure out. For practical purposes, it may be mostly about avoiding webdev. However, this most recent job was not webdev, yet it was still an absurdly convoluted architectural hodge-podge. So, one thing I may be looking for is more homogeneity. It's not about size or complexity, per se. I've worked on many large, complex projects and had a good time.
What turns me off about webdev is a) new frameworks being hyped every month, and b) the architecture of a modern web app gives me a headache. I want to return to a time when I used to spend most of my time on data, algorithms, and writing code, with a single API being the worst "necessary evil" in the mix.
[+] [-] vonmoltke|10 years ago|reply
Of course, if you only love certain kinds of problems, that can be effectively the same thing.
[+] [-] raverbashing|10 years ago|reply
Or look into today's C: Go and Rust
[+] [-] mixedCase|10 years ago|reply
[+] [-] broodbucket|10 years ago|reply
[+] [-] aggieben|10 years ago|reply
[+] [-] g1n016399|10 years ago|reply
http://www.fsf.org/resources/jobs/embecosm-compiler-engineer
[+] [-] theparanoid|10 years ago|reply
It's more difficult work.
[+] [-] Joof|10 years ago|reply
[+] [-] joefarish|10 years ago|reply
https://remoteok.io/
https://www.producthunt.com/e/2015-trends-remote-work
[+] [-] FrankyHollywood|10 years ago|reply
How do you think a dentist feels after 30 years of 'could you open your mouth a bit further, tnx, yeah, well let me see, sir do you floss at a daily basis? Especially the back teeth need some more attention...'
Saying you are a 'C' guy makes no sense, sounds like you have forgotten about all the shit you had to take care of in the old days :)
There were tens (or even hundreds?) of C variants with there own compilers, frameworks, platforms, non-compatability, dll-hell.
I have had a great time working in a simple application management team, and a horrible time working in a startup with advanced search technology.
My experience is nice coworkers make or break the day. A boring team is killing, even if the project is great.