It has its downsides of course: getting a TS security clearance can be stressful, but that goes away afterwards; not being able to tell your SO what you do other than high-level stuff; career advancement and progression can be a long process and you basically know where your salary is going to go when you first start (because it is standardized); and so on.
So if you're the actual do-the-work peon instead of someone in any of the several tiers of useless middlemen, you work regular 8 hour days, get 10 or 11 paid holidays, and when you get home you are simply done with work until the morning of the next workday. It does not matter much if you do your job well or do it poorly, because there are so many other people working on it that you will never get recognition for a job done well, nor will you get any blame for doing it poorly, so long as it does what it says on the box.
The deadlines also vary by contract, but as every layer of middlemen adds its own padding, it wouldn't be remarkable to have two years to develop yet-another-CRUD-app with zero scalability, compatibility, or interoperability requirements.
No one doing the actual work is a direct government employee, because the uniform pay schedules are completely incompatible with industry norms. The government employees are simply there to make sure the contractors do what is required.
The net result is that you can get all your work done in just 2 hours and look busy for 6, or amble through it at a sloth's pace, gold-plating everything, achieving 100% test coverage, using ordinary software as a teaching lab for industry best practices, and such.
There are plenty of downsides, of course. The work is never glamorous, and you never really have much say in what you do or how you do it. You have zero job security, as you could be out of work if the wind changes direction in Washington, DC. The codebase will always be complete garbage when you are first introduced to it. The unimaginative and slow environment is not stimulating, so you absolutely must have a hobby or side-project that can engage you mentally outside of work.
These are the same downsides you see in the private sector.
Have yet to encounter a contracting environment where is is true. In fact, I was explicitly told that since I was salaried I was expected to put in whatever work it took to make deadlines, despite only putting 40 hours down on my timecard. Considering the facility I worked in had a DCAA office embedded in it I find it hard to believe the government did not know this was going on.
In reality, whistleblowers always get screwed. You would have to extensively cover your own ass, and gather evidence that absolves you, specifically, of wrongdoing first.
If you are reporting time worked as anything other than the actual number that you were working, that is illegal. So alternately, start reporting the actual hours worked. If your employer makes an issue of it, tell them that you will need a signed, written copy of any order they give you that instructs you to violate the law.
If you get fired, you can retaliate by getting someone sent to jail.
Furthermore, our government customer didn't care as long as they got their deliveries on time and as cheaply as possible. I know in theory a program office can't lean on DCAA, but in practice (especially considering the clearance situation) I don't know if the PO would obstruct such an investigation. After all, from their POV getting what they want for less is not fraud.
The DoD inspector general hotline is (800) 424-9098 or http://www.dodig.mil/hotline/hotlinecomplaint.html .
The GAO fraudnet hotline is (800) 424-5454 or https://www.gao.gov/cgi-bin/fraudnet.cgi .
It's possible we're in different countries, though :-).
Some companies observe different holidays, such as by adding Christmas Eve and the day after Thanksgiving, and removing Columbus Day.
There is no such thing as public holidays in the US. Some days are bank holidays. Some days are school holidays. Some days are federal holidays. But there is no law that requires any employer to give all of its nonessential employees paid time off on any particular day. The only sort-of-exception is that an employer can't prevent someone from voting on Election Day, but that does not have to be paid leave.
Wal-Mart, for instance, has only 5 paid holidays: Easter, Memorial Day, Independence Day, Thanksgiving, Christmas. (Note that Easter is always on a Sunday, a time when many people already have a day off from work.) And if you get holiday bonus pay for working on those days, your hours are rumored to be cut afterward to compensate.
Some companies are also generous enough to allow 80 additional hours of paid time off every year, to be used as either sick leave or vacation days.
When he leaves work at 5pm he actually can't access his work email. Nobody can send him anything from work on an unsecured line.
When he leaves work at 5pm on a Friday, nobody can contact him about work related things until he is on site at 8am on Monday morning.
He's a senior level unix admin. That can't ever be paged. I'd say that's pretty okay.
A bit of a simplification maybe, but as a lumberjack there are N+2 moving parts you need to care about, the saw, the tree and N coworkers in the proximity (N < 10) (if there's a moose and I catch it with my falling tree, it doesn't count as an accident, it counts as a bonus). With software there are thousands of moving parts and you can be pretty sure that no matter the amount of testing and code-reviewing, the parts will move in new unexpected ways once they reach the customers. Besides as a lumberjack when you leave work you leave work. You only have to worry about not killing someone during your working hours.
TLDR; its the passion for creation which drives any job.As a programmer having things setup in hours or weeks and then seeing your product being used by a percentage of the 3 billion people[3] who use the www.It brings a hell load of satisfaction in me.
[1]:http://hello-world.io [2]:http://money.usnews.com/careers/best-jobs/plumber/salary [3]:http://www.internetlivestats.com/internet-users/
Most gardeners, plumbers, construction workers etc. are NOT artisans. They are just normal people trying to get by as best as they can with the means that they have. They often have lower level of education etc. etc. This is the real world. Not to mention that most programmers don't actually like programming... it's just the myth perpetuated on these (and other alike) boards. These are 90% of programmers that aren't on HN etc. They just don't care. They don't love programming at all - it's just their job.
This passion for creation is great - but it's simply too idealistic. Most people hate their damn jobs and hate it mostly because of how exhausting it is to make not very much money.
I worked at Lowes in college hauling lumber and I miss it dearly (rose colored goggles and all). I was in the best shape of my life, I didn't think about work (lumber?) at home. It was a simpler life.
That sort of work can really wreck your body as you get older.
Ive toyed with the idea of buying a little house in south europe, cut my expenses, work IT part-time/remot and have some land to grow stuff on.
this is exactly my point
I worked at a car wash (vacuuming, drying cars, etc.) for 9 months when I was 15, and I loved every minute of it, despite the fact that it was very laborious. I had many jobs in the year before that, most of which were inside without much labor, and I hated each of them.
Then, I framed houses (first 3 months were basically just carrying things around and making cuts for others) for a year when I was 16, and it was a blast, as long as it was warm outside. However, what was not a blast was making $7.25/hr. I felt great though, super healthy from all the lifting, walking, climbing, etc. The only non-monetary negative was cold weather; swinging a hammer in the cold is no bueno for anyone.
I also did landscaping at 17... for one day. I'm not going to lie. Landscaping is mega hard work, and the 3 Mexican men I worked with put me to shame in less than 6 hours, despite my frequent visits to the gym and +10 years of youth I had on them.
Now, I write code. I love it, but I absolutely hate being in a chair, and standing while I type is not appealing to me. I work out for 45 min every day at the gym after, but it doesn't make up for all the cave-dwelling I do.
In summary, I think that labor is usually really rewarding, even when you feel pooped at the end of the day, but certain labor jobs push the envelope a bit too far to be called "rewarding".
Do you know people who do that kind of work? I spent three years working with a decent sampling of them. Sure, some feel that it's drudge work and that they're stuck doing it for lack of options. They get through their day doing the minimum necessary - you can find those types in our field as well. But a lot do take real pride in what they do, and in doing it well.
Of course many if not most would take an office job for more money if they opportunity were there - but that doesn't mean none of them derive pleasure and satisfaction form the work they're doing.
What fantasy world is everyone living in that they love their jobs and derive pleasure from it? What 1%'s of gardeners are we talking about here? I assure you 99% of them would rather not be gardening.
It's very likely if you are doing a physically laborious job you are making very little money, struggling to feed your family, give your kids the spoils they want, your wife is mad that you can't take her on vacation etc. etc.
Granted, it isn't that physically demanding. The biggest amount of labour I find is repairing/modifying equipment, and that comes with interesting problem solving challenges, which my programmer mindset tends to enjoy.
Still, I can see why gardening would be seen as appealing.
> your wife is mad that you can't take her on vacation
Why would anyone get mad about that? My wife is a grown adult, she can pay for her own vacation. Farming is my vacation.
All I can say is that you are incredibly lucky if this is a true statement.
of course physical labor does not pay as much, as long as the pool of workers is significantly larger. Doesn't mean that some folks would choose another career path if other fields would pay as much as software engineering does.
You say narrow - I say broad. For most people the 'job' they do is just a thing that brings money in. They have no feelings towards it - it's just a thing they do. They are more concerned with their family, their relationships in general, how they are going to support their kids, how are they going to pay their damn bills etc. etc.
Under this condition I find it hilarious for someone to justify -- sitting from their computer screen with an IDE open on the other monitor no doubt -- the fantasy happiness that can be had from doing a lower paying and physically more challenging job. I don't know gardening, but I do know construction, intimately, and imagine that gardening as a profession is not too entirely different. Most people who do these jobs are not doing it for some fantasy happiness. They are doing it out of necessity.
This is almost entirely due to a severe lack of perspective.
Yes, they would no doubt prefer their high-paying job over a minimum wage job. But that doesn't mean that they no longer have any right to be unhappy with their lives. This is exactly the point of the hedonic treadmill[1]. There are happy people with rough jobs and unhappy people with great jobs.
[1]The hedonic treadmill, also known as hedonic adaptation, is the observed tendency of humans to quickly return to a relatively stable level of happiness despite major positive or negative events or life changes.
Glass half full vs glass half empty. The hedonic treadmill has nothing to do with it. It's about being thankful and making the best of things. That's the antidote.
However you look at it being a programmer in today's society has the potential to give you an amount of choice and wealth enjoyed by very few other industries. You can make your own luck by simply being motivated enough to learn, and the initial outlay to create a massively profitable business is tiny compared to many other fields. So make the best of it. You could work for 3 months a year and do what you love for the other 9.
Are you really telling me you can't make that work? It is about perspective.
I'm saying that having a job like this doesn't mean you ought to be happy, anymore than being rich means you ought to be happy, as is well known.
However there are a few topics I consider essential... operating systems, algorithm runtime/performance, data structures, basic software engineering/design patterns, memory management (seriously, everyone should have a course in C or C++) and functional programming (like Haskell).
Even hacking away at a PHP or Node server, there are times when a bit of knowledge of Big-O runtimes can save you from creating a script that never finishes.
If you can afford it, I'd recommend pursuing a formal route. It exposes you to a lot of ideas and ways of thinking that are hard to get in practice. After having programmed for around 4 years now, I often wish I'd studied CS.
In lieu of that, I think Udacity's nanodegrees programs are probably a good way to end up in a paid position relatively soon.
(I'm assuming you're looking to break into web programming. I can't speak for other areas.)
A lot of devs even at a mid or higher level have little curiosity for the theory side of things, and eventually you'll run into problems that require knowledge of it, so being enthusiastic (and a bit self-starting) in that area pays dividends in my experience even if you're not the most experienced dev going for a job.
The only caveat is that both were/are small companies, so no HR apparatus to go through.
Have some idea what you're doing. Talking the talk is great, but you must be able to walk the walk. Apply to everything that sound like you can/want to do it, even if you don't technically meet the requirements. Those are mostly for HR pre-filtering since HR doesn't really know what they're talking about in 99% of cases - they're just looking for keyword hits.
When applying without a CS background how tough are the technical interviews? Do they tend to expect more or are they more lenient and look more at fit and ability to grow?
It's very rare, in my experience, to be asked a pure CS question in the interview. For some positions you may be silently expected to have some degree of familiarity with CS concepts, for other - especially entry-level - positions you don't need CS knowledge at all.
Being able to produce working and good looking code is all most companies want from fresh employees, I think. It's unfortunately still hard to find people with that skill, but if you have it you can learn everything else.
In short: apply everywhere, go to interviews and don't be afraid. You'll be pleasantly surprised (I hope).
So, from my perspective, if he would have known the tools, basic concepts, and had taught himself more, he would have been a hire. Otherwise, he just wasn't self starting, and really wasn't eager to learn, or he would have come with more ability.
He's also a vastly different person than I am, writing code is not a passion of his, while it is of mine. I'd be writing code whether or not it was my job, while he'd rather be doing other things.
Yeah it sucks when your manager puts heavy deadlines on your team, or having to do things you don't necessarily agree with, or navigating corporate politics, but at the end of the day it's the best. I don't come home physically exhausted, I don't make shit money, and if I ever end up in a job I don't enjoy, I am able to find a new one fairly easily.
I think it's easy for programmers to hate life sometimes. Most people who are good at this line of work started doing it because they enjoyed it before it was making them money, that's how it was for me. Sometimes I miss haphazardly stringing code together to make something fun, but at the end of the day being a programmer has made me feel fulfilled.