Ask Slashdot: Minimum Programming Competence In Order To Get a Job?
First time accepted submitter Wisecat (3651085) writes "So we all know that computer programming jobs are hot right now. Heck, even President Obama has been urging Americans to learn the skill. But all of us in tech know that not everyone can hack it, and what's more it takes a while to learn anything, and keep up your skills as technology changes. Add to that the fact that companies (and their hiring managers) are always looking for 'the best of the best of the best' talent, and one starts to wonder: just how good does one actually have to BE to get hired? Certainly, there must be plenty of jobs where a level 7/10 programmer would be plenty good enough, and even some that a level 5/10 would be enough. And perhaps we can agree that a level 2/10 would not likely get hired anywhere. So the question is: given that we have such huge demand for programmers, can a level 5, 6, or 7 ever get past the hiring manager? Or is he doomed to sit on the sidelines while the position goes unfilled, or goes to someone willing to lie about their skill level, or perhaps to an H1-B who will work cheaper (but not necessarily better)? I'm a hardware engineer with embedded software experience, and have considered jumping over to pure software (since there are so many jobs, so much demand) but at age 40, and needing to pick a language and get good at it, I wonder whether it would even be possible to get a job (with my previous work experience not being directly related). Thoughts?"
Given how many 2/10 I see in my everyday job life, it can't be that hard.
My best employees are the one who get stuff done and are mostly self-managed.
When i give them something to do they don't say "hum i never worked on this tech before, i'll try". They say ok and the work shows up done on time.
40? Whatever. Lots of people in their 40s and 50s and 60s have mediocre jobs writing 200 lines of code per quarter in some large corporation. My team of ten has only two programmers under 40, and just barely (38 and 39).
Just dig in and apply for jobs until you get one. Work as hard as you can at being good at your job.
I am #10 !!
Number 10 is good. Right?
That seems to be what most of the programmers around me have.
So we all know that computer programming jobs are hot right now.
Only if you have an H1-B visa.
SJW's don't eliminate discrimination. They just expropriate it for themselves.
It depends on the job, industry, and type of work. A basic CRUD web app that's not going on the public internet you could perhaps get away with level 5/10.
> we all know that computer programming jobs are hot right now.
I certainly don't. Also this submission is bad.
...who only knows HTML, CSS, and JavaScript will be posting in 3....2....1....
.
Prisencolinensinainciusol. Ol Rait!
Sysadmin scripting? Build tools control? Data modeling? UI development? Maintenance and enhancement on a ERP or SCM system? So it depends on what you are targeting and the demand. No one wants to support COBOL. Everyone wants to do mobile apps. So how do you differentiate in each of those areas? A 2/10 in one area may be considered a 7/10 in another area. That would be the better question. Please resubmit your question with a better statement of goals. Then we may be able to help you.
putting the 'B' in LGBTQ+
Based on my years of work, skill has very little to do with it. It's all about salesmanship. Can you sell the candidate for a given position to the hiring people, or do you have a contact to sway to hiring VIA networking.
a 10% skilled programmer can be identified with simple interview questions. A 20% programmer can be identified with a little more effort. Beyond that? Really hard to differentiate in an interview. You can measure how good they are at language trivia. You can measure there ability to solve easy problems quickly. You can identify basic levels of sanity and social competence. But programming ability? You'll figure it out after they've been working for you over 6 months. So no, you don't have to worry about being a master programmer to get a job, you just need to be a 40% programmer and know how to interview.
People often ignore their non-programming skills. Get fired from a manufacturing job? Learn to code and try to get a job coding the software that runs the machines that took your job. Your industry xp will be a plus. Work as an orderly in a hospital? Code for medical machines.
excitingthingstodo.blogspot.com
I wouldn't be excited about hiring anyone for any job who was looking at acquiring the bare minimum skill set.
I fancy myself a "knows a LOT of languages and knows how to adapt". So I can sit down in front of a machine running a completely in-house language, and be proficient in it in less than a day, very skilled in under a week. I think this is more important than already being proficient with any given language. Having a very broad background of languages is very useful, because there comes a point where a new language won't really have any surprises you're not used to managing.
Things change so fast with computers, how fast you can adapt is usually more useful than how much you already know. Experience goes stale so quickly, only adaptation remains valuable any distance out into the future.
So this makes it a little tricky to judge "programming competence". If you simply sit them down and see how well they can code in what you use right now, you're not necessarily getting a good measurement on how "competent" they'll be at it in a week. I'd say "throw something at them you know they have ZERO experience with, and see how they react". A competent programmer should be able to have 80%+ comprehension on any code you set in front of them. They should also be capable of very simple edits, and maybe even a little debugging. Have an experienced dev sit down beside them and then give them a simple challenge, with the dev as their assistant. The questions they ask the dev will tell you a lot about their level of competence. Get the dev's input on this later too.
I work for the Department of Redundancy Department.
Statistically speaking, aren't only half of us between 6 and 10, while the other half are 1-5?
Anecdotally I would say that yes, a "less than 7/10" can, and does "get past HR". I've worked with some stinkers. Your 10 years of Java does not necessarily, by itself, make you a 9/10 versus my 2 years of Java, does it?
I would also ask, how does filling a programmer role (with a range of talent) differ from filling other roles? Would the marketing department ever purposely hire a 2/10 or even a "good enough" 5/10?
Specific to the question and my experience with hiring (and being hired), it's a bit of a nebulous equation that contains at a minimum a combination of years experience (many times regardless of the quality, or lack thereof, of those years) and a more technical interview process, likely to include on-site or at least near-point-in-time testing. With a sufficiently technical interview process, and assuming the hiring company has the luxury of time to search, if they require a "7/10" star, then it's unlikely to get past HR based on any other abilities. If we believe, as is being reported more often, that there is truly a shortage of programmers (of all skill levels), then, like many other worldly analogies, I would have to assume that the demand will force the lowering of the entrance bar.
WTF is a "X out of 10" programmer? Is there a stamp on me somewhere I can check to see my level?
>> just how good does one actually have to BE to get hired?
Depends who you know, really. (Or whether a posted position is just legalese so they can get their pre-approved candidate through, etc.)
>> perhaps we can agree that a level 2/10 would not likely get hired anywhere
Actually, these are the people I would typically talk up to get other companies to "steal" - saves termination expenses.
Well, actually, I have quite the opposite problem. Somehow I found out that to get a job, I have to pretend to be less qualified. :(
The most job offerings I see are for qualification level I had 6-8 years ago
So, dont worry, there is plenty of jobs out there you can get (if you have at least some experience)
Look, we want you to express yourself, ok? If you think the bare
minimum is enough, then ok. But some people choose to wear more and we
encourage that, ok? You do want to express yourself, don't you?
You only need one 9/10 to organize the project and avoid pitfalls.
Everyone else can write the bog-standard code that doesn't improve between someone with a 5/10 and a 10/10, or at least not by any metric measurable for business logic.
So they offer the 7/10s half what the 9/10 makes, and hire on a 5:1 ratio.
Futurist Traditionalism
The real demand isn't for programmers, it is for cheap programmers.
Your scale implies one set of skills, and there's certainly more than that! As two important ones; the ability and desire to learn, and the tools you already know. I've worked with a lot of junior engineers who didn't know much, but were good at picking things up and moving with them. I've worked with a lot of senior engineers who knew lots of tools and theory, but weren't very good at picking up new things. (I've also worked with junior engineers who were terrible, and senior engineers who could pick up new things faster than me; it's a mix.) To get hired, you need to convince the hiring manager you can do the job, can do it better than the next guy, and can do it at a price they're willing to pay. Right now, there's simply not enough developers who can do the job, so even if you're not great but still get the job done and don't seem awful to work with, the determining factor is "did someone else better apply?"
While programming competence often play a role and can sink an interview, social skills tend to play the dominant role in both getting an interview and getting hired. Interviewers will generally find ways to rationalize their choices, either highlighting or downplaying 'signs' they find in the person's work history or test results, but what really ends up mattering is the connection one makes and how good an impression one leaves.
What I like to see are the following:
1. Statistics knowledge
2. Excel (pivots, charting, VBA, etc.)
3. SAS/R/SPSS (in order).
4. Unix shell scripting.
5. Some sort of data visualization tool usage (e.g. Tableu)
---
We are currently looking for analysts and the market is tough. We take people from all walks: CS, social sciences, Stats/Math/Econ/Finance, etc. The Analytics market is continually growing and in desperate need of people who are competent until higher education catches up and starts putting people out with a good mix of CS, Stats, and Business knowledge.
Get into Analytics IMO, the pay is great and the work is pretty fun.
Having worked with and managed a number of programmers over the years I've had the privilege of working alongside a number of truly gifted people. But for every rock star there are far more mediocre and inept persons for the role. On the lower-end of the quality I've seen work so shoddy that it was insulting - those people don't last long in the role but might be suitable for other positions. We try our hardest to retain the top talent but sometimes they just like to wander from project to project for their own interests. Thankfully they seem to like us enough that they always consider coming back after they've had their walkabout.
Not starting a religious war here, but the only pattern I can offer is that those lacking any formal education (self-taught/hobbyist) and those whose primary skill and experience is PHP have had the most disappointing performance. Those among the best performers stay current and attend technical conferences & seminars on topics that interest them. One particular symposium that yields great results for our team and projects has been No Fluff Just Stuff YMMV.
First of all, let me be the one to say that getting past the HR department is independent of skill. Simply because they usually know LESS about programming than you. I don't know how much you know, but I can say with some credibility that if you ever had to do anything with computers other than turning it on, your chances are high that you're a computer wizard compared to anything that could sit in HR.
That aside, you do have some valuable experience and I'd build on that: You worked on embedded hardware. Yes, I'm dead serious, build on THAT. We're getting more and more "smart appliances", the next big thing in IT will probably be how to manipulate all the appliances in your home with your smartphone or your tablet. Let's face it, we've pimped TVs and got people to buy a new one every other year, at least. But their fridges, microwaves, washers and dryers sit there for years and years without being replaced. A marketing nightmare. The next big thing must logically be to get people to throw those out every other year to buy something better, and "better" in this case can only mean that you can somehow network them. My suggestion would be to get on that train.
If you don't want to be the guy designing and developing the hardware/firmware for the appliances, there will most certainly be a spot for a software developer for mobile devices who knows the "other side", read, the hardware in the appliance, and how to string them together sensibly. If you have any kind of experience with WPAN in any of its forms, I'd say you're going to be very popular.
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
For a full-time software development position, you need to be at least 5/10. Anything below that, and you will inevitably cause more issues than you fix. Note that most people are at least 1-2 points below where they think they are.
5/10 is your 'average' developer that can get the job done, but produces average quality code at an average speed.
6/10 is 'above average', does everything that a 5/10 can, but better.
7/10 is a good, solid developer, that can work independently and produce quality code.
8/10 guys are going to be very strong technically and are the ones you want designing systems and writing critical components
9/10 and 10/10 are the Carmacks, Stroustrups, etc.
My theory is that developer competence is a logarithmic scale. As you go up the scale, you will be able to solve more difficult problems, in less time and with better quality. A 6/10 is 2x as productive, and can solve more difficult problems than a 5/10. A 7/10 is 2x more productive than a 6/10, etc. At the extremes, given a large enough and complex enough problem, a 10/10 is ~30x more productive than a 5/10!
With that in mind, you need to be atleast 5/10 to get hired. Personally, I would pass on 5/10s and hire 6/10s (and up) and train them up.
First off, this reeks WAY too much of that bullshit stock question: On a scale of ten where would you rate yourself
8. Everyone is an 8. If you're not an 8, you've probably got issues of one type or another.
As for the actual question, you don't have to know jack fucking shit to get hired by an incompetent manager, dodge all responsibility for as long as you can, and then bail. It happens. People with literally zero experience show up, talk a good talk, and land jobs. Their resume is full of lies and the company doesn't verify.
I know of one case where the guy was desperate for a paycheck and landed an IT gig. During the day he logged everyone's problems, but he was "real busy putting out fires, I'll get to you tomorrow". After work and at night he would learn the shit out of the thing he was asked about and he'd come in fix the thing the next day. He's lead dev at a company now. Eventually you don't have to fake it.
Now, anywhere I work, and have any sort of sway over the hiring process, I'm going to demand that you at least pass a simple coding quiz to weed out the worst offenders. My manager actually asked me for such a test. I pulled this out of my ass. What do you guys think?
In the language of your choice or in pseudocode please provide a solution to the following stub: /*
reverses the string for every sentence.
Ex input: “My test. It works ok.” 21
Ex result: “test My. ok works It.”
*/
void reverseSentence(char* str, int sizeStr)
{
}
After he gets done ask:
-What are the discrepancies in the requirements as stated?
-How would you resolve them?
-What are the undefined cases?
(“reverse the string” is not the same thing as reversing the sentence structure as shown in the examples. And it doesn’t really define what a sentence is.
It says nothing about what to do when there are no periods, or when sizeStr is zero.)
It doesn't really matter how you solve it, as long as you spot the giant glaring pit-trap, and provide some reasonable code to perform what you wanted it to do.
In the end it's actually more a matter of what keywords your have on your resume, how well you can schmooze with HR types and office drones, and how cheap you're willing to work. Sorry if that comes off as cynical, but I'd rather be cynical and true than naive and wrong.
Your actual competence and achieved competence may vary.
You may be a good 9/10 however you may achieve 2/10 in your job because you are not given the time/resources to do any better.
Shit is complex.
+----------------- | What is the question!
Nuff said
Comes to show you need to stay current in tech if you want the big bugs.
With a nick of "Billy Gates," it makes it even funnier.
In my experience, there's no such thing as a 5/10 programmer. If a person has good fundamentals (decent math and analytical thinking), the right attitude, and the desire to learn and improve, then while he might find himself at the 5 mark temporarily, he will eventually get to the high mark. Without the right attitude, he'll be stuck at 2 and generally do more damage than good.
Warning: lots of terms in quotation marks here because there are no agreed-on definitions for those terms.
In we and mobile development, there is a lot of demand for developers and there are not enough "senior" developers to go around. That means there are opportunities for "junior" and "intermediate" developers to work on teams where they can gain experience and work their way up. It also explains why so many intensive developer training courses have popped up everywhere.
And why shoot for 7/10? That might be a place you live for a while, but with a little discipline and lots of practice, I feel many people have the ability to be great programmers. For most web development, having a great CS background isn't really all that useful.
Having other experience is often (almost always) useful, especially if you have knowledge of the domain you're working in.
It's never too late to start. I've had people well into their 50's come to the Rails Girls workshops I have organized.
I think if you like coding and can learn from what you find on Google... You would probably pass my interviews.
Your age does not play as large a role as you may think. In 2004, I had 13+ years of experience in pure software on the odometer, but - due to mental illness - first lost my job, then became homeless. I did the only thing I was still able to do: I walked. All over Europe. Homeless, but not giving in. Once back in my home country, in 2006, I managed to settle down again: the clouds in my head had cleared, and a large aerospace constructor gave me chance. I was 39 years old, and it started a great ride in my career, one that I am still on.
What I did, you can do. As to the language: there is not really a problem discernible to me. You probably already master C, or a C-like language. The jump to C++ is not that hard, in that case. Otherwise, you might want to consider ADA, a stunningly elegant language that could very well land you jobs with e.g. Rockwell, Boeing etc. etc. ( assuming you are in the USA ). Good luck, and do not forget: it is not your success that counts - it is the fact that you keep trying.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
I lived in California after the dot-com crash, and the field was tough-going for a few years. I had to take some out-of-state contracts with sleazy agencies to pay the bills. Fortunately I had some "legacy" knowledge to fall back on compared to the web-only developers, who had to compete directly with other webbies recently dumped from the failed dot-coms.
Remember, ups-and-downs are likely and the field changes fast. Being good enough to work in the field during the boom years may not be good enough for the bust years, and you could wind up with the wrong skills at the wrong time.
In my opinion, for a longer view, pick a field you are good at rather than one that appears strong now.
And people skills are always good to have and/or hone because that reduces the chance you'll be off-shored or automated out of the job.
Table-ized A.I.
I too have been looking for jobs as someone who has a decent understanding with both the hardware and software side of a system. After applying for countless jobs and getting only one interview, I can't help but think that companies are hiring people unless you are fresh out of college (I graduated last year with an EET, but am currently employed as an Electronics Technician) or have 5+ years of direct experience.
I guess my suggestion would be to stay away from "Software Engineering" jobs unless you definitely have experience in that field. I would suggest looking into the Embedded Software/Firmware Engineer field. There are lots of good jobs for people who have experience with hardware/software.
As far as language, you can't go wrong with C/C++. It is amazing the number of jobs that require having competency in those fields. I would also look into Arduino, PIC, and Xilinx platforms. Loooots of jobs that use that/similar technology and are less brutal to get into.
Having interviewed plenty of "programmers" who had jobs, the bar is pretty low.
There are plenty of "programming" jobs out there that are not really programming
jobs by my definition. Many "programming" jobs are updating a webpage for
a department occasionally, generating some random report, helping someone
install a printer, creating an excel macro, etc... The minimum competence to
"get a job" is very low. The question is: What kind of job do you really want?
I don't know what it is with hiring managers. I've been submitting to jobs that I should be hired for. In one instance in particular, I submitted a job app at Zenimax where they were looking for a DevOps person with a string scripting background. Perl, PHP, Python, JS were all on my resume, even including Python embedding. They said my experience was "thin". I don't know how you an be "thin", when you've embedded Python into C apps, it requires a pretty thorough understanding of Python internals. I've been out of college 13 years now, and I've done everything except GIS, 3D, and mainframe stuff like SAP/PeopleSoft. I've done .NET, Java, C++, full-stack, (Full stack in C++, Python, .NET, Java) I don't consider myself a .NET expert or a Java expert, but I wield these languages without any struggle. Have I done JNI? No. Have I done C++/CLI yes. I've even done project management (in house and international) So I think I'm pretty experienced, but hell if I can get hired. I wonder if all my experience just makes me look "thin". But they passed me over 3 times. Now, they deserve whatever crappy candidate they hire.
These days, I think I need to talk to the actual dev people and not the idiot in HR.
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
I've worked in call centers where programming wasn't in the job description, yet in all of them I wound up programming my own tools because the tools provided by the companies were substandard (well eBay's were all cribbed from previous employees, the tool they use the most was written by people who weren't hired as programmers to begin with.)
So I'm of the opinion that even a 2/10 programmer can be a 7/10 programmer if they aren't hired into a position where programming was in the job description because it's often the people who actually do the work who need tools that they can understand. Tools written for CSR's by programmers have some of the worst designed user interfaces (eBay uses something called KANA in which the web tool is a total piece of crap, slow and when I viewed the source code, it seems like every page was being generated by the server and all the javascript was responsible for was the UI buttons, but it was begin generated on every page, so it was some of the slowest miserable crap I ever had to use. Yet the older Native win32 KANA tool was lightning fast and preferred by staff who knew about it. )
One of the other call centers I worked for, a "knowledge base" system came online written in Java, was miserably slow. The staff who knew better, used the static web pages that predated the crappy knowledge base. This same call center upgraded (or should I say downgraded) to a CRM software for their GSM network called SIEBEL. This program was a royal piece of crap and slow, so slow that they wrote a static web page just to do bill payments that they outsourced to India.
See this is the problem with large companies (AT&T, eBay/Paypal, Comcast, Verizon, Google, Apple, Dell, HP, GoDaddy, etc) is that there is not enough communication between the people at the "front line" of customer experience that care, with the people who actually write the tools they need to use. Crap just gets dictated "ooh this Siebel program is shiney, let's drop a fortune in licensing it, even though it's woefully inappropriate and incompatible with what we already use"
Like I sound really grumpy, but it comes from being "forced" to learn a piece of software that was 10 times slower to actually use that the previous software. Between myself and a handful of people at these call centers, we wrote our own tools with whatever macro language was available on the machine (MS Word/MS Excel, WSH, Macro Express, etc) having to smuggle in/out algorithms since we weren't hired as "programmers" yet the company "owns" anything we create that we don't disclose at hire. The "best" relative experience was eBay, because even though they upgraded to "better" software, they didn't force us to replace what we already used. However the entire data mining bullshit of taxonomy reduced efficiency whenever we had to look up the history of an account.
I fancy myself a "knows a LOT of languages and knows how to adapt". So I can sit down in front of a machine running a completely in-house language, and be proficient in it in less than a day, very skilled in under a week.
I question the timeframe. While the semantics of the language can be picked up in that time, I find it hard to believe that you can pick up all of the system dependencies, the overall design structure, all the dependent components, etc. for a large software system.
I worked in telecom software for a while. When I was hired, they put me through a week-long training course on the proprietary language, another week-long training course on the proprietary debugger, another week-long course on the design of the proprietary OS, another course on the basics of telecom systems, another on OO-programming as used in their product, etc. Sure, some of it was fluff, but there was a lot of meat there too.
I also worked as a linux kernel developer. It's C, so it's not exactly an unfamiliar language. But it took a long time to get to the point where I understood the structure of the kernel, knew what bits were handled where, understood why things were the way they were, and could submit code that was likely to be accepted by the main developers.
I saw 10s of engineers who made this switch. In some industries (telecom equipment, storage) it is very common. I do not understand the question about language - I suppose you can program in C and it is still bread and butter in many cases.
Try to get contract job first. In the past I had good experience with some guys that now are working for http://www.symphonyteleca.com/
The more complicated part is all of the system libraries, the third-party libraries, the "right way" to do things in that language, etc.
...the bar is pretty fucking low. Incompetence rules the industry; everyone is selling snake oil.
I have fielded this question a number of times.
Right now, the job market for developers is not very discriminatory. They'll take anyone they can. That means your barrier for entry is low. That being said, I've done a bit more research, and I can say that the most lucrative and mobile entry level development job you can land is probably web application developer. Not designer, but rather, someone who makes a web-based application 'go'.
With that in mind, you'll need the following skills: SQL, HTML, CSS, Javascript (jQuery specifically, but other libraries are good), and a backing language - probably Java or C#/ASP.NET. You'll also need to become familiar with your web execution framework - Tomcat is big in the Java world, and naturally IIS is used in the .NET world. Luckily for you, there are many resources to learn all these things absolutely free of charge, with huge communities of volunteers helping each other out. So, what level do you need these skills at?
Well, as a new hire - regardless of your skill level - you're unlikely to be given a new project to start on. Likely, your first few months are going to be a combination of learning your company's domain knowledge (like finances or autos, or whatever), and tackling bug fixes and/or feature enhancements. For that you'll need to understand how the programs work so that you can source problems. You'll have to be familiar with IDE's and the debugging capabilities - especially learning how to setup and debug web based programs on your local system, as well as remote debugging. You're going to have to be able to read code well enough that you can translate most of it into english in your head - without having to go line by line until you have to dig down that deep. That means recognizing structures and flow easily (which is why I also recommend you avoid ruby on rails and spring - and maybe even hibernate/nhibernate until you've learned more).
You're also going to need to know enough about a development environment to know how to ask an intelligent question about it. There's a world of difference between "I can't get it to work," and something like "I tried increasing the max heap size, but I'm still getting an out of memory error each time I execute a prepared statement after the first call." See here: http://www.catb.org/esr/faqs/s... . One important quote to take away from this: "What we are, unapologetically, is hostile to people who seem to be unwilling to think or to do their own homework before asking questions." That faq will help you get past the newbie phase without giving up.
So, an unasked followup question, how long will it take to get there? Well, hour-by-hour, you can compress the entirety of a CS degree program into 4 months of 8 hours, 5 days a week, but you won't need all that. I'm going to say that to get there, to really be employable, worst case it'll take about 250 hours of study total. If you take it at a light pace, about 10 hours a week, you should be ready in 6 months.
With today's environment, I wouldn't be at all surprised if you halved that and still got a job, but I would feel bad for suggesting that was an adequate amount of study and practice.
One last important thing that I've only touched on indirectly; you absolutely must learn how to teach yourself. New libraries and frameworks come out every day, and the flavor of the month changes at a rapid pace. At some point, you'll realize that all languages do more or less the same thing, they just have different syntactical sugar, or internal constructs that make a given task easier or harder, sometimes even between versions of the same language. You need to be able to stay on top of those changes, while googling or asking for solutions to odd problems or configuration errors.
Its probably some simple equation that could be written in 3 lines of code but unless someone knows how to do it I doubt they could figure it out, at least not in the few minutes required in an interview.
What is the position? Is it to fill a chair? Is it to produce one-off work? Or is it to produce a larger project that's maintainable for the long term?
It's not simply enough to have some skill: for every bit of skill a person brings to the team, there is the additional overhead of communication with that person. After a point, adding more people to a project is simply not productive and even a hindrance, regardless of the calibre of those people. A small number of great programmers can often outperform a large team, and cost a lot less in salary and benefits.
If someone is 5/10 skilled, that person should spend time to get better at something. Read more books. Watch more talks. Study algorithms, design patterns, anti-patterns, etc. Write more code. Get good at something. I'm not a good C programmer. I like C, but I've never done enough to get good at it (maybe someday). But I built a distributed, fault-tolerant auto-scaling LNMP stack that services thousands of API requests per second, without a rearchitecture, because I studied how to scale and wrote scaling into the system from day one.
Embedded software experience is an in-demand skill. Many programmers can create bloated, slow code, but few can write lean, efficient, and fast code. That's highly valued in the embedded space, of course, as it's needed, but it's also very in demand at scale, because being inefficient costs a lot of money. If I were hiring, I'd look very fondly at someone with this skill, much more than someone who is focused on simply the language de jour. It's easy to find people who can produce code. It's hard to find people who can solve problems well.
I can't speak for every area, but in my locale there are plenty of hardware-oriented startups that have a tough time finding qualified people. The jobs are out there, but I agree the market is smaller than for pure software. One place hardware companies struggle is writing good drivers and application software. Someone who got good at that, along with having the embedded knowledge, would be very in demand.
Be relentless!
I worked for a big telecom company, in the 90s, that hired a senior engineer who didn't know how to use a mouse. He had to call someone over to explain it, as the rest of us watched on in awe.
He got over six months of salary before they finally let him go. He cried over it too, which I thought strange. He obviously had someone else do the phone interview for him, not sure what he was expecting the outcome to be.
I live in the home Amazon and Microsoft. The region is starving for more developers, but it's very hard to land a job. I'm not a prodigy; just a solid programmer, with a Masters. It took it a couple of dozen interviews and a year to get a job. It is going great. Companies here compete to see who can be the pickiest. I heard some one brag once that they flew in half a dozen candidates from Sweden and that only one Swede made the cut.
So where are you looking for work? Every region has its own peculiarities.
Oh, I don't know about that. I'm sure if you want to work on the Microsoft UI or security teams, you're a shoe-in!
I've been looking for a few weeks now, have got maybe ten applications out there, and these are my observations, YMMV. I'm a 40-something trying to break into a new skillset:
Try to learn from every rejection. Why didn't this application get a callback?
Understand that HR is trying to match the skills on your application to what they've been given by hiring managers. If they don't it's bad for their performance review. Also realize, some job listings are bogus, especially in government or companies trying to bring in overseas labor. Don't get bitter - just understand it, in order to help you get what you want.
You're competing with new grads, who are cheaper. I think you may need to address this in your resume/cover letter. I haven't gotten a callback yet but this makes sense to me. I'm in the same boat as you are, as I'm trying to beef up a skillset which I don't have.
It's tough to break into a new field. You may have do some stuff on your own. I keep hearing recruiters talking about 'code on github' and such. Certifications are a possibility, but beware of money pits or study aids which don't help you pass the test. Do some web research on forums about any certification.
Keep slogging. Stay positive. Keep continuously improving your resume/cover letter and keep trying to learn why you didn't get a callback. Try to address those issues. If they cost more than you are willing to pay in terms of price or effort, there's nothing wrong with building yet more experience in your existing career.
I'm suspecting, if I can't get a callback soon, that I'll just need to adjust my sights and try to leverage my existing experience, and hope I can get experience in the new field at a new employer, by trying to get involved with work that involves the new skillset.
Rolling Stones said, "Can't always get what you want / but if you try sometimes, you just might find / you get what you need."
I'm a degreed EE and used to do board-level circuit design (I'm not talking about drafting). Then the jobs dried up so I decided to go back to school for a masters in computer science. I picked Java and learned it well. When I turned 40, I graduated and have had a good job as an application developer for 2 1/2 years. I'm good at it but am still playing some catch-up. I enjoy software development and for me, it was worth it.
> "Thoughts?"
1. Ability to break a train of thought into paragraphs.
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
So I can sit down in front of a machine running a completely in-house language, and be proficient in it in less than a day, very skilled in under a week.
The in-house language implies unusual and specialized applications --- which I very much doubt can be mastered in a week.
It is ridiculously easy to convince yourself that you understand a new language --- be it English or C++ --- and still fall flat on your face when you try to apply that knowledge to a specific set of circumstances,
Yes, I know development is different from IT, but I think we have some of the same issues. I'm finally in a position where I can hire someone to help me with some of the backlog of work, and I'm having a very difficult time doing so. Everyone in my network is either working and doesn't want to leave their current job, and I've only gotten a couple of vague "Well, I know this guy who's been unemployed for a year..." kind of suggestions.
So, going through the usual recruiter garbage dump, I've come to the conclusion that everyone good is employed. I'm also starting to see stuff similar to what was going on in the late 90s -- people graduating programmer bootcamps with no experience, paper certs, etc. I hope the bubble doesn't pop as hard as it did in 2000 -- that was no fun for anyone involved.
I'm looking for a systems engineer, someone who can build out a customer environment in a lab, replicate problems, simulate software rollouts, etc. _and_ document their work and be presentable in front of customers. The only people I've seen so far are in-house IT administrators who can't even spell key items on their resumes correctly. I know grammar isn't a strong suit for some, but it's your resume -- if you can't be bothered to have someone proofread it, you're not going to be able to write clear customer communications. We're willing to train people who look like they have at least the potential to be good at this job, but I haven't even seen that yet. Of the very few whose resumes looked promising, some have been OK, but others are total disasters and I'm not looking for rockstar talent. When someone who has supposedly been s systems engineer for 10 years can't walk through a troubleshooting scenario with me, or articulate at least where they would start looking, that's bad.
For someone in IT or software development, I would say the absolute minimum qualification is good communication skills and excellent troubleshooting skills. You're getting paid to solve problems and communicate these solutions to people who are paying the bill. You need technical skills, of course, but people who lack the ability to write a clear email or document their work kill productivity. There are fewer and fewer positions available for ultra-low-level kernel development, real-time development or other specialties where the communications requirement could be relaxed. Lots of development at least at the business logic and UI level consists of gluing various libraries together, which means that integration skills are also very important.
At a minimum, most programmers today need to be competent with SQL and one server side language (Java, C#, Ruby, Python, PHP, Scala, Node.js). Smaller companies with smaller teams that require fewer people to handle more job duties require "best of the best" type programmers. The constraints on server side systems are the same regardless of language, so it's just a matter of what's popular where you want to work. Rails is in exceptionally high demand right now and there are a lot of free materials online to help you learn. There are also code schools popping up everywhere.
Learning something that's trendy is also helpful because NOBODY has more than a couple of years experience with it, like Node.js. That certainly helps too.
If you really want to do this, get in the door with an internship or a charity project in your spare time. Charities are a great way to see a set of needs and build something to solve a problem, which requires you to understand a lot of the needs of a system as the sole person responsible for it.
The #1 most important trait in this field is desire to learn. You have to enjoy what you're doing enough to want to keep up with the constant changes and new technologies that are coming out. If you do that, you'll go far.
If you don't, you'll end up in a cube farm at a telcom without a lot of mobility but you'll have a steady job as long as you don't have a huge screw up.
"Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
I'm 40, and I've been programming professionally for two years, but I'm currently trying to get a better paying job. I find the main stumbling blocks are inability to "talk shop" well and lacking experience in highly specialized skills. Talking shop convincingly is difficult because I haven't had much experience collaborating with other programmers. I imagine you would have the same problem. Employers expect you to have all the correct terminology flow right from the tip of your tongue. The other issue is that a lot of employers seem to be looking for a lot of experience in a very particular area, which an inexperienced programmer is rarely going to match. You have to program for many years on many different projects to have a good chance of matching what someone is looking for. Age itself, as far as I can tell, is not an issue at all. At least, not at 40. Although I know there's some very vociferous people on Slashdot who will tell you otherwise.
I honestly don't see how a non-H1b person, especially if over 30, should be realistically planning on working as a programmer, at least in the Silicon Valley area.
Who is looking for them? Why have I never been contacted? I'm easily in the top 5-10% of the industry, conservatively.
The relationship between programming talent and programming productivity, at least in complex real-world systems, isn't linear. The very best (top 10%) of programmers can get things done dozens of times faster than average programmers. And it's not just about speed. The very best programmers produce code with fewer defects. They are less prone to making unfortunate architectural decisions that cause problems later. They can find difficult bugs and solve difficult problems that average programmers simply cannot, regardless of time spent.
Sure, there are jobs out there for people with limited talent, mainly involving software that solves simple problems. There are reports to be generated that are too complex for someone without a certain amount of database and software experience. There are relatively isolated scripts that connect stuff together that wasn't originally designed for that. There are the sort of third-tier corporations that need some IT but can't attract top-flight talent. All kinds of stuff that's more complicated than an Excel macro but simpler than a web browser.
Actually whatever level you may have, age is a critical factor: the higher the level, the higher the chances to get a job, but the higher the age, the lower the chances to get a job. Usually the level goes along with experience, which in turn goes along with age [up to a certain limit]. In other terms, to get a job you need a high level, that you get with more experience, acquired with extended work time, which increases your age, and that prevents you from getting a job.
Slashdot, fix the reply notifications... You won't get away with it...
I'm guessing that 10/10 programmers are extremely rare, while 0,1/10 will be common (ordinary people). 2/10 programmers will be like MS Excel "programmers" who do spreadsheet magic. 3,4/10 programmers would make passable batch file or bourne shell scripters. 5-8/10 programmers would be good for most "software dev" jobs. 9/10 or 10/10 are for mission critical, people might die if done wrong style programming.
Isn't that the truth?
I don't code for a living -- in fact, I only work tertiarily in tech -- but I can sit down with a book (or these days, just the internet) and knock out simple working programs in a new language within hours. It can take months to master a core language, of course, but what scares me is that many times my rough code looks and functions like that of those who do it day in and day out. Why, oh god, why do they never write maintainable (preferably self-documenting) code, never refactor, etc? I've had conversations with programmers, talking about issues they've been having at work, and I've occasionally made suggestions that make their jaws drop and go "Holy crap. You're right. Why didn't I think of that." It makes me feel like an ass to say anything, since its not my field of expertise, but come on...
And while I love modern languages with garbage collection -- C# has become my favorite language by far to quickly cobble together a proof-of-concept idea -- I am still a kid of the 80s in awe of those Atari programmers who wrote entire releases in assembler, reordering instructions to cram the program into that last few bits of memory. When I write code, I still try to do so efficiently and memory-consciously; outside of embedded systems, it seems like the philosophy has become entirely that "the fix to bloated code is to add more ram!"
The question isn't about finding programming competence anymore... you can weed out people that can't figure out (or know) a decent algorithm off the top of their head.
The question is a matter of engineering skill: if you can't make an application that's architecturally coherent, properly sanitizes inputs, decomposes functionality, behaves intuitively for the user, anticipates future needs and builds in that flexibility in the API, is easily deployable in your org (or to the client), and all with proper documentation, etc. etc. etc. you are a programmer.
These are all completely different skills than simple programming... it's the difference between wiring a house and designing a fault-tolerant power distribution system that plans for future capacity over 5 states.
We have enough programmers.
We need engineers. It would help if business in general thought of programmers as global data and process engineers, rather than simple wish-fulfillment elves for whatever they want to see on their screen using whatever software their buddy in company X sells.
Only slightly under the 6.3% average for the whole US. Given that - there are 1/2 of all of the 1/10 programmers getting jobs somewhere.
I am going for a fairly static distribution, in reality - I am betting there are very VERY few 9-10/10 programmers (well under the 10% that they represent) and a lot more 3-7 programmers and then a tailing edge of people that just haven't gotten down the path.
I have mod points and I am not afraid to use them
How often are you giving them stuff that they've never dealt with before? It's reasonable to assume that there will be some type of spin up for any project and you might not be aware of certain limitations. If it's in their wheelhouse and you're giving them stuff and getting those responses, then that's a different situation. I've been given assignments that should have been handled by a whole team, with at least a month of spin up and been given expectations to get the whole thing trained, tested, and deployed to over 10000 users in two weeks by myself on top of my regular assignments. I'd say that the knife cuts both way with what should be expected.
I am an automation engineer (some call us tool smiths others use the term SDETs). If I rate myself on the basis of the people who do my work, as a percentage, I am between a 9/10 and a 10/10*. That is to say I'm in the top 10 percentile. However, in absolute terms, in how much I can get done and how good I am within the general group known as developers, I might be more like a 7/10. That is because often automation engineers are really just manual testers who use record and playback. Even with my self-assigned 7 / 10 if you stick me in a particular area such as assembly and I'm a 2/10 (although given time that would increase). So what does a metric such as x / 10 mean? What particularly does it apply to?
* Based upon my coworkers, blogs and interviewing I have done. It is distinctly possible in a different geographic location I would have a different opinion, another flaw in the rating system is it is completely relative and empirical.
If you're willing to relocate anywhere in the country, the minimum threshold is pretty damn close to "do you have a pulse?".
We had to fire a developer last year. The guy had severe personal issues, got wasted at work (and I mean black out for 20+ hours kind of wasted). He was so messed up once (during work hours!) that he propositioned our CTO (same gender, definately not interested), as well as pretty much every female in the company....in one afternoon.
Even when he wasn't wasted, he couldn't code the slighest thing (I would even give him exact code and exact line number to copy paste, and he would still manage to screw it up), couldn't handle source control, etc. Don't ask me how he originally got the job.
Oh, and if you googled him, the first hit that came up was his mug shot from driving under influence with a suspended license.
After we fired him, he got a new job. In a week and a half. FOR A BANK.
This is just one of many situations like this that I've seen over the past few years. The market is just too hot to the point of insanity.
If you're in one of the major tech hubs (SF, Seattle, Boston, NYC, etc), and you can write a while loop, you can get a job that will pay rent in that city. If you're mediocre and have some experience, 6 figures is your worse case scenario. If you're actually competent, you're the reason a million$ barely pays for a decent condo.
I find it very hard to judge skill when I interview candidates. I can easily filter out incompetent people. Someone I work with says, "when you interview people, all you find out is if the person interviews well."
Many professional fields have long professional exams. Civil engineers need to be certified, as well as doctors. Frankly, I wish I could look at some kind of a score, and spend most of the interview on "soft" topics.
No, I will not work for your startup
...or do you expect them to just know it? Math knowledge does not equal programming skill. I know that the algorithm usually picked is the Sieve of Eratosthenes, and I have no doubt that I can code it, but I first need to go to the web and find an explanation of the Sieve.
None... you don't need to know any programming to land a programming job. You can sit there and do nothing for months before getting fired usually. Trust me, I work with them all the time. Some of them ask lots of questions and eventually catch on. Most dont.
But can he do the job?
- Joe Vs the Volcano
My sister in law had to take a basic intro to programming class with VB.NET to get a bachelor's degree in statistics and product research-related math. I thought that was sort of cool but unnecessary and unusual. I wondered if it was just to filter out stupid people who are bad with logic and numbers because I can't imagine someone working in her career position actually having to do coding ever.
My favourite take on lines of code as a metric is from the early days of the Macintosh:
http://www.folklore.org/StoryV...
In early 1982, the Lisa software team was trying to buckle down for the big push to ship the software within the next six months. Some of the managers decided that it would be a good idea to track the progress of each individual engineer in terms of the amount of code that they wrote from week to week. They devised a form that each engineer was required to submit every Friday, which included a field for the number of lines of code that were written that week.
Bill Atkinson, the author of Quickdraw and the main user interface designer, who was by far the most important Lisa implementor, thought that lines of code was a silly measure of software productivity. He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code.
He recently was working on optimizing Quickdraw's region calculation machinery, and had completely rewritten the region engine using a simpler, more general algorithm which, after some tweaking, made region operations almost six times faster. As a by-product, the rewrite also saved around 2,000 lines of code.
He was just putting the finishing touches on the optimization when it was time to fill out the management form for the first time. When he got to the lines of code part, he thought about it for a second, and then wrote in the number: -2000.
I'm not sure how the managers reacted to that, but I do know that after a couple more weeks, they stopped asking Bill to fill out the form, and he gladly complied.
Sphinx of black quartz, judge my vow.
Well, that just depends on who you know. Oh wait, you actually want to be able to do the job? You will never get promoted to management with that attitude.
Dude relax. I am assuming you have a job. So use that to earn a living while you learn. Programming is either something you love or you don't. Take a course, read a book, volunteer on some open source projects. Scratch those "itches" you always wanted to find software to help you reach.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
I recently interviewed with a company, first step was a typical technical interview over skype, Then they give me a coding challenge to do on my own, I beat the record performance speed by 50%. Then I go in for person to person, everything is going well. I get a "senior" developer who asks me about deadlocks (his recent problem experience). He gives me a badly thought out problem. when I come up with a straight forward solution, he tells me I failed because I did not come up with one of his "two solutions". Next a guy comes in an asks about how to solve a abstract problem, I walk him through all of the restrictions on the problem set, and come up with a good answer. So now he gives me the "I want to generate an anagram" problem. After 30 years of professional programming, I have never had to generate an anagram. I do not think the problem has any relevance to this interview, so I tell him so. He insists that I solve it. So I walk through the steps I would take. I find out later that he rejects me when the group gets together because of "arrogance". Again I am over 50, have programmed many commercial systems that have made hundreds of millions of dollars for the companies I wrote them for. Something is rotten in Denmark...
...is how do you get a job and then succeed at it for longer than a year or so.
For that second part, my main recommendation is this: Don't be a bottleneck. As to how to carry out that part, there's plenty of good advice in the comments above, but your goal should be to solve problems quickly and produce solutions faster than expected whenever possible.
Finding God in a Dog
Yup, 3 years experience and school was way harder and challenging than "the real world".
Don't take my word for it, look at the job ads.
And not just 5+ years of specialized experience in one thing, usually it's at least six different things. And requirements are different for each, and every job.
For example: one job requires ms-sql, javascript, c/c++, windows admin, and oracle, in a shoe manufacturing environment. Another job requires: linux, solaris, java, python, HVAC certification, and thorough knowledge of skateboard manufacturing.
Every programming job is an arbitrary grab-bag of god-only-knows what.
Unless you are an H1B. For whatever reason, the job requirements are virtually non-existent. I suspect that's because an H1B is something of on indentured servant, so employers don't have to worry about "training people for their next job."
Again: don't take my word for it, look at the job ads.
I am not sure exactly how this number scale maps to reality. I'm sure everyone has their own idea of what a 7/10 programmer actually is.
That said, competent programmers are capable of orders of magnitude more productivity. They are able to design software correctly from the beginning. This leads to less time spent on reworking parts of the software when design flaws are found, less time spent hunting down bugs that are due to poor design, less time spent learning on the job, and less time spent maintaining software that is hard to maintain due to poor design.
Mediocre programmers, in my opinion of what counts as mediocre, actually end up being more expensive than good programmers who command much higher salaries. It is cheaper to spend $3000/day on a good software engineer who finishes the job in one day than it is to pay a mediocre software engineer $50/day to finish the job in 3 months. Not too mention the fact that a mediocre software engineer will probably never be able to produce something of quality until he/she becomes a good software engineer.
It's not a question of "which jobs are easy enough to finish for a 5/10 programmer". There are very few jobs that a competent programmer can not do more cheaply for the same (and usually better) quality of work, due to expending less effort and time to do it.
My advice to any 5/10 - 7/10 programmers out there is to become better at your craft. You will be more productive, make more money, your customers will be happier, and you will have less stress and be happier. It's easier to love your job when you are really good at it.
I would also like to note that I don't think it is necessarily the case that mediocre software engineers are incompetent. I can envision a day when mediocre software engineers are perfectly competent, but that's not the case today.
I work at a company where we actually hire 5/10 - 9/10 programmers, and I would estimate that the 5's and 6's actually do not produce any code that's actually usable. It always needs to eventually be replaced by an 8 or 9. The only thing 5's and 6's are useful for is unit testing, because it frees up good programmers to be productive rather than doing things that don't require much skill.
The good news is that even if you are a mediocre programmer, and can somehow manage to get hired, you will probably eventually be promoted to being a manager provided you are reasonably responsible and not anti-social.
There is the well-known Programmer Competency Matrix, I don't think you'll get a more thorough description of "levels" in programming aptitude than that.
http://sijinjoseph.com/programmer-competency-matrix/
I manage development teams. First of all, like it or not, .NET is huge and seems like it will continue to be huge. I don't mind C# and I think Visual Studio is one hell of an IDE. Myself, I prefer to code in Perl or Ruby, and to use vim to code it. But C# and Visual Studio are tolerable. So if you had to choose one to really focus on, I think from a marketability standpoint, that's a good one. It's also a great idea, though, to have a true scripting language in your back pocket (in addition to PowerShell, which is, yes, really cool).
OK, back to the other question: Do you have to be a 7 or higher? Heck no. I find that there's very little "computer science" in what we do in a lot of professional software development. It's a lot of CRUD and knowing how to put various things together (REST plus AJAX plus responsive plus ORM plus third party integration plus memcached plus S3, etc, etc). You don't have to be a brilliant programmer for that. You have to be able to learn quickly, retain knowledge (at least enough to remember what you Googled to do it again), be a good communicator, and be a really good team player.
In summary, I would gladly take a 4 with potential and a great attitude, over a 9 who is a dick. I would do that over and over again. You just need to make sure that you have a few 7s around, but not too many.
I taught myself BASIC at 5 and was writing servers and web applications at 14... I've worked full-time as a systems engineer and web developer for the past 9 years. I've taught myself everything I know and always worked alone... I've never had another set of eyes on my code except for one project, and after they saw the first 10 lines of code they passed. Yeah. That's all the feedback I've ever received, and it was completely useless.
:-(
How can I get critical feedback - not just a list of everything I'm doing wrong, but actual constructive feedback on how I can add/change/improve those shortcomings? It SHOULD be a centerpiece of my job, but it hasn't happened once. Between that, and being self-taught, I have no intention on paying for a programming course.
I've always been able to program ANYTHING and make it work. I'm torn between the fact that I've been able to build tons of complicated applications over the years and I'm doing some really cool work with "Big Data" processing right now, but feel like my code is probably garbage. I wasn't hired as a developer and never took a programming class, but it has always the majority of what I do day-to-day...
I took compsci in high school and it made everything that I loved about computers seem so miserable and mundane and boring and painful - their teaching method sucked and I'd never have chosen this industry if that was my introduction to this field!!)
The final kicker here? I work for the research institution of the computer science program at a major university. And not a single person I work along-side writes code for a living. I don't need feedback to know I need a new job, but I do need some suggestions on how I can improve my code when I don't have anyone to help me
What's on your resume just gets you an interview.
What you know, or claim to know, gets you a job.
What you can LEARN is what keeps you in the job.
When I interview, I'm looking for two things technically. First, does the applicant have enough skills to be partially useful right away? Second, does the applicant have a demonstrated ability to learn, not just in school, but on their own? If you score good marks in both of these, you go high on the list of people to hire. Have great skills but are not interested in learning? I don't have time for you because if I run out of needing your exact skill set, I'm going to have to let you go. I hate letting people go...
"File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
That's pretty funny. You do realize that a lot of people lack the requisite skill set to be their own boss right? It's not just a matter of risk, it's a matter of business sense, accounting, paperwork, and all the other attendant infrastructure required for a successful business. And even among those with such aptitude many just have bad luck and can't get a business off the ground anyway. It's not a lack of maturity or willpower, it's often just a function of how we are that prevents us from striking out on our own and being a job creator.
I'm totally amazed that a scruffy 20-something with zero experience and two years of community college can walk into a job while a 50-something with close to 30 years experience proving they can solve problems draws unemployment. I seriously doubt that the value two years in community college can come close to that of the three decades of problem solving. I can think of no other reason except to say we've entered an age of fascism where good is bad and bad is good.
that you need to know what you're doing.
Demand far outstrips the supply of what you would call a reasonably skilled programmer. Also, unless you get an interview that requires coding (all should, none do) it is practically impossible for an interviewer to tell a good developer from a bad one.
Don't bother learning anything ahead of time... just memorize jargon, and you can land a job where you can screw around for six months before they figure out they made a mistake.
I clean up the messes this creates all the time. Good luck.
Yeah, all of that is known as growing up. If you've made it to forty, and can't govern yourself, then you've simply failed as a productive part of society. You can't possibly keep up with a 20-year old on their strengths, and you're ignoring all of the strengths of being a 40-year old. I'm certainly not going to hire a 40-year old to work under me. I'm 35. But I won't contract a 20-year old as a supplier either. Expertise, experience, and accountability as key things that come with calendars. Ignoring your own benefits is just idiotic.
And besides, according to you, 99.99% of people fall into your incapable categoy. Bullshit.
But hey, keep importing more H1-B foreign workers for the jobs, keep paying welfare to your unemployed, keep screwing yourselves out of every bit of your lifestyle. It all works in my favour. I wind up benefiting from all of it.
then all the trash can transfer to nursing school.
If a modern corporation is going to hire someone 40 or older, they are going to hire someone with at least 20 years of experience.
Why? Simple economics.
Cost of providing healthcare, pension and similar benefits is higher for older workers. They also typically have families (or at least lives) outside of work that require some portion of their attention and enthusiasm that might otherwise be directed towards work. They aren't fresh college grads that will work 38 hour shifts without extra pay and brag about it.
Now, if the older worker has lots of experience, that totally justifies his higher cost. You cannot get decades of real world high tech work experience from somebody only 20 years old. Obviously the older worker also has to be good at the task - a half-assed chucklehead of a young worker might learn to do better (if not, the employer will want to get rid of him before he causes too much damage). But if a 40+ year old isn't already a recognized expert in his or her field, s/he's unlikely to become one any quicker than a younger, cheaper person would.
This is the way the system works. It's not because somebody's trying to discriminate against your age. It's because companies want to make money and they have to work within the framework that exists.
So, if you're over 40 and your heart is totally set on becoming a programmer, you'll need to look for work in fields that you have non-programming experience in. For example, if you spent the last 30 years doing fireproof construction, you can be a programmer for a concrete company or architectural engineering firm, because you can leverage your knowledge of masonry. If you have been building and racing cars for decades as a hobby, you can be a programmer for a racing or car company. But those kind of angles are the only way you'll get a decent programming job as a 40-year-old newbie. You'll have to capitalize on your experience, or some younger person will be able to do the job better for less money than you can survive on.
sounds like a mid life crisis to me
just dont use microshit services
I was never good on a whiteboard. I insisted on doing a programming task on a Linux system with my keyboard. Hard problem, but I went through it quickly.
That is the only time I was able to direct the interview, but will never do a standard interview again.
I program in Python, a big language. In my recent jobs, I wrote all the code, no other Python programmers on our project. Inevitably, I write in a subset of Python. My subset is plenty big enough for the work I do, I keep scanning language features to see if there is a better way, but I don't use or know the entire language.
So quizzing me on language specifics is ridiculous : I wrote 60k+ lines of file in a part-time job over 2.5 years which included writing the Python version of a set of network protocols for the ad-hoc, mesh radio network to be used in testing. Good clean code, documented, naming conventions, .... I have samples of projects I work on at home, just as complex and really interesting.
Nobody wants to even look at any of that. I was a consultant for most of 30 years, am pretty good at evaluating problems and knowing whether I can do that work. I have no reason to walk into problems, will give you an honest eval of whether your job is one for me. That discussion is also useless, they all assume that my resume and I are lying.
Management is an artform, everyone learns the forms from your previous managers and mentors, but there is damn little understanding of the research that should inform opinion and process. Interviewing is just the most-visible of the many management stupidities that we run into frequently.
So std interview is a way for people to knock out anyone they don't like a lot, has very little to do with assessing competence.
What levels are we talking about?
If I could just pick any, I'd set someone who can write a tail-recursive strncpy in C on a whiteboard (and discuss the quirk) without any help at 2/10, and someone that can write/discuss a hardware UART driver or give me an idea of a posix-compatible SNMP SetRequest routine without any help at 8/10. Anyone who has implemented a HTTP server (without using a HTTP server library) in any language would score at least 5/10.
I think lots of programmers that score 2/10 can get work.
What are your 2/10 and 7/10? It's probably not my 2/10.
Or is there an official scale and my google-fu didn't find it?
If you're clueless on coding, just become a greenfield programmer, seems to be the norm for those types of projects.
I'm a solid C/10. I'd never hire a 7/10, or even a 9/10. I've met a few E/10s and F/10s.
“Common sense is not so common.” — Voltaire
It's as undeniable as the earth being flat, the moon being made of cheese, and Obama being American.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
As a former H1-B holder, and current lawful permanent resident ("Green Card"), here long enough to become a citizen (> five years), H1-B DO NOT work cheaper.
At least, it is ILLEGAL to pay them less than 95% of the prevailing wage in the local area (as determined by the State Dept. of Labor). Furthermore, the employer has to bear the brunt of non-immigrant related legal paperwork and the cost of sending them home at the end of their visa. H1-Bs actually cost employers MORE than citizen workers.
While it is true that contracting firms and employers themselves will often lie regarding wages, this is criminal, and strongly opposed by legal H1-B workers as much as it is opposed by citizens.
In Liberty, Rene
Yes. It is often the case that I solve in 10-15 minutes a problem someone has been working on for days and days. After a while, people just come ask me before they start. Team productivity is such that we are asked "why is the team so productive, we don't understand". They see the magic, but they do not understand the magic. Developernomics
sql is everywhere in business. Most good dba's won't let programmers directly at the databases they maintain. Probably because the programmers have proven they don't understand the performance issues they cause with poor queries... YMMV.
"So we all know that computer programming jobs are hot right now."
Really? They don't pay like it.
"And perhaps we can agree that a level 2/10 would not likely get hired anywhere."
Sadly I know of one who did. The person who hired that 2/10 "programmer" must not have asked any programming questions.
"So the question is: given that we have such huge demand for programmers"
Really? They don't pay like it.
> As a hiring manager, I can tell you that I almost never have the time to go dig through a prospective candidate's open source code
I also have had the responsibility for hiring people from time to time. And OMG you are hiring a *programmer*. This is the *primary* thing they are going to be doing after you hire them. Their code is their main work product. The information is available to you and you're just going to *ignore* it? Who cares how charming and articulate they are if their code is crappy?
You could assess these things in 15 minutes in a 13kLOC code base. Did they write clear and useful comments? Is the code well organized? Is the high-level structure obvious? It's an excellent second- or third-pass method, and I've always found it pretty weird that it's not a more common practice.
Okay, maybe you have some reason to doubt that they actually wrote it or whatever. And of course they will be showing you the awesomest, cleanest little gem they ever wrote. Weigh it appropriately. But don't weigh it at 0%!
I want programmers who can write code AND are articulate and charming. Someone who is articulate and charming but cannot write code should not be hired as a programmer.
OTOH someone who can write code but is not particularly charming can still be a great contributor if they are not a total asshole, and can explain their code clearly in comments or in small meetings.
Probably the reason most hiring managers don't want to review candidates' code is because they are not particularly skilled at reading code quickly and making a useful judgment about its quality. This just means that the hiring manager isn't qualified to judge the candidate on this critical dimension. They should admit this limitation and farm out the task to someone else in their company whom they trust. (If there is no such person in their company then their company is pretty well fucked anyway.)
> Not to mention, most of the time open repositories like that are blocked from my work network anyway
Okay, but this is not a statement about the objective predictive utility of a hiring process that involves code reviews. It's just a statement that your company is toopid. :-) And you can always have the candidate email you the code. They key problem here is that *you* do not believe that reviewing people's code adds a lot of value, and on that point I believe you are quite mistaken.
> can the candidate speak, in detail, to their resume. Many can't, by the way
Totally agree with you on this point. It's amazing how many people just blatantly lie on their resume. In my experience it's, like, way more than half.
This makes it frustrating for people who are honest on their resumes, since managers have to take steps to weed out the significant population of liars out there.
"So what's the difference between TCP and UDP?"
"I have been writing network protocol stacks for 138 years. I sleep with a printed copy of the TCP state machine under my pillow, and all night little synsies and finsies dance through my dreams. I hang out with Vint Cerf every weekend. It says so right on my resume. Why don't you believe me?"
"Because 95% of people who say that cannot articulate a reasonable answer to my question. :-("
I guess until we can get most people to stop lying on their resumes, that will just be a fact of life.
If you are 40, and I am too, don't bother trying to relearn how to program. Either you do or you don't. If you don't, then try to get into management where you, apparently, don't need to know shit (from the technical perspective). If you have a solid technical background then you can transition to management and pickup any of the people skills you might be lacking along the way.
How do you put programming skills on a single linear scale, and than apply that to "a job"? This is the most stupid thing I've heard all week, but hey, it's only Wednesday, I'm sure my manager will come up with something.
At the far end you've got cowboys/hacks/architects*, who drop thousand line steaming piles into source control as soon as they get it to compile, then go on vacation.
You were lucky with such luxury. I have seen those cowboy/hacks refuse to use source control at all and just take their dump into a folder on a server. Then I had to merge that code into the current branch and hope he didn't forget anything.
Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
The last two companies have outsourced all development to India outsourcing firms because they can pay them a dime on the dollar. In fact the COO of my current company flat out told me that to my face as to why they were doing it. But the first firm they outsourced to racked up a HUGE multimillion $ bill and gave us utter garbage of a product. So they just changed to a different India firm that is charging even less. I can see what utter garbage we will get out of them... The U.S. developers are now having to go in and cleanup the mess the first firm left.
So yeah - if your from India there are LOTS of programming jobs available - if your from the U.S. - your better off moving to Bangalore or some other major India IT hub to look for a job. Sorry but those are the absolute FACTS. It seems U.S. companies don't care about quality - they only care about reducing costs so the executives can get bigger bonuses....
The Truth is a Virus!!!
Democrats AND Republicans are BOTH systematically DESTROYING the jobs in this country. The problem is voting is useless anymore - we are given two choices for anything - $h!thead #1 or $h!thead #2 - party doesn't matter - both options we are given are both already bought and groomed.
The Truth is a Virus!!!
There are ratings for both personality and talent.
Finding people high on both is difficult.
Different groups put different emphasis on the two independent ratings.
I don't know where you live, but where I am, if you are good with C or C++ you can easily pull down 200k a year or more. Same with Java. HTML5, not so much, the most I've been offered for stuff that is more web oriented is about 120k - 130k.
Note, I said *if you are good*. If you are mediocre you likely won't even get an offer unless you have connections.
I'm not prepared to concede that. I'm also not prepared to concede that it should be the case.
If there are a large number of 2/10 programmers out there not getting hired, then more value can be extracted from the workforce if someone can come up with a sandbox or somesuch in which they can actually be used productively.
Maybe you get four of them and have them keep swapping off in pair-programming pairs. Maybe you only let them write code that goes into a continuous-integration server. Maybe you only let them write social games. (Heck, maybe you use them as living, breathing "fuzzing" tools for toolchain developers to use in debugging.) I don't know.
But the economy is better off if we can figure out how to extract value from them. (They should be paid very poorly compared to better programmers, however.)
People demand ". Thoughts?"
It just really grates me.
I don't know where you are located, but have you considered applying to Dev BootCamp/App Academy/Hack Reactor or another such organization? From what I read they get their grads good jobs.
Right now, any type of job will do. Gotta get out of poverty, years and years of unemployment
Yes, this seems to be true. From my perspective. Requirements that are impossible for anyone to meet.
Since you're 40, and have likely discarded the hobbling parts of ego and learned how to learn, you are in a better position to master a variety of languages and frameworks than your younger competitors. I point this out because you mentioned your age as if it were an excuse for the likelihood of failure. In my experience, the older someone is, the easier they are to train and the faster they learn.
Contrary to popular misconception, our brains do not get less powerful as we get older. They get more powerful. Unfortunately, due to fixed oxygen supply and cranial volume, they get "unsustainably" more powerful and while our high-level skills grow, we succumb to various dementia. At 40 this is a non-issue and you may only be slightly passed (or have not yet even reached) your intellectual prime with regards to learning skills.
So start googling some tutorials, buying some references, torrenting some GUI's and get playing.
There are plenty of jobs with smaller companies or colleges that can't pay silicon valley wages.
Here in Missouri there is even an organization that is willing to pay you $15/hour while giving you free training:
http://launchcodestl.com/ and I wouldn't be surprised if there are similiar programs elsewhere.
$15/hour isn't much for a career but it's alot better than an unpaid internship or having to pay money for training.
Having sorted resumes for both high-level positions and low-level positions, I would make sure you have a well written
resume and cover letter. You might even consider custom tayloring it to each position you are applying for so that
it is relevant. Having employment gaps is going to make it a little harder. Basically when sorting resumes, people
who look unreliable, incompetent, unintelligent, etc... are the ones that are quickly going to be eliminated. It's not
so much technical ability in the first round as "will this person show up to work? Can I trust them? Can I expect
them to stick around for 6 months? Is this someone that I can relate to and would want to work with?"
Have a technical friend and a grammer nazi friend both proofread your resume. Nothing gets a resume eliminated
more quickly than referencing a non-existent technology or having misspellings and bad grammer. Make sure your
resume looks as professional as possible but at the same time make sure your cover letter and resume clearly
state that you are looking for a career change. If you have 20 years experience in hardware and make no mention
of acceptable salary or career change then you will probably be eliminated as the assumption is either that you will
want more than what the position pays or that you will leave as soon as you find a job that more closely matches
your experience. It wouldn't hurt to even put an acceptable salary range. If you're applying for a small company
and willing to accept 50k while they were expecting to have to pay 70k for that position then this might boost your
chance of an interview if they think they might be able to save a little money.
Suggestion: do it, change, you will be making mo money in 3 years compared with what you make now, and more mobility and job security.
(62 year old electronic engineer, working in IT for the last 15 years)
Some good answers, but I have yet to find one that really answered the OP.
I am a little older than the OP. I am originally a Hardware Engineer as well, but have worked on so many Electronics, PCs, Servers, have a few certifications, and know the following languages: C+, FORTRAN, Basic (first language I learned), PL/I, Pascal, some JAVA and HTML.
I am married -- no kids.
The thing I have over other candidates is dedication. Will I stay at my desk to work late because the project requires it? YES. Will I stay late because I need to get up to speed? YES. Will I spend extra time to get ahead of others on the project? YES. Can I pick other languages fairly quickly? I am trying to learn JAVA right now.
So why won't companies look at me? Because most of my experience is on the Hardware side? My work ethic is impeccable.My dedication? Undeniable. Would I work for a 25 year supervisor? Why not? If he knows more than me? He probably does. I am not there to measure brain case sizes. I am there to work.
But the thing is, most people think we have a shortage, when people like me can be trained fairly quickly OR transition to a software job pretty quickly. I was writing code in 1989-1990 in FORTRAN when most of you might not even had been born....Glorious days those were. Then in 1991 / 1992 I was creating dBase databases. Those were the days.
Oh well....
Nothing to see here -- move along now...
How exactly does one even go about placing themselves on that scale? I've taken an intro to comp sci class, but from then on it's been Google and banging my head on the keyboard until I got the result I was after. I wouldn't consider myself a programmer, but I have occasionally solved problems that people with actual degrees had been struggling with. Perhaps I underestimate myself. Is there somewhere you can go to be measured for programming competency? Some sort of SAT for the self taught?
I did/do help desk work for ?15? years and then "one day", you need to know programming.
Whatever the minimum competency level is, I know for a fact that education level is completely ignored. I have both a Bachelor's and Master's degrees in Software Engineering, but because I don't have 5 years of experience in Java, I am not employable as a developer. I don't know how new college graduates get hired. Many universities just started offering Java, XML, and other desired languages in the past few years.
Perhaps the industry needs a standard exam in programming/problem solving to help employers find people who really can code. Many companies are now insisting on certifications like Network+ and Security+, so why not a Developer+?
https://en.m.wikipedia.org/wik...
Casteism