I don't develop more than 30% of my time but I love it none-the-less. I'm 62 years old.
I find software architecting, developing, and operational troubleshooting to be fun, requires a holistic view of a problem set, requires creative problem solving and more.
I find development an outlet to create (make) stuff. I work at a university on the east coast of the USA and am on a high performing team that has not lost a member for at least 5 years. We love each others talents and respect each other's abilities.
I expect to work full time till I am at least 67 and hope to be able to work part time till I am ~70.
I ran a few small development shops a long time ago and then went into ecommerce in a bank. Eventually I was a bank compliance advisor (business side) for the bank. No hands on IT and I was miserable. I was good at what I did, remediate systems and processes to make the bank examiners happy but 70+ hr work weeks were killing me. Hence I decided I wanted to get back to web development as the job I am doing now that I grew up. I've been at the University 9.5 years. Almost as long as my longest job.
I run the development shop for backend and the cms and I am the scrum coach for all development work. I am by far the oldest and we joke that I am the resident curmudgeon, but in reality I am a pretty positive person.
I do mostly backend development in the order of priority:
- java 1.8 (love hate)
- python (love)
- bash (necessary)
- php (meh, only as demos for people that don't know how to do something)
We use cloudfront as a cdn and our web is php based. But we have UI developers for 99+% of the pho work.
I wrote a java middleware system 5 years ago that is old and very hard to extend. We are replacing it with spring based apache camel code and routes. Love, love, love apache camel)
Db is Oracle because we have a site license. I occasionally write sql for others that don't know or need to know SQL.
Our CMS is cascade by Hannon Hill. A publish only CMS and we love it. We are 100% in control of all the code that runs in our web. ~140 web sites, ~129 are branded for our university.
Web Servers are RHEL, load balanced by F5 load balancer. Backend XML database is Exist-db (love this as well). Exist-db uses xquery but I don't do any xquery. Apache httpd (love for sites out size of traffic) with Zend Server (love hate but necessary for Oracle connectivity from apache httpd). Yes I could compile our own apache httpd with oracle libraries but that is strongly discouraged by our data center staff.
Of course we use git. HipChat, BitBucket (free private repos for non-profits). I do development on Mac OSX mostly and port. We never have porting problems.
Others use javascript with jquery and angular. No node.js in our shop. SAAS CSS compiler.
I'm sure I'm missing something that that is most of it.
The best part for me about being an open source web developer is that the capital required to bootstrap yourself into working is as low as $100 or even nothing at all.
A few months ago, I had an idea for a side project that could lead to a lucrative business. I ordered a used Thinkpad with no operating system from eBay, and off I went, developing the same sort of website I do on a $1,500 MacBook at work. If I already had a laptop lying around, I could have just reformatted it and used it without spending a dime.
When I lost my job in the city and had to move back home in 2011, I didn't have a computer except for an old Windows desktop. I pulled it out of storage, formatted the hard drive, installed Linux and Rails, put my resume on Craigslist, and within a week I had signed a contract with a company as a remote developer. I was lugging that desktop around everywhere -- on trips to visit family, to co-working sessions in hotels, to my new employer's office -- looking just as goofy as I wanted to, but didn't care, I was working again.
Edit: I see my post is gaining upvotes quickly. If any open-source project maintainers are reading this, thank you! My story would not have been possible without your time and effort.
When I was at school we had to interview our headmaster, and somebody asked him if he thought his job was difficult. His answer has always stayed with me:
"Compared to lying on a beach drinking cocktails, it's difficult. But compared to a coal miner, it's ridiculously easy."
Would I rather be a software developer - even one who is building boring CRUD apps - or a coal miner?
I've never mined coal, but I did fly-in/fly-out work at coal mines surveying, and compared to coding it had the following benefits:
- way better pay (not everywhere pays developers like the US)
- kept me in shape
- I slept a lot better during that job
- satisfaction of jobs completed (no maintenance for topo data)
- no micromanagment, open plan offices, daily stand-ups
- predictable, stable working hours
- etc. etc.
I don't do it now - 10 days out of every 14 is too long for me to stay away from my family - so I guess in the end the bad outweighed the good. But I just want to make the point that it's easy to assume that building boring CRUD apps is the best road to go down if you too quickly dismiss the other paths that can be taken.
You bring up a really interesting point. My partner does both project management and sound tech work. "I love it when the gigs go well, but good or bad, at the end of the night I get paid for the gig, I come home, and I don't ever have to think about it again if I don't want to."
I've never been a coal miner, but I have worked a number of extremely physically demanding jobs, one especially where people died from poor safety conditions and most of everyone called in sick several days a month ( I was complimented sincerely on what a good worker I was because I only called in sick once per month).
any day of that job was much worse than programming when programming on a good day, but programming on a bad day is much worse than any day of that job ever was.
There's also the black lung that you don't quite get being a corporate coder.
I think it's very easy for people who aren't working with their hands every day to sit back and talk about the 'satisfaction' you get. You may get that if you go and do it for a day. When you're doing it every day you're destroying your back, knees, your hands end up cut and calloused, and you're exhausted. And the 'satisfaction' probably doesn't make up for the lower pay manual labour jobs typical come with.
That's why I enjoy doing small-medium landscaping projects and yard work. You start with something in a substandard state (yard, grass, leaves, snow, etc) and you end with something looking much nicer, all within the span of a couple hours.
Compare that to releasing code 4 times a year. The stuff I'm working on now won't be in production until September.
That's too simplistic of a view. Physical work is hard on your body, but mind work is equally hard and you cannot brute force most of it. The mind needs to process complicated problems asynchronously, while you let it rest by taking a walk or doing house cleaning, but physical work needs no such thing, as long as your body condition is sufficient.
Maybe a coal miner is the wrong example, but I think you can think of plenty of jobs you would not want. I certainly would not want to go back to working in a call center like I did in my previous life, even if the pay were the same or slightly better.
My job is definitely easier than a 1930s immigrant coal miner's. Is it easier than a 2016 coal miner's? Probably. Maybe. Is it easier than a furniture mover's? No, but it pays a lot more. Is it easier than a 1970s steelworker's? Certainly not, and it actually pays less.
Actually, you get payed far more. A steelworker in 1975 made on average $7.11.[1] This is about $31.47 in 2016 dollars. Not bad at all, but I'm still guessing you make more.
Every time I've dealt with furniture movers I've noticed that they work incredibly hard and I'm glad I don't have to do that for a living (my back would disintegrate).
A few companies ago I interviewed an ex-coalminer for an Oracle DBA job. He was good too. My hiring recommendation was overridden by a senior manager who was a snob and an asshole, for the entirely irrelevant reason IIRC of no degree.
Perhaps this is true if you 'can relocate to SF' + is american/won the h1b lottery, end up working in a company with 6 hours/day policies, 20% time and plenty of money to burn.
All other mortals are in a way or another struggling. Pulling all nighters(because it's expected), having long periods of stress + burnout.
The advantages I see are that the money is good and that people(me included) love programming. Having a job doing something you love is definitely a blessing. The biggest of them.
I feel like people overstate just how massive the divide between SF unicorns and everywhere else is. While I admit I'm not on the 100k+ salaries of the big five, I'm definitely not struggling and pulling all nighters - I work 8 hours a day, 90% of the time from home, with the odd evening of working on something if I'm particularly into it.
For that I get paid a decent salary for my area, get to do a job I find interesting, and without having to live in London.
As a comp sci student up north, are the salaries in London worth the hassle of living in London?
Don't get me wrong I like visiting London, but I wouldn't want to live there unless the incentive is too good to pass up.
Silicon Valley may be a bit special or even a bit of an outlier in the way engineers are compensated and cared for (or pampered as it might seem at times) but as the saying goes: The grass is always greener on the other side.
Plenty of money to burn in one of the most expensive places in the world for many people probably means just that: A lot of money earned but nothing to show for after years of work.
Compared to that you can make a decent living as an engineer almost anywhere in the world and not blow away all your hard-earned money at the same time.
Then, there are almost certainly Silicon Valley companies where you face stress, burnout and dysfunctional management just as you would in your run-of-the-mill enterprise company that merely treats developers as fungible grunt workers.
The thing that many engineers - perhaps more so outside Silicon Valley - don't seem to get is that they don't have to put up with that kind of abrasive behaviour. That's the most important privilege that comes with this profession nowadays: You basically don't have to struggle to find a way to make a decent amount of money as much as other people do.
If your work environment is a Dilbertesque nightmare you don't have to just endure that until you retire (or drop dead due to stress, whichever happens first ...). Opportunities are a plenty, not just in Silicon Valley but almost everywhere today!
In my mind, there are three really standout things about being a software engineer:
1. The multitude of small wins that you get throughout the day as you solve problem after problem, all from the comfort of your chair while you drink coffee and listen to music.
2. Creating something from nothing, not unique to software engineering but it is super satisfying to see something that didn't exist before start to form in front of you.
3. Whenever I see some one do data entry or some other laborious task, that I can automate in under 15 minutes, it makes you appreciate the fact that I know how to solve this problem in a more efficient way. People dismiss this because they don't understand that it takes me 15 minutes to write a program that inserts 1 row or 1 million rows, the work stays the same, this is not true for manual labour.
Good post! I completely agree that programming is very creative. Fred Brooks said it really well in "The Mythical Man-Month" I think:
The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination. Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself.
Those are some rose-colored glasses. I could easily make a list of the best things about being in the hospital, too. I'd estimate that my 18 years in software development have been about 25% good, 25% tolerable, and 50% team/boss-induced inhumane mental torture.
The one thing I can't argue with is the money. Everything else has been highly volatile.
Every time I read things like that I wonder if I've just been lucky or if there is something 'special' about the US. I've spent 10+ years working at companies of all shapes and sizes in Norway and Sweden, and with the exception of one 12 month stretch (working for an American ironically enough) all my bosses have been fine-to-great, and I've never had a real clash with any co-workers. And even that terrible American boss I had wasn't "inhumane mental torture".
Me too. I have over 15 years of experience both as an independent contractor and employee (roughly half and half) and have only once worked an 60+ hr week. And have always had bosses/clients that valued my input and my efforts.
It's possible. It seems a lot of businesses I've worked for in the US really just don't have their shit together, or they have some weird "business fear" or paranoia that really impacts their employees in a bad way.
In my over 10 years as commercial programmer I never had bad boss or torturous team members (apart from one angry inept guy who asked way too many basic questions when he was expected to pull his own weight and didn't last long).
That might be atypical because I spent more than half of my time freelancing which gives you great freedom in steering clear of harmful people and confidence to leave any employment when it stops being benign.
I know it sucks, but as a software developer, at least in the Bay Area, you needn't suffer more than a few honest months before jumping ship if it'll make you happier to get out. Then again, I've also had the worst position of my life turn into the best by sticking it out until our team was properly laid off internally.
I think not actually having a boss and being picky about who to hire or work with turns it to 75% good and 25% tolerable for me over a period of 25 years prof software dev.
I think "CRUD" applications are getting an undeserved bad rap.
There's always interesting challenges involved, which sadly gets dismissed as "business logic".
If CRUD apps were really so brainless, there would have been a race-to-the-bottom plethora of platforms/tools by now that allow domain experts to create their own applications.
Another way to look at is that CRUD apps put food on the table for you guys. Be grateful!
CRUD applications are developed brainlessly. They're more challenging than it seems.
It's interesting that people develop CRUD applications in garbage-collected languages because manual memory management is a pain, but they'll gladly expose manual data management to the end user without worrying about analogous data bugs.
If data bugs are important, you need your data management system to have some qualities of a garbage collection system (tracing, reference counting) or it needs to be self-repairing (fill in missing data on demand). This is actually a challenging problem, assuming your data is important. This is why cache invalidation is one of the Two Hard Things in programming according to Martin Fowler.
Interesting. Would love to learn more about these kinds of ideas. Is this something you've been kicking around in your own mind? Or has someone put a more formal framework around these concepts? Where can I read more about it?
I love CRUD apps. I especially love CRUD apps that are so simple that end users love using the app. And the best part about such projects/apps? The data that you collect over the months and years. With properly designed data models, the accumulated data for analytics and interactive feedback is worth gold. Then let's see who calls it CRUD anymore.
CRUD apps are 90% brainless. The only challenge not solved by phpMyAdmin or others alike is UI and nice connections between the data. There were already attempts at generating this 90% just to decorate with UI and additional logic, but I feel it will take some time to do it well. People got burned by GWT and other backend + frontend solutions.
Also "CRUD apps put food on the table for you guys. Be grateful!" is a really broken way of thinking. Salary after a certain point doesn't increase happiness that much [1] so there is no good reason to work on CRUD apps if one doesn't like that and can cover their needs otherwise.
Yet here we are, many of us do in fact work on what could be called "CRUD" apps but no one is actually forced to do it.
When you say "90% brainless" you're neglecting that fact that there are arbitrarily complex rules/requirements behind each of the letters in the acronym "CRUD". Moreover UI and "nice connections between the data" are incredibly rich problems especially when you consider scale, market-- and let's not forget the fact that the fruit of this labor has to make money at some point.
Well said. Furthermore aren't most apps at the core actual CRUD apps? Surely, if we remove all those layers of abstraction that make an app feel pleasant to use, there won't be much remaining that distinguishes it from those CRUD apps. Isn't that the actual challenge?
I find software architecting, developing, and operational troubleshooting to be fun, requires a holistic view of a problem set, requires creative problem solving and more.
I find development an outlet to create (make) stuff. I work at a university on the east coast of the USA and am on a high performing team that has not lost a member for at least 5 years. We love each others talents and respect each other's abilities.
I expect to work full time till I am at least 67 and hope to be able to work part time till I am ~70.
Edit: 62 years old not 63
What languages and technologies do you use?
I run the development shop for backend and the cms and I am the scrum coach for all development work. I am by far the oldest and we joke that I am the resident curmudgeon, but in reality I am a pretty positive person.
I do mostly backend development in the order of priority:
- java 1.8 (love hate) - python (love) - bash (necessary) - php (meh, only as demos for people that don't know how to do something)
We use cloudfront as a cdn and our web is php based. But we have UI developers for 99+% of the pho work.
I wrote a java middleware system 5 years ago that is old and very hard to extend. We are replacing it with spring based apache camel code and routes. Love, love, love apache camel)
Db is Oracle because we have a site license. I occasionally write sql for others that don't know or need to know SQL.
Our CMS is cascade by Hannon Hill. A publish only CMS and we love it. We are 100% in control of all the code that runs in our web. ~140 web sites, ~129 are branded for our university.
Web Servers are RHEL, load balanced by F5 load balancer. Backend XML database is Exist-db (love this as well). Exist-db uses xquery but I don't do any xquery. Apache httpd (love for sites out size of traffic) with Zend Server (love hate but necessary for Oracle connectivity from apache httpd). Yes I could compile our own apache httpd with oracle libraries but that is strongly discouraged by our data center staff.
Of course we use git. HipChat, BitBucket (free private repos for non-profits). I do development on Mac OSX mostly and port. We never have porting problems.
Others use javascript with jquery and angular. No node.js in our shop. SAAS CSS compiler.
I'm sure I'm missing something that that is most of it.
A few months ago, I had an idea for a side project that could lead to a lucrative business. I ordered a used Thinkpad with no operating system from eBay, and off I went, developing the same sort of website I do on a $1,500 MacBook at work. If I already had a laptop lying around, I could have just reformatted it and used it without spending a dime.
When I lost my job in the city and had to move back home in 2011, I didn't have a computer except for an old Windows desktop. I pulled it out of storage, formatted the hard drive, installed Linux and Rails, put my resume on Craigslist, and within a week I had signed a contract with a company as a remote developer. I was lugging that desktop around everywhere -- on trips to visit family, to co-working sessions in hotels, to my new employer's office -- looking just as goofy as I wanted to, but didn't care, I was working again.
Edit: I see my post is gaining upvotes quickly. If any open-source project maintainers are reading this, thank you! My story would not have been possible without your time and effort.
any day of that job was much worse than programming when programming on a good day, but programming on a bad day is much worse than any day of that job ever was.
I think it's very easy for people who aren't working with their hands every day to sit back and talk about the 'satisfaction' you get. You may get that if you go and do it for a day. When you're doing it every day you're destroying your back, knees, your hands end up cut and calloused, and you're exhausted. And the 'satisfaction' probably doesn't make up for the lower pay manual labour jobs typical come with.
Compare that to releasing code 4 times a year. The stuff I'm working on now won't be in production until September.
[1] http://articles.mcall.com/1985-07-19/news/2489404_1_steel-in...
I've done manual labor. I feel when I did carpentry it was more rewarding than software development.
All other mortals are in a way or another struggling. Pulling all nighters(because it's expected), having long periods of stress + burnout.
The advantages I see are that the money is good and that people(me included) love programming. Having a job doing something you love is definitely a blessing. The biggest of them.
For that I get paid a decent salary for my area, get to do a job I find interesting, and without having to live in London.
Plenty of money to burn in one of the most expensive places in the world for many people probably means just that: A lot of money earned but nothing to show for after years of work.
Compared to that you can make a decent living as an engineer almost anywhere in the world and not blow away all your hard-earned money at the same time.
Then, there are almost certainly Silicon Valley companies where you face stress, burnout and dysfunctional management just as you would in your run-of-the-mill enterprise company that merely treats developers as fungible grunt workers.
The thing that many engineers - perhaps more so outside Silicon Valley - don't seem to get is that they don't have to put up with that kind of abrasive behaviour. That's the most important privilege that comes with this profession nowadays: You basically don't have to struggle to find a way to make a decent amount of money as much as other people do.
If your work environment is a Dilbertesque nightmare you don't have to just endure that until you retire (or drop dead due to stress, whichever happens first ...). Opportunities are a plenty, not just in Silicon Valley but almost everywhere today!
1. The multitude of small wins that you get throughout the day as you solve problem after problem, all from the comfort of your chair while you drink coffee and listen to music.
2. Creating something from nothing, not unique to software engineering but it is super satisfying to see something that didn't exist before start to form in front of you.
3. Whenever I see some one do data entry or some other laborious task, that I can automate in under 15 minutes, it makes you appreciate the fact that I know how to solve this problem in a more efficient way. People dismiss this because they don't understand that it takes me 15 minutes to write a program that inserts 1 row or 1 million rows, the work stays the same, this is not true for manual labour.
The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination. Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself.
The one thing I can't argue with is the money. Everything else has been highly volatile.
Dumb luck on my part? I don't know.
That might be atypical because I spent more than half of my time freelancing which gives you great freedom in steering clear of harmful people and confidence to leave any employment when it stops being benign.
There's always interesting challenges involved, which sadly gets dismissed as "business logic".
If CRUD apps were really so brainless, there would have been a race-to-the-bottom plethora of platforms/tools by now that allow domain experts to create their own applications.
Another way to look at is that CRUD apps put food on the table for you guys. Be grateful!
It's interesting that people develop CRUD applications in garbage-collected languages because manual memory management is a pain, but they'll gladly expose manual data management to the end user without worrying about analogous data bugs.
If data bugs are important, you need your data management system to have some qualities of a garbage collection system (tracing, reference counting) or it needs to be self-repairing (fill in missing data on demand). This is actually a challenging problem, assuming your data is important. This is why cache invalidation is one of the Two Hard Things in programming according to Martin Fowler.
I love CRUD apps. I especially love CRUD apps that are so simple that end users love using the app. And the best part about such projects/apps? The data that you collect over the months and years. With properly designed data models, the accumulated data for analytics and interactive feedback is worth gold. Then let's see who calls it CRUD anymore.
Also "CRUD apps put food on the table for you guys. Be grateful!" is a really broken way of thinking. Salary after a certain point doesn't increase happiness that much [1] so there is no good reason to work on CRUD apps if one doesn't like that and can cover their needs otherwise.
[1] http://content.time.com/time/magazine/article/0,9171,2019628...
When you say "90% brainless" you're neglecting that fact that there are arbitrarily complex rules/requirements behind each of the letters in the acronym "CRUD". Moreover UI and "nice connections between the data" are incredibly rich problems especially when you consider scale, market-- and let's not forget the fact that the fruit of this labor has to make money at some point.
Early retirement.
What do you mean?