Yes I Still Want to Be Doing This at 56 (2012)
thecodist.com
thecodist.com
No wonder there is less and less experienced people on those teams, and the tech landshaft adapts accordingly -- people just don't know anymore how to employ experienced developers. Big old companies are not built that way anymore (am employed by one, multi-national, tried several geos, all the same), and young companies... you know it all, young folks are just smarter.
Sorry to sound pessimistic (I am not really, for many reasons, one of them being, I cannnot afford to retire).
Side projects, yes. Becoming wilder and wilder with every year, rarely reaching the end. Just for staying sane as someone here mentioned.
The truth is though is that wore me down. I ended up earning myself a chronic illness which severely slowed me down from the startup pace. I also have a family and as my kids grew, so did the time demands. I thought that my partners would understand, given I've put my life into everything I worked on, but that never materialized.
In the end, startup after startup, I've found that there's little room for sickness and especially a family. Sure, when you're young it's ok, but as you get older, or as your family ages, there is this idea of your family just has to understand that you have to do this to make all their dreams come true: founders say that family and health comes first, then try to persuade you that those really come second.
I really do understand where they are coming from. It's all a high pressure game with very little likelihood of succeeding. First to market matters more than not. Notice how many founders are either single or have marriage issues. Survival comes first for them.
I had to ask myself if that's really what I wanted. It turns out, all I really want to do is be good at what I'm working on, support my family, and have coworkers that I can enjoy being around because they value the same things. I found that in larger corporations that weren't about survival anymore. That's what informed my search most of all: the values of the peers I would be working with.
Crazy work hours, do more with less, etc etc. If something needs to happen, fuck you, drop everything and do it. Of course this is said in a sunny, positive, optimistic way but the reality is the same. I'm the only person on my "team" that should realistically have at least 3 people on it. Soul crushing. I just wanna work 9-5 or 9-6 or whatever and leave it at the office.
The current FP trend has had a lot of benefits, namely in teaching people about immutability (I write immutable objects 95% of the time). But I am convinced that procedures and data belong together, and that it's an easier way to organise code.
On the Lambda thing, you are right that it makes no functional difference. I do think it makes a small readability and maintainability difference. Most languages I use don't allow, or at least it is poor practice, to make classes in line. With C++ passing a lambda to and std function is much nicer and easier to read than creating a functor (a separate class with operator() instead of apply() as you described), because it lets you keep the code being passed in the function that cares.
Industry OO doesn't seem much like OO at all. C# constantly adding new and innovative syntax to make getters and setters as simply as possible (much simpler than writing an immutable class with a proper constructor) suggests to me my views are a bit fringe as well.
Is prolog considered functional? I should revisit it at some point.
I would say my one 'regret' is that I really did not discover hackathons and even meetups until about 3 years ago. Huge amounts of fun that has really integrated me into the local developer community.
These days I contract as and when I need to financially, and then take time off to sprint at ideas as and when family life/finances allow me to. I do feel I came late to the idea of start-up culture but I never ever feel it is too late to learn.
I am version 4.8.
I already used that once but I think it's worth a repeat ;)
---
On another note, this age subject has come up a few times:
Old Geek: https://news.ycombinator.com/item?id=12503458
Programmers: Before you turn 40, get a plan B (2009) https://news.ycombinator.com/item?id=9361580
Silicon Valley’s Dark Secret: It’s All About Age (2010) https://news.ycombinator.com/item?id=9710936
I also wish I could copy paste this comment I already wrote: https://news.ycombinator.com/item?id=9362508
Today, with a head cold, trying to get caught up on the 400 emails I have because I took yesterday off. The idea of selling ice cream at the beach sounds like a kick-ass career move.
Sounds like he still enjoyed programming but was kicking himself about all the money he missed out on by leaving the Bay area and quitting Apple in 94.
It's not that I don't like programming in general, it's just that so many of the things that many of us get paid well to do are so damn boring.
Those of us born around 1960 came of age during the earliest days of personal computing. I guess a lot of us got hooked and are still at it!
Likewise I have been the Manager/CTO/Founder route quite a few times. I find I like the coding problems driving my dreams more then the "how do I deal with/fire so and so" problems.
What I dislike is the fact that it feels very tough to break into demanding programming jobs without Ivy League credentials. I certainly have the experience, and I've done some badass stuff, but, yeah.
Any advice is welcome. I am 35 and trying to work to avoid being dead-ended as a replaceable dev. Really interested in PL implementations and empowering devs to do more.
The reason is that they want to see evidence that you can take an unstructured problem where you don't have the faintest clue where to start, and make enough forward progress on it, on your own, that some useful contribution to human knowledge will come out the other end. This is a very different skillset from most software engineering jobs - when you're developing new knowledge, Google is useless, StackOverflow is useless, your peers are mostly useless, and you need to know how to ask the right questions and find the answers to them. A Ph.D is an institutionally-sanctioned way of demonstrating this skillset. There are other ways to demonstrate it - work in an industry research project that's successful and perceived as cutting-edge, founding a technology-based startup, published independent research that's cited by others - but they all involve you taking on the risk of conducting your first major research project on your own, without institutional guidance.
So that stuff you've been doing all day every day for the past 15 years is useless, you have to study for these interviews on your own time. Companies will even send you little study guides with references and strategies for practicing.
Essentially and as far as Google/Facebook/etc are concerned, your experience is worthless and any fresh grad can plug into your role like a cog. Or at least that's what's implied by their selection criteria.
My route to this gig was:
- learn Ruby well enough to sound like I knew a lot about hard things (go deep on one thing, instead of having a shallower portfolio of simpler things)
- hustling to get that first coding gig, no matter how crappy it was
- grinding through several jobs in a few years, learning each time how to pick a better fit, even if I had to move a few thousand miles/km to get a better gig (did that twice)
- building up enough expertise in core web development skills (testing, MVC apps, DOM manipulation, etc.) and "under the web app" skills (writing libraries, learning to MITM myself, etc.)
- researching what kind of job I wanted, selling that to interviewers, and eventually getting one (my current employer) to believe me enough to give me a job offer, and then working my butt off to learn what I need to learn how to succeed at this level while carving out enough time to climb to the next level
tl;dr - work hard, learn marketable skill, go where jobs are, be hungry, do what you gotta do
Happy to chat more if you like. My email is in my profile.
What have you observations been regarding your age when interviewing? Have you run into ageism?
I can't stress enough that networking, meetups, community are all to your benefit. If you can become an 'authority' (think Dave Thomas of Ruby fame), then the barriers will drop more.
Everything, for me, since 2001 has all been referral via network.
Just as a for instance (statistically valid sampling of one :), I had a guy working with me, Rick Smith, who is older than I am (I'm 55) and he is one of the most productive programmers I've ever met. Just amazing what he can get done, I really don't understand how he does it, I'm nowhere near that good. But he's as good as I was at my best so I think it is possible to be old and good.
But it is a lot harder than being young and good. I used to be able to pour myself a glass of wine in the evening, sit down, and hammer out a couple of really good commits. These days not so much. Forget the wine, it's rare that I have the juice to do anything useful, those really good coding days are not something I can just switch on like I used to. They come to me when they want and I have to grab 'em and ride them as far as I can because it will be a month or more before I get another one. I'm talking about those really productive coding sessions where you have all the state in your head, you see the code, you see the docs, you see the test cases, you see how it all fits together and you are just typing it in as fast as you can. Don't get those like I used to.
My Dad once told me that you are basically done doing anything significant by the time you are 35 (he was high energy theoretical nuclear physics). I've certainly proved him wrong, I did plenty of work that I'm proud of in my 40's, but 50's? Hmm, not so much. It gets hard.
Sorry to be a downer, I guess. If I were to offer up any hope I'd say stay as fit as you can. Healthy body, healthy mind and all that.
And I stay busy, just with other stuff like this:
http://www.mercurynews.com/2017/03/17/mountain-vigilantes-ta...
Yeah, don't get me started on how my county (doesn't) maintain[s] roads. It's depressing and it's not just here.
But I'll ask my doctor if TRT is right for me. I actually will though I sound like a crappy TV ad.
Not my best work :)
Or burnt out? Maybe, I dunno.
So what's a burner?
http://journal.burningman.org/2008/06/opinion/serious-stuff/...
"Still, the majority consensus appears to be something more broadly defined; it seems like maybe being a Burner is not about where you’ve been, or what you’ve attended, but what you do, and how you live."
I credit my youth in Wisconsin with giving me a desire to help other people. You pretty much have to have that attitude in the winter, everyone is helping push each other out of the snowbanks. It was just sort of what you did, I didn't think about it until I moved to California and found that it was less common out here. Much more common in the Santa Cruz mountains, which is part of why I live there.
PS: I could refer the experienced guy to a friendly company where he was writing assembler for embedded systems until he retired.
Oh boy. You hit it on the nerve there. The biggest issue I have working with young engineers (not just software, everything) is that they seem to go out of their way to add complexity. Truly frustrating.
The thing is though, there's that little voice of doubt in the back of my head that says, "What if the process isn't that complicated, and you just don't understand it?"
I hope to remain in harness for another decade, probably in some sort of AI role, which seems plausible since the demand in that space for skill + experience far outstrips supply, and I'm willing to move.
It's interesting because my employer (a multinational telco HQ'd in Canada) is keen to give me real work coding as soon as I want it. So with that, and my real purpose (building my next application myself) I'm really engaged and having a lot of fun.
Are you worried about the advancement in AI, i.e. programs writing other programs... will there still be enough programming jobs in 20 years for humans?
Ps I'm only a prototyper, I don't create production ready code, hence the slightly naive question.
Maybe it's naive of me to not be, but there is a pretty significant delta at the moment between current AI and true, sentient, AI. We're quite a ways away.
And, if we ever do get there, I think the least of my problems will be, "oh, well, there goes my job."
The routine tasks will more and more go away. Still amazed how much is done by hand today (like research, data preparation, communication, marketing, business to business processes, scheduling, HR).
Just as with every profession over the past decades, if you want to stay employable, you will have to level up your game significantly because the simple software stuff (of which there is a huge amounts today) will go away, let's say in the next ten years.
In 2030 software related employment will look more like in the 1960s. A highly selected and highly self selective group of borderline asperger guys having a blast thinking, proving theorems, playing piano and writing code.
Why I believe that? Because we see the 80-20 rule play out in so many fields. And in 2030 the leverage you get from technology will just a tad more intense that in is today.
Maybe not, but that means there aren't any other jobs for humans, either.
Machines that no longer need humans to program them is pretty much the definition of the singularity, which means machines quickly surpassing humans at everything.
Specific repeatable tasks that follow strict guidelines (like smart cars) can easily be automated by AI (once the sensor problems are solved). But nonspecific tasks that follow loose guidelines or require substantial effort to organize and implement (like programming) -- these jobs will be very hard to automate. They just require too many custom steps and non-obvious decisions that require a lot of 'hand-holding' for a machine following a simple set of rules to succeed.
If you can describe the rules of the task simply and completely, then AI can do it (drive a car, play a board game like chess and go). If not, AI might be able to help a human with the more formulaic aspects of the job, but it can't glue all those pieces together and replace the human planner... not for the foreseeable future.
In NZ, the median house price is 5 times the annual salary of a senior dev. In our largest city, it's 8 times that. So the romantic idea of staying close to the tech and coding forever and not becoming a suit for me is really just that - a romantic idea. I want to own a decent house and support myself during retirement.
So forget 56. I don't want to be doing this when I'm 35.
Depends on what you mean by "senior", but that's not very far from the situation in the Bay Area
P.S. I <3 NZ
Here's [2] an insulated house with no central heating and single glazed windows in a town of 20k people going for $125,000 USD. No real employment opportunities unless you work for local government or commute 50km. No Lord of the Rings style vistas in the Horowhenua either, it's drained swamp.
[1] http://www.newshub.co.nz/home/money/2017/03/new-zealand-hous...
Looks like you might have missed the best part of it. Have you ever experienced this influx of dopamine when coding non-stop at the speed of light for hours?
I think it is simply addictive.
Steamroller is an interesting metaphor. Treadmill is a little more common, thinking about the difference is potentially instructive.
Having observed some points between 20something and 55 (if still a good ways off from the latter end), one of the things I've noticed is that I'm no less hungry to know more. I'm possible more hungry -- as my knowledge has grown, I've realized how much more there is that I don't know. But I'm also far more picky and concerned about ROI. I have less patience for learning to keep up with churn; if it's at all possible, I prefer to reserve new learning for new capabilities rather than learning a new way of doing the same thing. Unless it clearly is better and simpler (but if that were so clear, why the proliferation of solutions?)...
There is crazy ageism in this industry. And I don't want to fighting pointless battles, while you could be spending time in peace doing a lot of other work.
I want to be running an engineering org or company by 40. I enjoy coding and architecting, but I get much more enjoyment out of helping people get to where they want to go in their careers. I also enjoy the idea of directly helping businesses make more money/reach bigger markets and collecting much bigger paychecks (supposedly) and or bonuses as a result.
I do enjoy coding, though, so I would like to keep doing that during whatever spare time I can find. Though between living life on weekends and career efforts after hours during the weekdays, this will likely be difficult to do (as it already is).
Yeah, you don't sound like someone who will be happiest if you stick to coding. A lot of us code precisely because we don't feel comfortable or confident with the skills you mention.
I'm not sure what I'll do instead. I've been reading a bunch of stuff folks have written about the subject, but most people are focused on going in to management or QA or whatever. I think I'd just like "out". My brain ain't what it used to be and I'd rather quit than be fired, if you get my meaning.
I don't have an answer yet. I half-joke about becoming an Amazon Flex driver.
Curious by your answer: something about bad apis on Android, or you got burned by deadlines or boring work?
The APIs are not great. Some of it is down to poor naming, for example:
The callback you'd use on a CheckBox is called `OnCheckedChangeListener.onCheckedChanged(view, boolean)` (or something) but it is called whether or not the check state actually changed (e.g. if you call `setChecked(true)` and it's already checked you'll get the callback anyway). This is an issue that plagues the APIs in other places like `OnLayoutChangeListener` and `TextWatcher.OnTextChanged`
The fragment lifecycle is incredibly complex to the point that many people advocate against using it -- I'm one of them. It's like someone decided to try to solve every problem ever without asking the real users (devs) what they thought was wrong.
But the worst thing about it, bar none, is just how long it takes to build and run an app. We're talking 1.5-2 minutes. Everyone has their pet idea for reducing the build/test cycle but they provide marginal benefits at best and don't offer up concrete examples with concrete data (e.g. "I am running this gradle command for this github project on this computer and am measuring it this way, and here are my results"). I've spent weeks of time, scattered over the years, trying to figure out a way to reduce this to something more reasonable like 5 seconds, but to no avail.
My best guess is that other people are working on tiny toy apps or are just building the default project and then proclaiming that I must be mistaken, I must be doing something wrong for my build (of a reasonable sized app) to be as slow as it is.
He laments how he quit Apple when it was going down, then Steve Jobs came along few months later and the rest is history. Also how his Sister went the management route and has 10x Assets etc. I wish I hadn't found this 2016 article because that makes me read this OP 2012 article in a whole new light. And it's not very encouraging... :(
8 years ago I learned Objective-C and physics engines and published a number of mobile apps for IOS.
Nowadays I am learning Go, Solidity & Viper and writing blockchain-based dapps. Big fun.
Subject: Can I Buy you a Coffee? To: $Name, CTO $Company
Hi $Name,
I am an experienced programmer looking for interesting challenges. $Company is exactly the kind of company I'd like to help out next. I love the idea of taking on the world from $NiceSuburbWhereBothMeAndCompanyLive. I could send you a CV but I don't think that's the best way of us finding out if there is a real opportunity for me to help you. Basically I have heaps of experience in a bunch of important technologies, but much more importantly I am capable of learning new languages and technologies quickly. For example, at the moment I am teaching myself Rust, just for the hell of it, and because I think it is cool and exciting and has a future. I am not a paint by numbers developer. Copying and pasting snippets from Stackoverflow without understanding is not my thing. Deep level understanding and sound software engineering is my thing.
I'd love a chance to show you what I can do, and I would definitely consider doing so on an unpaid basis, at least initially. I've had some significant success in my career and these days I don't have to work to make a living. For this reason I could be the ultimately flexible "resource" - for example it's possible I could help out on an occasional basis, without requiring inflated contractors' rates.
Basically I am offering something a little bit "out of the box". I don't think either of us has much to lose by having that coffee and opening our minds to the possibilities.
Cheers,
Bill.
I must admit this time I did expect a reply, but no luck this time either. What kind of person would just ignore something like that? I think it might be a generational thing - just ignore emails if you don't want to answer them. They're still advertising that C++ job too. It took me a while to realise that these days cross platform C++ probably means iOS and Android - not Windows, Mac and Linux any more. Still you get a certain amount of experience and you realise there's very little really new under the sun and you can adapt your experience and understanding and learn anything "new" quickly if you need to. End of my bitter rant.
No matter what you think, you won't be as employable in your 40s and 50s as you were in your 20s--being young in the tech industry means you can be exploited and exploitation is the #1 factor. They know young people will work a ton of extra hours for no extra pay to gain experience, to try and prove themselves, or whatever.
I recently talked to a colleague who is 62 and still coding. He is worried about the next seven years as he is not ready to retire (not financially ready, that is). His department is going through downsizing and he is trying to position himself in another area that isn't likely to drop people. He rightly realizes that finding a new developer job at 62 will be next to impossible. It's all a big chess game after 40 so be prepared.
Unlike the codist, I'm sure I don't want to be doing this work after 50. I have a plan for getting out. This year, because of a family obligation, I took some months off. During that time, I did a trial run of how to 'retire' from software development. There were quite a few surprises for me and it didn't look like I had expected. Finding an alternative career after 20+ years as a developer is do-able: There are roles that require attention to detail and analytical skills, but that don't require coding, for example.
I won't go into detail, but I will say I rejected downshifting to a non-developer role even though I had a couple offers at 80-90% of what I was pulling down as a developer. Instead, I'm headed back to doing development for another 5-7 years, but with more knowledge about how to proceed in later years. I want to retire around age 50 and am working on having the passive income to do so. I may need to work part-time in odd jobs as well, but I predict I won't be a developer in my 50s.
If you're older, you had better understand that the next downturn could very likely take your job and getting another one will be hard. For all the happy talk about how great the job market is and how age doesn't matter, I beg to differ. That "great" can change insanely quickly. There is more competition in our field than ever before and the only thing that creates job security for us is being able to actually write code and get crap done and even that is of thin value because companies don't care: they see us as another commodity. To management, it doesn't hardly matter how good a coder you are, companies are happy to accept fungible, mediocre people as long as the systems sort of work.
The last thing I will leave you with is that you don't know how long you're going to live. If you have any ambition to do anything in life besides work, you need to get going on those plans right now. Dropping dead from a sudden heart attack or stroke does happen to a lot of people.
Trust me, most of us in this situation are probably acutely and painfully aware of the nightmare scenario, but we've got the tiger by the tail and can't realistically let go. Such is life.