Edit: seriously, what is your env like? Are you into windows, osx, unix, linux?
I sometimes find myself getting tired of technology and while I love software development, I often think about not doing it anymore. After a while it gets old constantly dealing with other people's decisions.
An easy example is working with Powershell Remoting can be a nightmare if you're not intimately familiar with both Windows itself and Windows Remoting specifically. It's extremely hard to simply use it as a shell without so much deep knowledge, something I don't find to be the case on unix systems.
Absolutely not an attack on Windows, just a recent example I've come across where I don't want to have such a deep knowledge of Windows, but I'm forced to in order to deal with a tech that, in theory, should help me be productive without having such deep knowledge.
I have my days where I just get tired of it all. The day I realized IIS forces you to load DLL's in child applications because the parent loads a DLL (even though they can use separate app pools) is one example. I can't imagine why that's the default.
I find myself having to go home and work on things like homegrown emulators and the like just to keep up my love of technology.
I feel like you have the beginnings of an entrepreneur here. You should start something that solves this problem you're seeing. The last 2 people I've heard make similar comments ended up starting their own tech-consulting firm. :)
1. "Hate it when X becomes Y and you actually just wanted Z"?
2. "Make an app or start a company that can assure people that X will become Z as quickly and painlessly as possible"
3. ??? (Something to do with YC).
4. "Become a millionaire"
I feel you here. I've been the go to sysadmin at every startup I've worked it. Whether it's Windows Servers, vSphere clusters, VLANs on HP or Cisco, it gets old doing the same thing at a different datacenter every couple of months. Especially when you have to learn some vendor specific crap that will almost NEVER be relevant to anything else outside that specific use case.
Thankfully I've been able to move (push? ;) my clients onto more open technologies like Linux, LXC, Openstack etc. all of which means the skills I learn doing this sysadmin stuff are at least tangentially relevant to my main job (unified comms development).
Ultimately like a lot of oldies here (myself included ;) working on the stuff you really want to do in your spare time is where you learn the cool stuff that helps you land the next great gig.
I also like the way open source options have completely eliminated the necessity for me to work with commercial languages and technologies, which I always found a bit tedious.
It truly is an exciting time to be a software engineer. Barring any serious illness or accident, I'm looking forward to doing it for another 30 to 40 years.
I find it fascinating that the gradual adoption of new technology maps onto human time spans like this. This makes me optimistic that even technology that is far ahead of its time can succeed when developed with patience.
Maybe I should do a graybeards Meetup group or something. Get some reverse-discrimination going...
Yes, the field can be insular, yes, there's benefit from cross-pollination from other disciplines, but the field is vast, and it's reach is still expanding. There are plenty of people immigrating and emigrating from CS that are sharing ideas, you don't have to be one if you don't want to be. If you're happy with what you do, and you can make a living doing it, enjoy it. It's privilege, not a curse.
I am in the opposite side, I am also very excited about computer science so I focus now on sales and business development because I can earn much more than developing software. Now coding is a hobby again and a complementary knowledge to sales.
I.e. There are plenty of 20-somethings that learn one tool and don't want to switch. Don't blame age on a 50-year-old being stuck using the tools they know; blame the person.
You see, in this career you have to be willing to drop everything and learn a new thing. All the time. Make learning new things part of your career.
My strategy is to watch for the “next big thing” and stay at the leading edge of that. 10 years ago, for me, it was the Ruby language, and that has borne much fruit. Now it looks like it’s becoming Elixir, so I’ve been building up a portfolio in that language… just for fun (and maybe profit. Well… Probably profit, down the line.)
Are there 20 to 50 times more Ruby jobs than Elixir jobs right now? Probably. Were there 20 to 50 times more Java jobs than Ruby jobs 10 years ago? Yes. (See where I'm going with this strategy?)
I may not stay as fast as the newest coders, but I will write better code in less time than the guy who writes faster code with more embedded technical debt (which must be paid off in spades, with time, later on), and I’m pretty sure that my ability to mentor others is top-notch, and any good company with 40+ cohorts in management (if also including younger on the front lines) is going to recognize all of that.
I also think that (like it or not… and yep, I struggle with this too) it’s even more important as you age to stay on top of your health… especially in a sedentary job like engineering. It may be a conflating variable here- the demands of family and career (in addition to the effects of age) may add to an engineer’s waistline and double-chin and consequently reduce his “oomph” (or to put it blunter, his T), and ALL of this may contribute to a distaste by the younger teams in hiring the 50+ engineer… Not the age itself, per se, but the impression and deleterious health effects that may typically come along with it. It would be interesting to see statistics which took fitness into consideration.
It may of course seem inappropriate to mention, but the statistics are out there-
http://www.canada.com/health/Bias+against+obese+people+incre...
http://listverse.com/2013/09/27/10-frightening-ways-we-discr... (scroll down to #8)
http://business.time.com/2012/05/02/why-being-overweight-cou...
I DO NOT condone this (heck, I'm a bit overweight right now and these stats are working against me... I'm just aware of them), I'm just wondering if this is a conflating variable.
To all you budding and early-career engineers- If you're doing it because you love it... Don't worry too much. Just stay on your toes, be willing to learn always, and by all means DO NOT EVER "marry a company." The age of the 30-years-at-one-company committed engineer is DONE. You need to look out for #1. Your career will benefit greatly if you switch jobs every so often... Employers do not have your best interests at heart. Don't believe me? http://www.forbes.com/sites/cameronkeng/2014/06/22/employees...
Lastly, if you're 5+ years into this career, NEVER settle for 2 weeks' vacation to start. It's not only a load of bullshit, it's institutionalized hazing AND it hurts the employer (because you'll be less productive overall for the same pay)! http://www.theatlantic.com/business/archive/2012/08/the-case...
from time to time, i would see our team hiring engineer with gray hair and requiring special mechanical keyboard, and we all thought "mm.. interesting."
Well youngster, you seem to be falling behind the latest trends. Maybe you're not as young as you think. Don't you know all the fashionable programmers/gamers are using mechanical keyboards?
Go ahead and aspire to management if you want, but don't assume everybody wants the same as you. And I hope your attitude changes before you achieve it.
PS: mechanical tenkeyless keyboards ROCK!
I like when the older programmers are more hands on, because I can learn a lot from them.
I also use mechanical keyboards.
Software engineering is such an entitled world, it is ridiculous. As someone who has seen the world of menial work, I will never, ever leave it. I feel blessed. You should too. You just don't know it.
A common version of this is to complain about a lack of vacation time (even though you have 4 weeks, plus holidays, plus sick time, plus sometimes getting to work from home), as if struggling menial workers barely making above minimum wage are spending half the year in the Bahamas. [Note: this paragraph is written from a US perspective.]
"Golden handcuffs" is a similar term. It's not that there is no validity to these notions or that the phenomenon of golden handcuffs doesn't actually occur, because it most certainly does. It's just that, in their typical usage that I see, these terms are used to invent an abstract struggle that upper middle class people are supposedly facing in order to assuage guilt over their own fortune.
My friend who was a plumber recognized this. He also realised that plumbing is not something that you want to be trapped in. As you age it get's harder and harder to be constantly crouching down and contorting yourself into those hard to reach areas. So he jumped ship and is retraining as an architect.
Programming doesn't have that limitation. Barring the odd bit of RSI there is nothing to stop you coding until the day you drop.
http://www.homeharmonizing.com/wp-content/uploads/2013/09/si...
I like software, but for instance, I really couldn't make the same as a photographer (plus, I don't want to shoot weddings or people or stock photos and stuff...).
However there are some great examples of stock traders becoming potters and things like that, so it CAN be done, you just have to change what things you are addicted to - or earn a bunch first :)
For the record, I've been programming professionally for close to 25 years, and I still love it - http://henrikwarne.com/2012/06/02/why-i-love-coding/
But where do you go? You haven't "seriously tried doing anything else" for the last 30 years. A trap is a trap because you cannon leave it.
- Everything I've learned may be applied to most languages. Meaning that writing testable code generally translates from BASIC to Javascript.
- Programming should always make you feel stupid. Feeling comfortable with something means that you stopped learning new things.
- Experience != Knowledge. My biggest issue with some older programmers is that they tend to confuse experience with a language, codebase, or framework with knowledge. The more you learn the less experience you will have. Think about it. You start learning Javascript after years of working with C#. What does that experience work for now? You will surely have an understanding of all the basics. But you have not yet been bitten by the == and === operators. You have to get that new experience. As time passes you will realize that it becomes a game of knowing enough versus being experienced enough.
- New technologies are exciting. A lot of people are scared by them. They feel they will be replaced. Their comfy jobs taken away. I'm not scared of this. Change is exciting because it means that I will have the chance to learn something.
- New languages might be rehashed versions of older ones. But they contain something different: Somebody else did it. That's reason enough to give it a try. Javascript might not be the most universally praised language, and it doesn't really bring much new to the scene. Its still someones interpretation of how a given problem should be solved. You might not agree with it, but that wont stop people from writing lots of JS code.
- Nostalgia is fine. Don't let it get you. Sure, I miss typing BASIC into my old C64, but its no longer relevant. I could pick up demo'ing as a hobby and learn lots of stuff about old chips and memory management tricks. It wont really help me to stay employed much.
- All these new devices are scary! I grew up programming for one kind of device. Now I have to take into account tablets, phones, tvs, and whatnot. Embrace it. Mobile is here to stay. It will keep morphing and completely remove desktop computing as we know it. The same way desktop computers removed mainframes and terminals. It is scary. Try and get excited. There is nothing more mind blowing than watching a several months old child tap on a tablet to play a game.
/old guy rant
How would be that possible?
Good spirit and even better understanding of the Zeitgeist :)
The one problem is being slave to Apple and Google having absolute control of the OS, software and apps you can run. The only plus is their hegemony does help with security but neither one of them is even remotely trustable with the keys to every personal computer on the planet. There is irony that the creator of the big brother commercial in 1984 is increasingly, you know, big brother.
P.S.
Not sure how Daves self promotion blogging rose so far on hacker news. It actually has almost nothing to do with Doug Engelbart. He was just name dropping, something he often does, before doing what he usually does, self promotion. Yes there is that age discrimination angle which plays well with some old programmers, but not me.
People who spend their time complaining about discrimination should spend more time doing something that people will value regardless of your age, sex or gender. At that point your age, sex and gender become irrelevent especially on the Internet which tends to be blind to these things until you wear them on your sleeve. Dave likes to use his age to promote a martyr complex angle.
Ive looked at most of Daves recent projects and none of them are particularly interesting.
For pros (programmers) there will continue to exist dedicated large displays, pro keyboards and whatever else. Look at professional gear of audio or video engineers, or CAD users, they have pretty impressive devices to use with computers. It's just not what mass users have at home.
Fully offline desktop computing will remain possible, much like running a C64 or an MSX machine (possibly in a form of new, much cooler hardware) remains possible. It's just not very relevant.
I wonder when smartphone platforms will become self-hosting.
We've largely circled back to the mainframe/terminal model, except with a prettier face. Your mobile device is the terminal, and the server cloud is the mainframe.
The thought is: "What, again!? Haven't we buried this weakly-typed language back in the 90s, years before C# had been released?"
Yep. That's the key to staying relevant: change with the times.
I have found myself more than once thinking that learning about some new trendy buzzword is just ultimately a waste of time, since I will barely have mastered it before it's been replaced by the next new/old thing.
On the other hand, it gets easier since none of the concepts are new anymore, and I tell myself, "hey, if you want to pay me to build a client-server app in the browser like it was 1995 (substitute Powerbuilder for Firefox/Chrome), great, happy to take your money."
An example of what I mean: the Apple Newton, and then 10 years later the Palm Pilot, and then 10 years later Windows CE and flip-phones supporting J2ME, and then 10 years later touchscreen phones and tablets. There have been four generations of "mobile app developers", but only the latest generation has seen any traction for their apps. This time the idea stuck; it will stay around, rather than coming around again.
If something like Paypal's prototype service (beaming money from one Palm Pilot to another) were set in this "revolution" of mobile instead of that one, it would be much more successful.
Though that means that you have acknowledge that things were not all that great back then as you remember - which seems to get harder as one grows older.
Today Functional Programming is introducing all kinds of new ideas and approaches, and while I often find FP people over-earnest and irritating, I'm still able to recognize that they offer something new, even if it isn't all they think it is.
Impure functional languages like Haskell have shown that it's possible to get many of the advantages of a purely functional language while still being able to implement side-effects, which is an amazingly cool trick despite Haskeller's annoying insistance that their side-effect-ful "language" is "purely functional" even if they have to redefine "language" to make it true.
This is true of all the supposedly "pure" functional languages, which universally come with caveats that amount to "disregarding all the sex I've had, I am a virgin", but that's just a somewhat off-putting quirk of the community. The languages themselves are full of interesting ideas that are being adopted by less purity-obsessed languages, and this is a good thing in the same way that the OO-purism of SmallTalk drove other more mainstream languages to adopt OO ideas and bring them in adulterated form to the unwashed masses (which had the nice side-effect of driving the purists nuts, and who doesn't want to see that?)
So I personally get the feeling that it's a great time to be alive and active as a software developer. We're barely out of the "bash rocks together to make hammer-like-thing" era of programming, and we get to be part of the most explosive growth phase of the most important technological growth curve in human history: the algorithmization of work.
Yeah on the surface. $IRRELEVANT_OLD_TECH didn't catch on or it wouldn't be irrelevant but _why_ didn't it catch on? Powerbuilder failed, but was it because you couldn't write a good enough program that way on 1995s hardware? Or because it was ultimately a stupid idea?
Somebody like me who has never heard of Powerbuilder would have to look into the technology, which would take longer but it would prevent me from just dismissing it because "this has been done before".
Remember it isn't what you don't know that gets you, it is what you know for damn sure that just isn't so.
I am not saying this is the case for all old developers, but it would be my concern.
Because every hour I spend investing in a new stack and its details is an hour I can't spend thinking about product-level details, can't spend learning more learning about organizational-level matters, can't spend on improving more timeless investments like statistics, math, and soft/interpersonal skills. Not to mention fun things like music and travel and enjoying the company of people you like.
It wouldn't be so bad if most of the new shiny things in the software world were an order of magnitude better. But saying that 1/4 new frameworks or even languages present tha kind of power/productivity jump would be optimistic.
It's also hard to predict what will be popular five years from now. I thought that using Javascript on the server was pants-on-head retarded, but it's very popular, with no signs of passing on.
There is value in keeping up with trends, but on the flip side there is value in sticking with sound ideas, even if they are not necessarily attractive in the labor market, and learn enough to be employable or self-sustainable in some regard.
I would say server-side JS might not necessarily be a great long-term prospect, at least in part due to limitations with SMP and unwieldy concurrency models. Even if it persists, the value of knowing might be more of a labor necessity than any inherent utility.
Because programming operates on lots of trends and conjecture, knowing which ones not to waste time on is a much more valuable skill than jumping to stay "relevant".
If you're spending your free time learning about distributed databases, machine learning, cryptography--fields that existed in the 1990's but are more relevant and developed today because of the web--you're becoming a better programmer. If you're figuring out the latest "compile to JS" language or framework, you're wasting your time. You could do all that stuff in C++ or Lisp or ML. In 1994.
Maybe there are lots of programmers who don't stay current. But I also think there are lots of employers who can't distinguish between "staying current" and "keeping up with fashion."
And yet I do feel the ageism. I understand it and I'm not angry about it, but it's real, nonetheless. It's not a good feeling.
best slogan ever
I'm 37. I think ageism is a very real problem and I hope people will consider doing more suing even if they don't have to. Some people need to be sued. We need some class actions.
Right from the top down of Silicon Valley ageism is rampant and in your face. For example, Sam Altman has publicly made explicitly agist remarks.
You kids may not think its a big deal now but give it ten years or so. You will see.
Of course in 10-15 years everyone will be in the same boat, being completely ignored by the ASIs.
Exactly, so why give them any credence now?? You only give these people power if you do. That's great that's what Sam Altman thinks; he's "young", but ya know, when he's 50, then what? He'll probably say "oh, that's obviously not how I see things now". Or Zuck. He's ancient to a 19yr old and the only reason he doesn't care about this is because he's rich and runs Facebook.
I'm older than you and have been through enough startups and honestly I've dealt with ageism enough to the point that it doesn't even phase me anymore - I've moved past it. But this is because I've made it that way. If people don't want to work with me, np, there are plenty of other opportunities out there.
Sure, you might not get hired at the hot startup you just interviewed at. But honestly, if that's the case, who cares? Make your own way, your own rules and then you can decide to hire young or older people or not.
If you're not interested in purchasing the book, he gave an incredible hour and a half long demonstration of his system at the Fall Joint Computer Conference. Dubbed The Mother of All Demos [1], he displayed (for the first time in the world) remote video conferencing, hypertext, text editing, and a graphical windowing system. In 1968. Definitely worth a watch.
[0] http://www.amazon.com/What-Dormouse-Said-Counterculture-Pers...
function secondsSince (when) {
var now = new Date ();
when = new Date (when);
return ((now - when) / 1000);
}
I'm assuming now returns seconds since some fixed point in time ( epoch ) when when someone passes in the 'when' argument, it must already be formatted a certain way, or node/js somehow managed to figure out the input? How would it deal with 5/8/2015 vs 8/5/2015Or this is just a very case specific function and the input is already sanitized in a way that is prepared for this function?
github is here: https://github.com/scripting/pagepark/blob/master/lib/utils....
When coerced to a number, it's the number of milliseconds since January 1, 1970.
If you wanted to know the number of seconds since January 1, 1970, you could divide by 1000. Since JavaScript will do the coercion for you automatically you can pretty much treat a date object as if it were a number.
This is basically a utility routine that I use for debugging messages to say how long an operation took.
Here's an example of its use:
https://github.com/scripting/myWordEditor/blob/master/script...
It's especially nice because JavaScript automatically does real arithmetic on the division, so you get fractions of seconds displayed in the console.
I use this routine a lot. Helps me spot performance problems. Nice to have, not a crucial routine.
Hope this helps! ;-)
Typically I believe new Date() is current time/date (http://www.w3schools.com/js/tryit.asp?filename=tryjs_date_ne...) in my experience.
As far as your question how to deal with 5/8/2015, and 8/5/2015, to be honest I don't know that answer.
a Date can be constructed with either a number of milliseconds since the epoch or a string in a format recognised by the Date.parse() method (IETF-compliant RFC 2822 timestamps and also a version of ISO8601)
Everybody has been influenced by Engelbart, but nobody uses NLS. Merely the ideas went into all the computers that we use today. Engelbart was so frustrated because he had more great ideas, but they were difficult to develop and he couldn’t get funding.
Winer specifically mentions Userland Frontier. It was a useful tool, which I’m sure helped with the development of RSS, just as NeXT Project Builder helped with the development of WWW. The problem with the Engelbart comparison is that there are countless other development environments, many of them free and/or not in a dialect of C and/or available via git, while the Mother of All Demos was unique.
I think the open-sourcing of Frontier was too little, too late. Frontier is an impressive achievement, but I don’t see why it should be interesting to me.
I've played with folks in their late 80s, and most of the folks I play with weekly in a large jazz band are between 50 and 70. I also play bi-weekly with an orchestra with members ranging from 12-82.
Maybe I lack the same perspective I lacked when I was younger (and thought that 45 was pretty old), but I absolutely don't see how 60 is old. 80 is old, maybe, but 60 just isn't that old, and I don't mean that in the attitude sense, as with:
"The ones that love me say I'm really young, and I appreciate that. I think they mean my thinking is flexible, and I'm excited about the future, like a young person might be."
So is he in touch with Roky?
Working in the web industry, the second-hardest thing I find (after pace of change/fascination with "New! Shiny!") is the vision of people can be measured in months to 3-4 years. Applications are not built with the thought they will be running in a decade; it's assumed they'll be rewritten in New Language X with New Architecture Y long before that.
To older programmers: if you work in the web field, how do you handle/deal with this?
What processes is he using? What tools and underpinnings that allow him to quickly try out new ideas?
When we bring on young people they have a ton of energy and are excited to try every new thing which, don't get me wrong, is awesome. But they do occasionally criticize me for moving too cautiously, even though I am plenty excited about trying new things. I always think to myself, call me back in about 15 years and we'll see whether you evolve into the rockstar that you envision yourself to be, or else if you stagnate, burn out, move onto something else, etc. I always hope they do become the rockstar.
As for learning new programming skills I still enjoy it, but I think this is because for me languages/frameworks/algorithms are just tools. The real fun is in using the right tool to solve a complex problem.
What is the gift that will keep on giving? Write about what you know. Write about your experiences and insights. Even thousands of years from now people may come across your work and given the advances they will be living amongst will almost certainly be interested in what you had to say.
(The artist that did that music video is 74)
The people that are resourceful will always find a way. Sometimes this may mean on your own, sometimes with a group. But as long as you can keep learning and just 'do things', you will be light years ahead of those that don't know what to do and look to other people to tell them.
From Steve Jobs:
"Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use."
It's hard sometimes (a lot of the time??) to get over that bit where 'no one is smarter than you'. (I'm not as smart as a Google PhD, am I??..) Once you can and you chart your own course because you are resourceful and confident and someone who can do things, then you won't need to ask the question you asked. :)
Good Luck! (I'm still on this journey)
Did some nice things professionally, too.
This is the most absurd sentence I've read in weeks. Wow, man. Talk to some people a bit older than you, maybe, and realize that you haven't done anything.
You're fortunate that you've done what you have wanted to achieve at 30 yrs old.
Unfortunate that you feel like you're done at age 30.
I'm not saying that people don't get tired/slower as they get older (I struggle with it), but I don't think it's inevitable.