If anything, there is a shortage of developers who:
- Have 3-5 years of experience ("Senior, but not too-Senior" engineers)
- Have narrow-enough skill sets
- Are willing to settle for a very narrowly-defined role
- Are willing to live in specific areas
- AND Are willing to work for the compensation offered
Picky companies can't seem to find these mythical employees in large numbers, so they throw their hands up and declare "shortage of engineers!"
Here are some software engineers that are largely getting ignored:
- People with 0-2 years of experience
- People with 10+ years of experience
- Software generalists
- Engineers who would also like to broaden their roles/responsibility (+architecture, +project management, +design?)
- Remote engineers
- Engineers who demand more than "competitively average" packages
Yes...? All of this has happened. Twitter has become remote friendly. My employer is 100% no remote but continues to make exceptions and we have 6 or so remote employees now.
Salaries have skyrocket in the last five years. So I'd say...yes, there is a shortage of talented developers.
"talented" in that context usually means "has the ability of an experienced developer at the salary of a more junior developer."
If you accept that talented software engineers are the people who are simply good at software development then there are plenty - but they're often older, more experienced, and consequently paid more.
Actually, a shortage means that there is an external force that prevents the price from rising, such as government intervention[1]. If salaries have skyrocketed in the last five years, that is a sure sign that there isn't a shortage; although perhaps a shrinking pool of those who can afford the available supply.
As higher and higher salary offers are made, fewer and fewer companies can justify the costs. As fewer companies can afford to hire developers, fewer developers are needed. Thus, in a functioning market where prices are rising, the number of businesses in the running to hire developers can never exceed the number of developers available. As soon as there is another business wanting to hire a developer, the price will rise until someone stops wanting a developer because it has become unaffordable.
Software development wages have risen faster than general wages for decades, haven't they?
Besides those rare outliers at rare outlier companies, like that dude at Google that makes $300K who everyone on HN seems to know, are software development wages actually going up to the extent that would indicate a "shortage"? Are they even 10% (inflation adjusted) over where they were a decade ago?
When people talk about developer shortage, they often have developers fit for these jobs in mind.
I don't. Who are you talking about?
Idk, people who have problems they need solved today (not after stringing along would be devs for months for the latest fad-de-jour) opportunities are out there, but take some looking outside of the crap posting resumes and useless meetups…
> - People with 0-2 years of experience
What are these people supposed to be doing? You can't have 3-5 years of experience without having 0-2 years of experience first.
Some companies take a long time to get back to you (IIRC for Amazon I was offered an interview 2-3 months after applying)
And many companies are just rude (don't even acknowledge receiving your application, don't follow up after interviews).
However something that struck me about your story: most of my cover letters have consisted of a simple 3-4 sentence email. It mentioned the job, where I found it, expressed my enthusiasm for the position and highlighted some skills I have that match the job description.
I'm curious to hear other opinions, but you might be trying too hard on the cover letters.
The first is two sentences saying that it looks like an exciting opportunity and introducing myself as a web developer in CityX whose client experience matches that of the hiring company.
The second is a few sentences saying that my experience matches the desired qualifications in the job ad, and expressing my desire to always learn new technology and improve my existing skills (because it's usually not a literal perfect match).
The third touches on why the position is a good match on a personal level, such as my personal/hobby interest in some topic that is central to the job. I close by saying I look forward to hearing more about I can help.
In all, it's really not too much longer than this comment. Maybe only 3 sentences longer.
I try to make it friendly and casual because I figure people don't like reading robotic, boring cover letters.
Why not try telling a story that shows some sort of personal interest in the organization that you're applying to? Or, try to focus on showing your enthusiasm for the position.
While you're working at changing your style, you should work on some basic mechanical things in your writing. I know that this is HN, so you likely didn't put much time into proofreading, but sentences like this one hurt me in my soul:
"The second is a few sentences saying that my experience matches the desired qualifications in the job ad, and expressing my desire to always learn new technology and improve my existing skills (because it's usually not a literal perfect match)."
Or, consider this sentence:
"I close by saying I look forward to hearing more about I can help."
Again, I understand that you likely didn't put much time into proofreading your comment, but you missed a pretty important word.
My approach is based off advice I once heard about essays for college applications. Overwhelmingly it seems like there is a formulaic approach to them that works really well. I assume this isn't specific to college admissions, but really just people in general who read lots of applications (whether it be for a school or job). Part of the advice I read was that you should stick to the formulaic approach unless you are an excellent, confident writer.
I would say my cover letters definitely show enthusiasm and I explicitly spend probably 25% of it discussing my personal interest in the position/company. But writing in a story format that is well formed, relevant to the job, and interesting is well beyond my abilities. I spend enough time as it is on cover letters that generally result in nothing.
I wonder what companies you are applying to? For example, I know that pretty much every tech company in my city is looking for developers. I think a problem is that developers mostly apply to the larger tech companies in the area (50+ employees). Smaller companies (like my own, and others I have talked to) are having trouble finding people even for entry level positions.
This is the worst part of job hunting.
Replying to hundreds of applicants individually might be difficult, but a short email from [email protected] that says "Sorry, but the position has been filled. We will keep your application for M months in case we have another opening" wouldn't be unreasonable.
I don't know why. They might be trying to avoid angry emails, they might be trying to hang on to some backup candidates in case the one the hired does not work out, or maybe the tracking systems really are as bad as they appear.
I went on an interview where they flew me across the country, put me up in a fancy hotel, and then...completely ghosted on me. I would guesstimate that they spent a few thousand dollars on me, including the flight, lodging, food, dinner with the team, and ~15ish hours of interviewer-time. I can't imagine that the cost of three minutes of the secretary (or manager)'s time would be a significant factor after that.
Regardless, it's annoying....
However, you have to just start to imagine all of the things that happen on the other side of the curtain. The hiring manager moves to another project or hadn't been assigned when they started interviewing, the recruiter changes or their contract ends, the project funding gets delayed, the technology choice changes, they didn't know what kind of person they wanted, etc. In larger companies, you need a lot of coordination so that you don't lose a good candidate due to their not being a fit on the project that got to them first.
I would never expect a response other than "resume received" from an online submission, but, once you speak with someone, a status update of some kind, even if it is a "no decision has been made" makes sense.
It hasn't gotten me a job yet, mind you, but phone calls are slightly more encouraging than silence.
* All of the recruiter/middle-man spam that I couldn't find an option to filter out
* Most companies are doing something pretty boring (marketing/advertising) and look like pretty miserable places to spend most of your waking life
* Remote positions are pretty rare, and when they exist they have super high expectations
I wouldn't be so dismissive of recruiter spam, if you're really looking for responses back from companies.
Try again, and make clear demands (for starters: That they should not present you to potential employers without asking first) about how you want to interact with them. The slightest transgression: Move on.
You'll find a good one soon enough, and it'll be worth it sooner or later.
I say all this to make the point that I'm definitely not competitive with the type of people working at Google, but I have plenty enough experience making great sites from start to finish with a variety of tools.
I have seen interns who can behave like senior engineers because they know how to take responsibility, talk with non-technical people, and tackle tough problems with confidence etc.
How much should we be writing tests? How much should those tests cover? What type of tests? Should we use Agile/Waterfall/etc? Do we need code reviews? Pair programming? Continuous integration? What should the deployment be like? What's the most appropriate database to use for this? How can we help ensure absolute security? What can we do to shave milliseconds from load time? How would we make ____ more distributed to handle high peak loads?
Those are all things that seem pretty relevant to being senior, and I don't have answers for them based on personal experience.
That's one hell of a good answer! Nice work!!
I find it very tough to answer them unless I have personally faced the problem or if I have read extensively about it.
Sometimes I think that startup experience doesn't prepare you for this kinda stuff. In the early stages, it's all about "Fuck it, just ship it." So design and all go out the window. This is what is happening in my current company too.
Confidently saying "we're going to use this because I'm senior and I know it's the right choice" is something that I see as rarely being successful. It has its time and place, but it ain't something that you should be doing often. You mention bringing the right coworkers into the decision-making process, which is the more appropriate move.
Now, of the items you mention not having an answer to, I can give you a definitive answer to a few: ;)
- Do you need CI? Yes if it's helping you manage your risk. Do you need it for your 4 line bash script? Probably not. For an application your team works on regularly? It's 2016; Set up a freakin' CI server.
- Absolute security? This doesn't exist. Manage your risk, and the risk to the business. See: http://scholar.harvard.edu/files/mickens/files/thisworldofou...
- Tests? Yes. As far as coverage and what type, again, manage your risk. Does decent unit-level coverage and a couple of end-to-end tests give your team the confidence they need to develop quality software at a rate acceptable to your team and the business?
- Do we need code reviews? Dealer's choice, but manage your risk. If you're getting heavy on tech debt, or there are big holes in team understanding, and you notice work is slowing down as a result, you haven't been managing your risk.
- Most appropriate database? Manage your risk. Have the conversations with the business that give you a framework for doing a meaningful evaluation.
- Shaving millis off of load times? What value does this represent to the business? There's a cost/benefit analysis that needs to be done to determine whether two weeks of work improving the response time by 10ms produces noticeable business value. Perhaps there's a way to shave 8ms off the response time which will only take one day. How much are 2ms worth to the business?
--
It's nice to have personal experience answering questions like the ones you bring up, but I would only say "nice to have". As the previous poster mentioned, senior is IMO about being communicative and thoughtful more than it is about being right all the time or having a lot of battle scars to show off.
How much should we be writing tests? - How much do you need them? (Are you grinding out an MVP on very short notice, or setting down the foundation of a long running important project?) and if you need a more obvious signal, are you hurting from not having them?
How much should those tests cover? - See the above; but additionally (and tautologically), what parts of the code do you worry about tests covering?
What type of tests? -What type does your team feel comfortable with using and maintaining long term?
Should we use Agile/Waterfall/etc? - See the above, additionally consider if the context you're in (because the powers that be over you incurr a LOT of constraints) really encourages one of these.
Do we need code reviews? - See "how much should I be writing tests"
Pair programming? - Continue to cite the above, as well as "does it work for your team"
Continuous integration? - Is the overhead worth the benefits? (this is not a loaded question)
What should the deployment be like? - Easy, robust, hard to fuck up, easy to clean up.
I stopped here intentionally because your latter questions touch on technical decision making, to which I'd give unified advice: Get to know the space. Get to know your tools, then ask someone smarter than you :) Less glibly, someone else has almost always done what you intend to, if not many someone else's, and their experience is so fucking valuable I cannot emphasize it enough, this is also half the benefit of having a personal network. However, you need a mental model of the space to evaluate their learnings in your context, and that just takes playing in that space until you feel comfortable with it.
I really hope this doesn't come off as a preachy rant, my goal is to address your final sentence; to echo my original statement, that I believe you can apply the experience you've gained as a dev thus far to the questions you claim to have no experience for (and you go so far as to demonstrate this e.g. your rails example); and even in absence or presence of that, leveraging your team and peers is invaluable for making "less bad choices", and you're already doing that by asking here on HN. You're already walking the path you are aiming for.
YMV and good luck!
Do you have any examples of other tools that would be valuable? I honestly think I'd be pretty unhappy with iOS/Android development due to the nature of most companies that focus in that area, and I assume that'd probably be an option you'd recommend. I have an interest in security and penetration testing, but it's such a horrendously complicated and difficult expertise to attain and I have no realistic expectations I would ever get a good job doing that.
Working with C/C++ or other less-web focused technology is an option obviously, but agains no CS background and it just seems like such an uphill battle to learn what I need and then convince someone to hire me for it.
That's senior to most of the people posting the jobs. You passed junior with PHP.
It just feels like a few years experience isn't "senior" when you look at the candidate market in general. I am probably well below the average numbers of years experience.
Just do it. Start referring to yourself and seeing yourself as a senior software engineer and the paycheck is likely to follow-- regardless of your technical merits or lack there of.
Far less qualified individuals than yourself successfully bill themselves as senior engineers or solutions consultants, and make several whole multiples of your pay doing so.
I feel i'm in the same boat, but with a different set of technologies. Regardless, i'm curious on what you feel you have succeeded at. Might be informative :)
Not sure what I've succeeded at. Being willing to learn is probably the biggest attribute to doing really well at my two developer jobs (according to my past and current boss). And just generally being a polite person who's easy to work with and willing to take on tasks without complaining.
Not a job. Just an interview.
Seems pretty accurate in my experience - which is why I almost always aim to use recruiters.
That said, applying to jobs without meeting someone there first is not the best way to go about it.
For the jobs that I have applied to, I would say I am pretty well qualified. I have put a lot of time into my resume to make it clean and legible. I usually spend over an hour writing a cover letter, and I am pretty confident they are interesting, well written, and have a friendly/personal tone without coming across as awkward or over eager.
Despite all of this effort and being pretty well qualified, I never hear back. Not even a rejection letter. Just silence. I have applied to pretty entry-level positions too for which I am overqualified, and also never hear back. Sample size is only about 10 applications, but they were very focused, well matched, high effort applications.
If there is any shortage of web developers out there, companies sure aren't acting like it. It's not even like I would ask very much, I only want maybe $75k since I am currently way underpaid (about ~$50k in a big city).
My guess is that this is just a side effect of unemployment being pretty high (if you look at realistic measures, not the biased official ones). Senior developers are willing to work for less than before because getting a job is harder these days, and less-than-senior developers can't get a job at all because there's only enough spots for the senior level ones.