
I Am a Bad Developer - accutrements
http://eewz0z.pen.io
======
dpiers
On Friday I had a remote interview where I was asked to search for the value
closest to X in a sorted 2D array (columns and rows are both sorted in
increasing order). I came up with a trivial solution to find a specific value,
but got tripped up modifying it to find an unknown value that could be higher
or lower than the target. I have not heard back from the company.

On Saturday/Sunday, I went to AngelHack SF and did a solo-project that ended
up placing 2nd amongst +80 teams and netted me a $2500 credit from Firebase
and an invitation to AngelHack's accelerator.

Am I a bad developer, too? Or is the hiring practice of reducing someone's
technical competence to a handful of esoteric questions arbitrary and broken?

I am much more proud of the things I have built and the reputation I have with
the other developers I have worked with than I am of my ability to find the
longest common subsequence between two strings.

I'm guilty of asking these kinds of questions, too. The truth is it is
incredibly hard to gauge a programmer's skills and figure out whether they fit
into your team over the course of a half-hour interview, and nobody really has
figured out a good way to do it. We're stuck with arbitrary questions that
yield false negatives (and positives) simply because there isn't a better
solution.

Edit: Aaannd in the course of writing this I received an offer letter and an
email from someone at a16z asking about my AngelHack project, so I guess my
job hunt is over. When it rains, it pours.

~~~
barce
Ya, I've been the victim of "couldn't balance a B-Tree fast enough so you're
not hired but you'll never see a B-Tree at work."

You mention that there isn't a better solution. IMHO, I disagree.

I think Github has figured out a way. They've been around 5 years and haven't
fired anybody and nobody has quit.

Most firings are due to a job / job skill mismatch. At Github, they do a week
long paid interview so both sides really know what they're getting into.

I don't work at Github, but am such a fan of their company.

~~~
pbiggar
What make you think GitHub haven't fired anybody? I don't know that they have,
but it seems very unlikely.

~~~
stouset
In fact, they have fired a few people.

------
rthomas6
Isn't the author just experiencing imposter syndrome?
<http://en.wikipedia.org/wiki/Impostor_syndrome>

Despite all his colleagues, friends, and coworkers telling him he is
proficient, keeping current in the industry, coding for fun, contributing to
open source, proactively bettering his coding style and knowledge, and knowing
a lot of theory, his mediocre interviews are enough to convince him that he's
a bad developer. I'd wager that the problem is NOT his skills as a developer,
but his skills at interviews... especially since he seems to have gotten a lot
of his previous jobs through networking.

>I am now in the buffer zone and have interviewed with close to ten companies
to date.

Seriously??? 9 interviews without a job offer from companies which I'm
assuming he didn't have any connections with, and despite all his past
accomplishments, which he barely even mentions, that's enough to convince him
that he's a bad coder and bad at his job.

Come on dude. Get real. You're probably a great developer and suck at selling
yourself. What's more likely? Being bad at the thing you love, that _other
people agree_ you're good at, and have been doing for years, or the thing that
you admit you find difficult and in which you have almost no interest?

~~~
Justsignedup
Granted 10 is a bit much. But it depends on who to interview with. If you are
good, there are consulting companies like ThoughtBot or PivotalLabs who hire
good developers pretty easily. And their interview process is all about
checking if you are good and get along with people rather than just if you
know how to traverse obscure data structures.

Imposter syndrome does sound quite right. Or the guy is just depressed pretty
hard.

~~~
nilkn
I think it's a combination of both. He sounds ashamed to be a software
developer to the extent that he doesn't want his daughter to know. What's up
with that? It might not be the same as being a heart surgeon, but at least in
the US software engineering is viewed very positively as a career, probably
alongside chemical engineering and law (actually law is viewed fairly
negatively by many these days).

~~~
Draiken
Ever heard of a heart surgeon that can't pay his bills?

Now have you heard of a developer that couldn't pay his bills?

That's why he wouldn't want his daughter to know what he does.

~~~
zpconn
Heart surgeon? No. But lawyer? Yes. Chemical engineer? Yes. Physician? Yes
(private family practice is a dying art in the US). Movie star? Yes.

Very few career paths offer absolute job stability and an infallible guarantee
of employability. That's no reason to be embarrassed of a career choice.

------
nixy
Anecdotally I have come across developers that match the description the OP
gives of himself. They read a lot of papers, they know a lot about the inner
workings of many common and obscure programming languages. Many know and love
development process theory and they contribute to open source projects. Here
is the but: when push comes to shove, they can't deliver to production.

I've seen many smart coders falling short in real-life scenarios, where they
refuse to take the shortcuts and make the trade-offs that most high-paced
production projects need to deliver on time. And on the other side of the
fence I have seen mediocre programmers deliver quality apps on schedule by
allowing themselves to take what to a purist would look like shortcuts. More
often than not, companies prefer the latter one.

Perhaps many employers have a process of surfacing stuff like that during the
interview phase? Every time I interview someone to fill a position working
with developing and delivering applications written in X, and all they want to
do is tell me about the awesome type system in Y, alarms start to sound in my
head.

~~~
mynameishere
Tend to agree (though it's impossible to say about any particular person.)
Mentioning TAOCP and SICP at an interview (as he did in the post) would raise
some alarms with me. They're not useful books in most jobs, and bringing them
up just makes you look like the kind of person who doesn't understand that.

~~~
krmboya
Steve Yegge calls it "The Awful Place Where People Make Money With Software"

[http://steve-yegge.blogspot.com/2007/06/rich-programmer-
food...](http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html)

~~~
papsosouid
Wow, I forgot how horrible he was. How can someone spend that many words just
to cough up a few awful strawmen, and then not even bother to knock them down?

------
mseebach
In paragraph 6 and 7 you reject that it's a case of being bad at interview -
but then in paragraph 15:

> And for all of this I still blunder my way through an exercise to write a
> function which returns a boolean in response to the question of whether
> sequence A is a sub-sequence of sequence B. I still draw a blank when asked
> what the magnitude of complexity is for the guests function I just wrote
> (damnit, of course calculating the permutations of a list is n-squared, but
> this is an interrogation of the random trivia I can manage to recall and I
> feel like a deer in the headlights).

That does, to me, sound like you do, in fact, have a problem with
interviewing. The article is light on concrete facts to build off of, but if
you're the kind of person who represent yourself to me (interviewing you) as
having such an impressive toolbox as you certainly do seem to have in your
possession, and then go on to fail to write a simple function and answer one
of the most basic analytical (and, opposed to many other stupid
gotchas/shibboleths, actually _important_ ) questions in computer science,
then my "talker, not doer" red flag goes up, and you're going to have an
uphill battle from there.

Basically, it's a case of over-promise and under-deliver.

Again, there is precious little concreteness to build off of, so this is very
speculative: try to "modesty-fy" your CV and make sure you don't come off as
bragging in any way in the beginning of the interview: under-promise. Also, do
some whiteboard code katas. Then do the simple task, ask for help if you black
out, and _then_ put in the punch-line: "Actually, there's a really neat way to
do this in Lisp".

~~~
eccp
This comment really lit a a lightbulb on me. I also know that I'm a good
developer and I've learned a lot of technologies, helped out Open Source
software projects and lots more, but I recently realized that I _suck_ at
interviews. I've been interviewed (at least remotely) on every company I was
interested in and _nearly_ made it.

I really have to work on this.

------
nevinera
You had some money, and you didn't feel "fulfilled", so you took a break for a
few months? And all the comments are about how poorly designed the interview
process is.. The thing I want everyone to take away is "don't gamble with your
fucking income."

You know what's worse than ennui? Being broke and jobless is. Going into debt
because of a radical misunderstanding of job markets is worse.

I'm sure you are a perfectly decent dev, OP, and I'm sorry that the system
isn't very well built. I wish you weren't in such an unpleasant situation
(though this was definitely a solid approach to getting a bunch of
conversations started). This rant is not really directed at you - No doubt
_you_ have learned the lesson already.

DO NOT QUIT YOUR JOB BECAUSE YOU ARE UNHAPPY. Find another job first. I do not
care if you are a Jedi ninja code tycoon, there are no sure things. Your
friend does not have the pull he thinks he does. The market is not good. Your
savings burns faster than matches.

~~~
Tichy
Living in a permanent fear of being jobless could be quite harmful in the long
run...

~~~
nevinera
Please explain your assertion? Unless you're talking psychology, in which case
please don't bother.

~~~
Tichy
Out of fear you might not dare choosing a more rewarding path/job. Should be
obvious?

I suppose you are also at risk of working longer hours, risking your health.

~~~
nevinera
I definitely do _not_ oppose finding a new job, only quitting your old one
first, which seems to be a mistake that everyone makes at most once.

------
eranation
All I would say is, aim much lower, pick up plain old ugly Java, learn Spring,
Hibernate. From being a "bad" advanced algorithms Lisp / C++ developer it's an
easy jump to be an "ok" CRUD apps developer / Enterprise drone. You will nail
the technical interviews, just try not to be overqualified.

Pick up either Spring/Java/Hibernate for the corporate "boring" market (but
still well paid / plenty of offering) Or Rails / Django for the still cool
startup market

You can make a good living as a CRUD app developer, many of us do just that.
reading through SICP is a huge bonus, but not a requirement to get a job in
this "improving, but not yet fully ready for functional programming" world.

Did you ask yourself sometimes if you are perhaps overqualified? or causing
the impression that you are going to over complicate things? Did it occur to
you that you are maybe making interviewers look stupid as you give them a
functional solution you learned in SICP to a problem they had in mind a
imperative, for loop, lot's of shared state solution to? Perhaps you are too
good of a developer for your own good?

I interviewed and hired lot's of developers, and having someone "too smart" is
sometimes as bad as having someone who is, well, the opposite...

Try to go to a professional mock interviews service, and check if it's indeed
you being a bad developer or something else, check anything, gee, check even
your breath, (not kidding, had candidates who were brilliant but simply had
bad breath, I was the only one decent enough to tell them that I guess as they
didn't understand why they can't seem to get a job) not that I'm saying that
this is your problem, but don't go and say that you being a bad programmer is
the reason without very serious investigation.

Take it as a debugging task, rule out anything, I'm pretty sure you are a
developer much better than many others happily employed that the moment...

~~~
voltagex_
Here in Australia, I'd say go learn C# and do CRUD - but then again I'm
sitting in Canberra and the feds love Microsoft tech (admittedly, I do love
C#)

Java seems to be on its way out here.

------
cia_plant
Being rejected repeatedly is disheartening for sure. However, 10 rejections is
actually not that many, nor is two months a very long job search. Many
companies have a pretty narrow idea of what a good candidate is - e.g. "5
years experience with X" or "agrees with the lead engineer about most things"
or "can solve this tricky puzzle". I'm a very good developer and have a degree
from a top school but faced many rejections early in my career (more than 10
I'm sure).

~~~
georgeecollins
Maybe you are applying to the wrong places? I work in Silicon Valley and
without naming names I can say I know there are places that will settle for
very mediocre technical talent because it is so hard to get people right now.
Avoid the well known, "hot" companies, and the start ups. Look for big
companies in hot job markets.

~~~
resu
Could you give some examples?

~~~
iguana
Go on Dice, then search for any job listing requiring J2EE/struts/hibernate.
The technical interview will consist of explaining what polymorphism is and a
handful of OO design patterns like singletons and factories. Then give a
poignant speech about the evils of multiple inheritance, why interfaces are
better, why you love XML, why writing SQL statements in the code is wrong and
the only way to talk to a DB is with ORM, and you are done.

~~~
_sabe_
Why is the only way to talk to a DB with an ORM? Why cant you have SQL in the
code? Sounds like you think the only way to write well structured and clean
code is by introducing more layers of complexity?

~~~
ccozan
My dear, the parent was slightly sarcastic. But he is right, that in order to
please the corporate ears, you need to sing the 'right song'. You get hired in
no time. Learn the corporate buzz words, etc. Once in, you will meet some
saner persons, which do the right job, so that you will not feel to be in some
mental institution, where all speak some acronym gibberish.

------
bitwize
Oh, the job search. The sobering discovery that most companies are looking for
cogs, and you don't quite fit on any of their axles. I've been through this
several times. Here's my recent experience:

I sent a detailed, ranty email to a recruiter explaining what exactly I was
looking for and where I might fit, to save my time, their time, and the
companies' time avoiding positioning me where I didn't fit. They laughed and
had a good time reading my humorous email, but still didn't "get it" and tried
to place me with company after company doing Java, BI shit.

Finally I said, "Look, do you have any Python jobs?" And they said, "Oh,
Python!" and started handing me positions that made some fucking sense. I
ended up accepting one of them.

------
justlazy
This might be unpopular, but you don't sound like a bad developer, you sound
like you're lazy.

You have a family and had a job, yet you decided you didn't like it, walked
away because you weren't unhappy, but weren't happy, and decided to DO NOTHING
for two months?

If I was interviewing you I would be concerned that I'm going to hire you and
you're just going to walk away after a few months because you don't like
working.

Just having technical chops doesn't mean it's easy to get a job -- in fact,
I'd venture to say that personality and attitude go a lot longer in the hiring
arena than your skills -- I'm much happier hiring someone with less experience
who wants to prove themselves and has a decent work ethic and doesn't walk
away from a challenge, but instead goes after it. And from personal
experience, time and time again, that's the developer that makes your company
successful over the kid who knows his shit, but can't stick with anything for
long enough to see it through.

I recently switched jobs last year-- I'm in my 12th year as a professional
developer, start-up and large company experience, in languages "that matter"
-- still took me three months of constant searching to find a new position,
and that was while I was still employed so there was no break in my employment
record.

------
neilk
I'm looking for work and this is kind of driving me up the wall too. Not so
much the algorithm stuff (generally I can crush that, even if I see the point
the author is making). It's the take-home stuff.

After you pass that their algorithm trivia test (subset sums? REALLY?), then
they ask you to do a take-home test. The latest one is literally "here's some
data, code up an interface. Be creative." No direction, no use cases. They
barely explain what the product even is.

This isn't going to be easy. I've already spent four hours on it - getting a
sense of their product and what their customers even want - and a few more
hours thinking about it and then one hour just massaging the data. I can see
six more hours ahead of me. I'm doing it mostly because it's a way to motivate
myself to learn more about mobile interfaces, but it's really irritating.
Perhaps I could use more boilerplate code (and I'm trying to use as much off
the shelf stuff as possible), but what do they learn then?

One of my old employers was guilty of something even worse - their take home
exam was "code up a bug tracker". I felt so embarrassed about that. Either
they whipped up a basic thing in something that creates most of the forms for
you (which tells us relatively little), or they spun their wheels for two or
three days (trying to do it from scratch, likely not producing anything that
good).

------
vinceguidry
I don't understand how one can draw that conclusion from that dataset. Getting
turned down during the hiring process says absolutely nothing about your
ability to develop software because job hunting __isn't a software development
activity __.

In fact, reading your post, I get the feeling that you're a better dev than
me. You probably have more experience and a better grasp of the high-level
concepts as well as the ability to translate that understanding into better,
more bug-free code.

Even despite this, were we competing for the same job, assuming I'm qualified
for it, I would probably get hired over you because confidence matters and I
have no problem conveying confidence in my abilities during an interview. Job
hunting has nothing to do with software development.

You don't need to work on your coding skills. They're fine. You need to work
on your social skills.

------
accutrements
OP here.

To clarify: I do understand algorithmic complexity. You don't often study
information theory and ordering while skipping Big-O and friends if you're
into CS. I was rather mad at myself for missing it in an interview. I should
know it but I struggle with it under pressure.

If it's not one thing it's another though... and the repeated failures to find
market acceptance for all the effort I expend to be a good developer is
draining. I don't think I had any specific intent before I wrote this. I've
just been trying to write it for weeks because this is something I'm going
through and it's not something I find easy to talk about. I started out hoping
to find out more about myself but I'm just left with more questions.

I'm ten years into a career and have had a long passion for programming (ever
since I was a young kid copying BASIC listings into a Commodore).

~~~
pnathan
I think I went through 50-75+ different applications, 25+ phone/skype screens,
and 5 on-sites for my most recent job hunt. I stopped keeping track after a
while.

I targeted companies that I thought I'd fit with a person and agreed with the
products they made. It's very disenheartening to find out that you didn't make
the cut time and again.

I guess I'd advise you to ensure (1) you're going to open houses and tech
meetups in your area and (2) be sending out several targeted applications per
day for companies that you genuinely want to work for.

Note, I would advise you or any other techie to move to a tech city for work.
I've lived in the boonies for a few years now, there's almost no work here, no
point in living here unless you have a cushy remote job.

~~~
fusiongyro
I can't speak for the OP, but living in the boonies is great. It does ensure a
long time between jobs, and the choices aren't as good. On the other hand,
they tend to really value you since it's just as hard to get people to move to
the middle of nowhere for a job as it is to find work out there. Scarcity
works both ways.

------
bfung
No sympathy here. "I am a bad developer"... so? At least you have recognition
of a problem, now time to improve.

Why the rejetions? Has any company told you what exactly were the reasons for
rejection? Ask for a reply from the interviewers and the specific questions.
Don't get those questions wrong again.

    
    
      I contribute to a plethora of open source projects in a range of languages such as 
      C++, Perl, Python, and even various Lisp-like languages.
    

How about a link to the contributions? Perhaps you can get some better
feedback from people looking at those.

    
    
      Well my bookshelf is stocked...
      ...
      I enjoy mathematics. ...
      ...
      And for all of this I still blunder my way through...
      ...
      I still draw a blank when asked what the magnitude of complexity is for the guests
      function I just wrote.
    

Why the blundering? It's not a memorization exercise, it's an exercise in
counting and math:

    
    
      My input is N, and I loop from 0 to N, hence complexity is O(N).
    
      I loop twice, so complexity is O(2N).
    
      The input is M and N, my function has nested loops, 0 to M, 0 to N,
      complexity is O(M * N).
      
      My input is N and I divide and conquer recursively cutting in half... 
      that's (N/2)/2)/2)/2... lg N!
    

I think most good interviewers will be ecstatic if you can reason your
algorithm out loud, even if you're a little off. It's the reasoning and
thinking that matters more.

I'd also recommend studying for interviews seriously. Cracking the code
interview, [http://www.amazon.com/Cracking-Coding-Interview-
Programming-...](http://www.amazon.com/Cracking-Coding-Interview-Programming-
Questions/dp/098478280X), it helps quite a bit.

~~~
kgabis

        I loop twice, so complexity is O(2N).
    

Actually, it's still O(N).

~~~
zng
Yes. But O(2N) = O(N) :D

------
softbuilder
While you (the author) might be having trouble job-seeking, it turns out that
employers are _terrible_ at hiring. There is a lot of lip service to hiring
and hiring struggles but very, very few companies take it seriously. It's not
perceived as a core business competency so you end up going through a lot of
subjective and ad hoc processes.

Instead of thinking of this as a personal failure in yourself, think of it as
a disability of the companies you are interested in. How can you help them see
past their own nose?

------
dclowd9901
I just turned someone down today who was by all accounts competent, but just
came across as the kind of person I wouldn't want to work with.

You might want to take _a lot_ more time working on that personality if yours.
Everything you wrote in your post and your post's general tone screamed to me
"humorless with a chip on his shoulder."

And dump the self deprecation bit. No one's gonna hold your hand here. I doubt
you're a bad programmer, I just think you suck at being likable. Shitty, I
know. Now do something about it. Much more than you've been doing. Be
approachable. Politics will always get your much further than skill.

~~~
jradakov
I think the guy was just being honest. I've never been in his situation
before, as I subscribe to the notion of not leaving an opportunity until you
have another sure fire opportunity (I know this isn't a popular outlook here),
but I bet he's scared and just did a brain dump of his feelings.

I don't know the guy, so I'm not qualified to comment on his personality. From
the several paragraphs I have to decipher his personality, he doesn't seem
like a bad guy, and he seems to be good at communicating his thoughts. Maybe
he's just looking for jobs in all the wrong places?

~~~
modarts
> I've never been in his situation before, as I subscribe to the notion of not
> leaving an opportunity until you have another sure fire opportunity

I think you really hit on something here.

I think the concept of "scared money" applies here. He's interviewing from a
position of weakness (not having a job in hand to fall back on) and that
causes him to perform in a way that could be coming of as desperate and
dejected to interviewers. Some people are better at hiding that than others,
but i'm thinking the author might have an issue with it.

------
DigitalSea
The issue I have with places that expect you to write functions and solve
complex problems off of the top of your head is that they prove nothing. You
might be able to write a complex sorting algorithm but you might also struggle
to work under pressure, you might struggle at coming up with solutions for
simple problems by overcomplicating things and taking longer which in turn
yields a more complex and working end-result but cost the company twice the
amount of money it should have.

Interviews should be a lot more simple. How about sitting the potential
candidate down after validating their resume and skill-set meets the
requirements of the role with your developers and have them help the team out
for an hour or two and see how they go. There are many other factors to
consider like; are you a good fit for the team (personality wise especially),
are you able to adapt to other coding styles and conventions you might not be
accustomed to?

As Albert Einstein once said: "Never memorize what you can look up in books" —
Google is the 21st century equivalent of a book. Why remember what you can
Google? You might not know how to write that complex algorithm off of the top
of your head, but that shouldn't matter. What should matter is knowing what to
search via Google or a book to solve the problem.

As a web developer who uses a plethora of languages like PHP, Ruby, Javascript
(Node.JS and jQuery), CSS, HTML and Python it's a given you won't know how to
do everything. I consider myself pretty knowledgeable but the things I don't
know, I Google. The difference between a good developer and a bad developer is
whether or not you have the skills to find the answers to your problems not
whether or not you know the answers off of the top of your head.

Another approach when hiring someone is sitting them down and ask them to
build something, not solve a mathematical problem but actually build a website
application or software application. Interviewing a web developer? Ask them to
build a simple blog application or script that interfaces with the Twitter API
and fetches 10 Tweets based on a hashtag...

That's my take on it anyway.

------
plaguuuuuu
You seem so obsessed with being part of the true programming elite. And blow
it up so far as to think that most people know how to answer those interview
questions.

As if by being _intelligent_ your daughter should value you and you would
derive worth. How can anyone be proud of cashing in on the genetic lottery?
Your family will only ever love you for how hard you work and how much you
sacrifice. Whether programmer, or plumber. Big difference.

------
edent
Ask. For. Feedback.

Seriously, this is what annoys me most about people I've interviewed - they
rarely ask _why_ they didn't get the gig.

Sometimes because they didn't answer the coding questions, sometimes its
because we found lies on their CV, or we had 3 candidates who were better
qualified.

If you don't ask, you'll never know the reason.

~~~
vonmoltke
> Seriously, this is what annoys me most about people I've interviewed - they
> rarely ask why they didn't get the gig.

My guess is most of them never ask because most companies large enough to have
a legal department tell their interviewers and managers not to answer that
question.

~~~
danielweber
The company will generate a very small amount of good will (maybe) by giving
feedback, against the very scary chance of a lawsuit.

I wonder if there is some way we can encourage companies to provide better
feedback, like positive glassdoor rankings on companies that do it.

------
zachgersh
I wonder what would happen if programmers started questioning the types of
interview questions that they received (especially when they don't relate to
the job in any way)?

Would interviews start to change their questions? Would the programmers who
questioned the validity of the questions asked get more or less respect from
interviewers?

Shouldn't more companies be embracing the trial an employee for a week and
have them try to solve some real problems?

Tech interviews seem very broken at most companies whereas the companies that
have the most progressive interviewing process (like github) continue to see
more qualified candidates than they can hire.

------
ctvo
Was hoping to empathize with the author, but just got annoyed by the end. It
felt almost like emotional extortion, especially ending with the daughter bit.

I'm sorry you couldn't find a job in 2-months, but there are many other people
who have tried for far longer. Suck it up.

------
jarrett
After reading your list of professional habits--writing tests, contributing to
open source, reading lots of technical literature--I think you're head and
shoulders above a lot of employed programmers. I've been the technical
interviewer before, and if you told me all that, I'd recommend hiring you,
assuming you have a reasonable background. It sounds like you have a real
appreciation for craftsmanship, which far too many programmers lack.

I don't know what your code's like, but I'm going to take a guess that it's
above average. In my experience, people who think about the stuff you
mentioned tend to write above-average code.

Let me tell you what I always looked for in technical interviews. I wasn't
trying to determine whether a candidate was an utter genius who would offer
novel and clever solutions to hard problems. That's too high a bar; most
companies can't expect to consistently attract those types of candidates.

Instead, I wanted to see if candidates would write _maintainable_ code. In
other words, my #1 concern was whether the candidate was going to create a big
mess for the rest of us to clean up. Will they pollute my functions with a
bunch of special-case if statements because they had to add a new feature that
doesn't fit into the current architecture? Or will they recognize the
situation for what it is and start a conversation about changing the
architecture? Will they take a class named Car and use it to represent a
House, just because it exposes the method .door? Or will they recognize the
importance of logical naming, create a new House class, and break out the
.door method into a mixin? Stuff like that.

Not every interviewer makes that the #1 concern. We all have our pet peeves.
But my point is, there's usually some very mundane, practical thing they're
looking for. Not super-ninja-rockstar coder status. If you can determine what
that practical concern is, you can then try to convince the interviewer why
you're exactly what they need.

------
snprbob86
Without any exposure to your code or you personally, my guess is that you're
far from a bad software developer and unlikely to be inherently bad at
interviews. However, only planning 2 months for a job search means you're bad
at managing your career. It can take that long to get the paperwork pushed
through even once you have found a job!

------
kfk
Maybe it's me, or my non CS background, but I feel that many positions could
be filled by a "normal" programmer that doesn't spend nights coding esoteric
algorithms. On the other hand, the esoteric algos guy might get bored in a job
that seems requires routines (bug fixes, testing, coding boring interfaces,
etc.) and might not play that well in a team.

I know teamworking is a buz word, such as "passion" and "drive" also, I know
esoteric algorithms are fun, but one has to face the reality that sometimes
complexity hides somewhere else, not in the programming craft by itself.

Actually, if you are a start up, I think the real complexity hides in the
business itself (ie: getting customers to pay you) and I am pretty sure the
difference between a passionate normal programmer and one that makes lisp
interpreters during breakfast is slim to the end goal of said start up (which
is, let's remember, to make more money than what is spent).

------
typicalrunt
I could have written this piece. It hit _that_ close to home. I'm 15 years
into my IT career and I can honestly say it's not getting easier. I don't
believe it's an ageism thing, but just a symtom of something I still cannot
put my finger on.

I put myself on sabbatical after realizing that my needs were not being met on
a regular basis by my job. While I'll allow short-term ROI to be negative, I
will never allow my long-term ROI to be negative [3]. I took some time out of
my life to spend it with my wife and young daughter, something which I'd never
done in my life. It is a blessing.

However, in the first week of my sabbatical I get called up for an interview
with Expedia for a senior Web dev position. I thought "hey, I've never worked
in the USA before, this could be fun". My interviewer was a junior dev who, in
the course of the interview, demonstrated that he had very little experience
in interviewing (whereas I have conducted > 100 interviews). In the technical
phone interview I was asked some esoteric questions about finding the
intersection of two integer arrays, what the O-notation would be, and so
forth. I came up with some half-assed answers, since it had been years since I
thought of those things [1] and since I was tired (on sabbatical) and didn't
care if I got the job I asked the interview plainly how often this type of
problem comes up in his work routine. His answer: never. Not once. I mentioned
to him that I don't understand asking these types of questions, and I have
never asked something like that in an interview before. I thanked him for his
time, and prompted removed my resume from the application process [2].

To wit, my phone interviewing tactics for a Web dev position contain the
following questions:

    
    
        - when I type in a URL in my browser's address bar, press Enter, and then the page appears, tell me what happened technically in as low level as possible.
        - what are the main verbs used in the HTTP protocol.
        - something about CSS, JS, <backend language>, HTML
        - something about how to handle a situation like breakfix, sensitive data leakage, etc.
    

Only after answering all of the questions in the phone interview properly,
only then will I invite them in for an in-person interview. However, even an
in-person interview doesn't contain stupid programming puzzles or
tricks...merely practical examples of things that have happened on the job.

[1] In other words, I think of O-notation in the back of my head when I code
(loops within loops, etc), but I don't lead with it.

[2] Oh my, they did not like this. Granted, I was working through their
internal recruiting agency, but you'd think I just called their child ugly or
something.

[3] That's my corporate-speak coming out. Basically, short-term negative ROI
is akin to working really hard and losing a bit of sleep to see a project to
completion. Long-term negative ROI is when the hard-work you are doing is not
noticed by upper manager and you are passed over for awards, congratulations,
and other extrinsic things.

Edit: clarity

~~~
boyter
100% agree.

For a web position I have no idea why you would ask them to write a tree
parser or binary search algorithm which I experienced not that long ago.

Asking about what happens at a low level when entering a URL however is a good
question. Or perhaps asking how to do cross domain JSON requests etc...

~~~
weareconvo
Absolutely the best questions to ask in interviews, in my opinion, are open-
ended questions. The problem with those, however, is that the interviewer
himself has to know enough to be able to correctly judge whether the
candidate's answer is a reasonable one.

Not only that, there are fewer language barriers when asking some canned
binary tree bullshit. So a Chinese programmer doing an interview who barely
speaks English can still proudly ask the candidate some crap about Heapsort
and feel like he's done his job well.

~~~
swivelmaster
I've had some good luck with open-ended questions like "Tell me about a time
when you had to deal with a scaling issue." How they define "scaling issue"
often says just as much as their explanation as to how they solved it.

I think I've had to ask for clarification a few times due to the interviewee
answering the open-ended question with something I wasn't familiar with, but
that's an excellent opportunity to gauge their explanatory skills anyway!

------
MaybiusStrip
I can't really make a guess about the author's coding abilities, but all the
evidence in this piece suggests a severe lack of confidence which is probably
immediately apparent to prospective employers.

~~~
tjtrapp
I think it's hard for some to show confidence after being rejected a bunch.
That may be coming through in the writing because of the recent rejections.

------
anip
I perform much better at interviews when I am relaxed. If you put too much
pressure on yourself, then you will not be relaxed and will perform badly.

If you do a perfect simulation of an interview at home do you perform well?
Find an interview question you haven't seen before, and attempt it exactly
like you would at an interview. Have a software developer friend mock
interview you.

If you feel like you perform better in a simulation, you may consider seeing a
psychologist or reading some books on the subject. I once went to a workshop
on how to deal with high pressure situations, and many of the exercises
suggested made a difference to my interviewing.

The tips in the following article I feel apply equally to interviewing. I
suffer the mentioned symptoms during interviews. When adrenaline levels are
high the brain will enable a short-cut mechanism that allows you to make
quicker decisions, but often not correct when considering a difficult
question. The dreaded "tunnel vision" is a fight/flight response.

[http://blog.bufferapp.com/what-happens-to-our-brains-when-
we...](http://blog.bufferapp.com/what-happens-to-our-brains-when-we-have-
stage-fright-the-science-of-public-speaking)

------
tlextrait
I think your inability to find a developer position has nothing to do with
your ability to develop. I recruit for my company and the most important is
how you sell yourself. Every company looks for a very specific profile that
fits.

If you feel uncomfortable about your skills, you need to build a portfolio of
projects you've worked on / created / designed... Then you can talk about
those, how you designed them and why, and that can fix a poor technical
interview. Those also help convey your passion.

10 rejections is insignificant, I think nobody has faced fewer rejections than
that for anything, whether it's finding a job or finding funding for a startup
or even finding a date.

I would need more information to know what's going wrong, but 10 rejections
isn't even an indication that anything is wrong. If the technical interviews
are not going well then it "could" mean: \- you're not applying for the right
position \- you're looking for something you don't have experience in \- you
don't show passion or a good attitude \- you seem desperate and mostly care
for the money \- you show a lack of interest in the company and their products

Maybe you are missing out on a lot of opportunities: \- You can do freelancing
\- You can find a non-tech company to work for, you'd be surprised by how many
need developers: hospitals, government, transportation companies, airlines,
insurances, banks... Have you sent your resume to Bank of America? \- You can
find a startup that's in a field you kinda know and offer your help \- You can
talk to a staffing company, they make money by finding you a job \- Go to
events (eg. PHP event, Ruby on Rails, startups events, conferences...) and do
networking. It's the easiest way to find a job, though you need to be good at
talking to people. \- Look for jobs on angel.co, monster.com, dice.com

------
plg
At a job interview, after shaking hands, say to the interviewer "Before we
start, I would like to ask you a question, would that be OK?" If s/he says
"no", leave. If "yes", then ask "as part of your interview will you be asking
me to solve tricky problems on the spot?" and if they respond "yes", then
leave.

You get to decide what to put up with in your life. You should be your biggest
advocate.

~~~
wnight
The problem is that life is full of what looks like trivial tricky problems.

Your reaction, and what you consider beneath you, is far more valuable in
hiring than your performance.

------
dtjohnnymonkey
I also feel like I'm not very good at in-person interviews because I'm not
very good on-the-spot. I mitigated this by using a variation of "The Briefcase
Technique" which I learned from Ramit Sethi.

The company I interviewed with is in the SAAS email space, so to get their
attention I created a mini web app combining SMTP and web technologies. This
took me about 3-4 hours tops. I was trying to demonstrate a few things:

1\. I can code 2\. I can work with technologies relevant to their company

That landed me the phone interview, which got me the on-site interview. For
the on-site interview, I prepared a 1-page mini white-paper outlining some
ideas I thought would be useful to their company. The idea was to show that I
could bring value to the company.

I ended up getting the offer, as well as another offer using a similar
technique.

Think about what the company's problems might be, how you can solve them, and
how to communicate that to them. Work around your weaknesses instead of trying
to brute-force it.

~~~
beatpanda
I got my last two jobs this way minus the white paper. For the last one I
learned Rails and made an app using the technologies listed in the job
description, threw it up on Github, spent a lot of time on the cover letter,
and voila.

They also asked me lots of computer science oriented questions in the
interview, and for most of them I just said, straight up, "I don't have a
formal CS education, so I don't know, but here's how I think that works."

So many people try to stand out by doing some variation on the standard resume
+ cover letter routine, so it's relatively easy to stand out if you do
literally anything else.

------
tjtrapp
After calling yourself a "bad developer", I was hoping to find a link to your
github so I could judge for myself. I'm not implying my judgement matters; I'm
just curious.

~~~
hasenj
I'm pretty sure it's an anonymous post .. on purpose.

------
ephemeron
From your post you sound like a nice fellow and I wish you the best and want
you to find happiness and job security. However, also based on your post, I am
sad to say that I think you're right, you are a bad developer. I strongly urge
you to lower your sights and aim for a job that has a lower skill requirement.

So as not to leave you guessing, here are the red flags that jumped out at me
in the post: <em>I don't remember the particulars but I know that for every
recursive form there is an iterative solution.</em> This is not a fact to be
memorized and referenced, it's a consequence of a fundamental understanding of
how programs execute.

<em> I still draw a blank when asked what the magnitude of complexity is for
the guests function I just wrote</em> ... <em>damnit, of course calculating
the permutations of a list is n-squared, but this is an interrogation of the
random trivia I can manage to recall</em> This also sounds like you are trying
to apply memorization to a problem that requires analysis. When asked for the
complexity of a function, you don't compare it to algorithms with known
complexities that you've memorized, rather, you look at the code and reason
about what it is doing proportional to its inputs. There are certainly
insanely hard algorithms to analyze, but I don't think we're talking about
them here.

<em>I really like joint semi-lattices</em> I don't point this out to be
pedantic, but as another instance of memorization vs. understanding: they are
called 'join semi-lattices' ('join' one of the fundamental operations you use
when working with these).

<em>I still blunder my way through an exercise to write a function which
returns a boolean in response to the question of whether sequence A is a sub-
sequence of sequence B</em> I ask a warmup question like this to cut the
interview short if the interviewee has problems. Good programmers will
absolutely get nervous, stutter, and make mistakes; that's fine; but this is
simpler than that.

I once had a friend who did fantastically on Biology with little effort but
did horribly on Physics, despite immense effort. After trying to help her a
few times, it was clear that she was trying to apply memorization (which
worked well for her in Biology) to Physics. To do well in Physics, you have
feel comfortable enough with the math and physical concepts to derive your own
answers. The same goes for programming and I wonder if some of your latent
unhappiness with your original job wasn't caused by a fundamental impedance
mismatch with your approach to programming.

I'm sorry if this was blunt; if we were in person, I'd try to be much more
delicate. But you did post on HN, presumably for advice. Best of luck!

------
vsbuffalo
> by my reading list you'd think I was university-trained but I'm not.

Sadly, this may be the cause more than anything else. Degrees are a very quick
signal. The author may be doing as equally well as candidates with degrees,
but the degree becomes a tie-breaker.

------
shanleyenator
It is extremely disheartening to go through rejection after rejection but you
have to do your best to not let it get you down. You certainly dont sound like
a "bad developer" - its just that the market is tough out there and companies
can pick and choose. I have "failed" many interviews and I know it can knock
you around. Its only a matter of time before you find the right job - not
saying you might not have to take a more menial job in the mean time to keep
the money coming in. I was unemployed at the beginning of the year - I was
lucky I found another job after three months.

------
pnathan
I interviewed for nine months before I got an offer, and I have a coupla years
experience and a few hot techs going for me.

I attribute the bulk of the time to me living in a place that isn't a
technical hotspot.

------
iguana
It isn't the technical skills that are lacking, it is confidence and the
ability to sell yourself. If you have the experience and code samples, you can
still get technical questions wrong, so long as you're able to admit defeat in
a confident, intelligent way. You're not asked esoteric CS questions to see if
you understand CS, you're asked them to demonstrate your critical thinking
skills, ability to communicate, ability to ask smart questions, and, most
important of all, ability to ask for help when needed.

Personality goes a long way to getting a job, technical chops go a long way to
keeping it. The hiring managers that reject you based on answering technical
questions incorrectly are probably not being honest. It's an easy thing for
them to fall back on when making such a difficult decision; often just saying
"we don't like this guy" is difficult for HR to reconcile, especially if they
interview a lot of people.

TL;DR be confident in your abilities, listen more than you talk, and learn how
to ask the interviewer the right questions (known in sales as Questions that
Sell). Getting any job is an exercise in marketing and sales. Getting through
even the most technical interview is an exercise in sales.

------
meerita
2 months ago I went to an interview for a hot startup here in Spain. They just
were looking for an IA who can code frontend languages so even I'm working i
decided to give them a shot and went to their interview.

The first thing that made me shock it was the questionary. The interviewer
gave me a silly cuestionario and I totally denied at first: "I'm not gonna
fill a questionary". I poped up my work, pointed him to my website, my github
account and still, the guy wanted me to fill this questionary with silly
questions, things like "what is "pixel perfect" for you" and such. He told me
the questionary was made so they can "classify me" with the rest of the guys
they were to interview.

Is this the level of recruiting startups want? I never had problems to recruit
people. I dont need them to put stress on to solve problems in a blackboard
nor tell them to solve my problem on the interview session. I really like to
connect with people and see their interests, their capacity to evolve and
grow, but testing skills is just silly.

------
jere
I can't believe no one commented on this gem:

>If you were to judge me just by my reading list you'd think I was university-
trained but I'm not.

Would going to university make you a better developer as opposed to a 4 _year_
version of the exercise you described? Probably not (though it wouldn't
certainly drill function complexity into your head a little better). Will it
make you easier to get a job? Yea, I think so. I don't know much about you,
but I do know a lot of companies expect a BS. If they notice your resume
doesn't list one, I would wager they spend even more time drilling on the
theory side of things to validate their preconceptions that you don't know
what you're doing.

Article after article says don't go to college. Sure, that's great if someone
hands you $100k and you have no supervisor. But some people just want to feed
their family doing what they enjoy.

Anyway, you sound like a great developer as is. And this is coming from
someone who considers himself a bad developer; it says as much in my profile.

------
darrenkopp
Same thing happened to me recently. I don't know what I would do if it
happened to me 10 times, but I may find out soon enough.

Here were my reflections on it afterwards, perhaps they may help.
[http://darrenkopp.com/posts/2013/04/19/Post-mortem-of-my-
fai...](http://darrenkopp.com/posts/2013/04/19/Post-mortem-of-my-failed-
interview.html)

------
greatergoodguy
I'm interested to understand your definition of 'bad developer'. It seems,
from reading the article, that your definition of a 'bad developer' is someone
who cannot get hired (Please correct me if I'm mistaken).

Maybe you could ask yourself what your definition of a 'good developer' is.
I'm sure we all have our unique take on what that means. For me, communication
and being able to work with others is a key part of being a good developer.

I think it's good to have a better definition of a 'good' and 'bad' developer.
I don't mean the dictionary.com definition, just a definition that you are
satisfied with.

From reading your article, those terms are not well-defined and the fact that
you weren't hired could be reasons other than your technical proficiency.

------
corwinstephen
I once had an interview in which I solved the entire esoteric question with
relative ease, and then proceeded to entirely forget how Ruby's block syntax
worked. Literally couldn't figure out how to use max_by. The dear in the
headlights syndrome happens to a lot of us, and when it does, it really makes
you feel stupid. Trust me, you're not the first person in those shoes. You
WILL find a job, and over time your confidence will be renewed. In the mean
time, why don't you take some contract work? There are always just-starting
companies out there who barely even know what they're looking for. I can
almost guarantee you'd be able to be of service to them.

Keep us posted my friend!

------
plinkplonk
A lot of this angst can be resolved by just buckling down and working through
a good algorithms/datastructures book, chapter exercises and all. Yes
algorithm puzzles are over used in interviews, but if the game is played that
way, learn to play it.

My 2 cents.

------
bearmf
> exercise to write a function which returns a boolean in

> response to the question of whether sequence A is a sub-

> sequence of sequence B.

If you can't solve this really fast it means you haven't practiced enough for
the interviews.

> of course calculating the permutations of a list is n-

> squared

If I understand you correctly, it is actually n!, because there are n!
permutations of n objects.

Basically, your problem seems to be lack of preparation. You study a lot but
you haven't studied things that are asked in the interviews well enough.

I would recommend "Cracking the Coding Interview" book. Of course you need to
actually solve problems from it. There is lots of valuable advice there.
Courses on algorithms on Coursera are also pretty good.

~~~
virgi1
This. I can't believe nobody else pointed out that it's not n-squared. (but,
lots of people pointed out that complexity is really about reasoning not about
memorisation - and you have to be good at reasoning in order to be a good
programmer).

And this is not an "esoteric question" - you should really have a good grasp
on complexity in order to understand the limitations of your system, and when
you can use certain algorithms/data structures, and when you can't.

See this write-up: <http://www.infoarena.ro/blog/numbers-everyone-should-know>
\- but don't memorize the numbers, that would be pointless - the idea is to
get a feel of why complexity is important. (you'll notice for instance that
between O(n!) and O(n^2) there is a 2-3 orders of magnitude difference in the
acceptable input data size... so your confusion between factorial and
n-squared is actually quite big)

------
tocomment
I think programmer interviews are really getting ridiculous. We don't ask
doctors to remember details from organic chemistry during an interview. We
don't ask plumbers what toilets they've unclogged in their own side projects.

------
BSousa
Come to Portugal. We like bad coders here. Seriously. 99% chance you won't
have a technical interview.

I lead a team (and have lead others) that I would prefer just to fire everyone
and do it myself (latest gem found today in the code:
self.parent.parent.parent.parent.parent.parent, done by previous 'senior'
developer).

So, if coming to Portugal not an option, interview in less tech related
companies (forget SV and NY) and go for smaller ones with 1-2 developers
supporting the business needs. If what you and others say about your work is
right, you probably can be a good developer in those environments just not at
big/hip tech ones.

------
nickfox
I am NOT a bad developer. I have a resume that just kills. 15 years of
experience. But, I am 52 years old now and basically have been thrown out with
the garbage. Why hire me when you can hire a 25 year old that can crank out
code way faster and is willing to work much longer hours than I am. All I can
say to the hiring managers I've interviewed with recently is fuck you.

I'm not going to cry about it. I am writing my own software now for myself and
making money. Should have started this earlier but I didn't have the
wherewithal to do so. But now I do and I'm not looking back...

------
cl8ton
Personally I am very proud of the community support shown here on HN to the
OP’s post. I saw it earlier today and didn’t have time to respond so I up
voted it just before it slid off the new posts fold hoping it would make it
the FP.

Recognize that you are bad at interviewing (as I am) and strive at improving
the process through choosing better suited jobs aligned with your skillset and
practicing the process (which means more interviewing).

Write down immediately after interviewing your gut feelings on what you think
worked and didn't work during the process and prepare for the next interview.

------
cognivore
IMHO, little that you mention, the books, the open source projects, the
magnitudes of complexity, the math, code-kata, the introspection, whatever,
has much to do with what people need to develop software. What you need to be
able to do is take crazy shit thought up by management, clients, contractors,
government, and turn it into good enough software. The job is to appease those
who are paying and attempt to squeeze as much good code into it as they can
tolerate.

Get passable at that and someone will give you a job.

------
comet
Can I please request someone here to offer this man a job? He's onto his last
buffer month. He has a daughter, he's desperate & contrary to what he may
believe, he IS a good developer. And yeah, please have a broad smile when you
have him over. He probably needs it most right now. I'm sorry, but that was
too depressing to read. We've all been through this stage of self-doubt and
agony. But as they say "This too shall pass" and sooner or later he'll be
kicking ass! :)

~~~
rbeltran
This man has a wife and kids and even though I feel for him you can't just
quit your job when you have a family that relies on you. I wish him luck but
there are people much worse off than this individual.

------
nikhilsaraf9
Have you considered putting yourself out there. What I mean is that have some
project that you can show as your own work. With your name on it. Work hard
towards making that successful. Be it an app, a website, an open-source
project, it has to be recognized as primarily your development work.

This could some day become a business or a side project as a hobby but for now
it will give you a load of credibility when you go for interviews and will
also give you the confidence that you need.

Good Luck!

------
cafard
Four months and 10 interviews does not sound like that much. It is unfortunate
that he is looking at strained finances.

I know a certain number of young women (not long out of college) whose fathers
are about my age. As far as I can tell, mostly these women think well of their
fathers, for all that the fathers mostly have pretty quotidian jobs. Show up,
provide a sense of security, provide some discipline for the kid to push back
against, and you're probably fine.

------
voidlogic
>> If you were to judge me just by my reading list you'd think I was
university-trained but I'm not.

Outside of the valley a non-degree is a non-starter for many employers. Does
the author even consider this?

>>And only twice have I made it past the first technical interview.

Maybe there is C-S theory the author never picked up from school and is
lacking. He talks about practising programming; however, maybe his problem is
not the code he knows how to write, but the code he doesn't.

------
jogjayr
I agree with other people who say that it wasn't the best idea to take 2
months off. At the very least, you must know that a gap in your resume must
look bad to recruiters. Might've been better to get a new job offer and tell
them you needed a week or 2 before you could join them.

Do you have a Github profile? You sound a million times better as a developer
than I am, so I'm curious as to what a "bad developer"'s Github profile looks
like :)

~~~
jogjayr
If you want to stay anonymous, DM me @jogjayr

------
frogpelt
If you want to run a company with quality people (and not just employees) you
have to spend more time hiring each person than 30 minutes.

I would say 3 to 6 interviews of gradually increasing communication is a must.
Otherwise you will end up misfiring a good portion of the time. If you can't
do this, you should probably hire everyone on a temporary basis for a few
months until you're sure they are going to fit.

------
sidcool
You are twice as good as I am. And you have put something in words I would
never ever have dared to, or am capable of. I see you as a bright individual.
I am struggling with the same question. With 7 years of experience and not
good enough open source code to show, I am spiraling in a vicious circle. I
love Math, programming and physics. Thanks for posting, you glorious dude.

------
adventured
If you don't fit into someone else's box, create your own.

It won't fix your short term financial problems, but it might be your long
term salvation.

------
mvp
Something has to drive us to get better isn't it? Everybody who is anybody
goes through similar pain. The only way to get out of that feeling (IMHO) is
to concentrate on what you are accomplishing everyday (as opposed to learning)
that is of help to yourself and others, and then look for satisfaction from
within not from others' opinion/judgment.

------
BasilAwad
Only 10 applications? How many applications do y'all typically apply before
accepting an offer? I've been told around 40.

~~~
ahknight
Well, I did four last time ... and selected from four offers.

Learn iOS. Live in a tech city. Eat three meals a day.

(Which is to say, that's a comment on the market, not me.)

~~~
will_work4tears
>Eat three meals a day

damn...

------
bconway
To the OP: What negative feedback have you received? What have people told you
you need to improve?

If that answer is "none," people aren't being honest with you and you need to
find people who are.

Secondarily, are none of those people who have hired you in the past currently
hiring? If they are, why aren't that asking you? May be related to point #1.

------
ikurei
I don't get it. And it get's me worried.

I'm exactly at the first years of my programmer career, just got my degree,
and I was thinking in which I'd like to specialize and how I want to do
things... but how can I succeed when all that hard work can get you to failing
any way?

------
seivan
" I never achieved much and there's nothing I have done that I'm especially
proud of. I just got by as best I could even when the world decided I wasn't
good enough anymore."

This hit home... I wish to change it though.

------
sanicheck
>>>At many organizations I've worked at I championed automated testing

How about getting a "software engineer in test" role to begin with and then
moving to dev role?

------
tocomment
This does hit close to home, I'm a great programmer but I get so nervous in
interviews that half the time I can't do fizzbuzz :-(.

(I should do an AMA)

------
michaelochurch
Being a good programmer is not the same thing as being a good engineer or
developer. Also, there are the true and corporate varieties of each.

True Developer: builds technical assets (apps, scripts) based on business
needs, often by self-initiated awareness of what the company's needs are.

Corporate Developer: turns managerial ideas (with no audit of whether those
are _good_ ideas) into apps that sorta work, very quickly, with a smile on his
face.

True Engineer: focuses on infrastructural concerns, performance, debugging and
monitoring, and maintenance. Writes solid code with good tests and, usually,
high-quality documentation.

Corporate Engineer: bike-sheds the hell out of technical choices (war of
attrition, and managerial favor helps) so he controls the stack and becomes
the "blazer" while the other N-1 spend most of their time keeping up with his
changes and look like underperformers. Calls himself an "architect".

True Programmer: writes excellent code to solve problems. Enjoys writing code,
perhaps a little bit too much. Constantly learning new languages and
technologies. Cares more about the technical challenge than the macroscopics
of the problem (unlike the developer, whose stance is the reverse).

Corporate Programmer: drags windows and highlights stuff on his IDE. Moves the
mouse around in circles for 8 hours per day, then goes home at 5:01.
Occasionally plays with the menus and something "magical" happens, like the
auto-generation of 18 Perforce clients due to some bizarre interaction of IDE
plugins.

OP sounds terrible at interviewing and is probably really bad at Corporate,
too.

He could get good at interviewing with a month of practice. I could coach him
on that. Being good at Corporate is not something I'd be qualified to teach,
and I'm not sure if it's desirable in the long-term (although it is convenient
in the short term).

~~~
aphelion
In half a year the Corporate Developer will still have a job because he knows
how to build "apps that sorta work, very quickly" while the True Developer
spent most of that time developing his own dialect of Lisp and his team never
shipped a product.

------
L0j1k
First world problems. Amirite? :)

~~~
antoniuschan99
Word!

~~~
L0j1k
I guess people aren't too happy that I dislike thinly veiled attempts at
trolling for a job on HN, wherein the author has failed to plan properly for a
four month vacation ("sabbatical") and thus requires validation from complete
strangers. It's pretty clear here that OP wasn't affected at all by the recent
recession if he's complaining about not being able to find a job after only a
month and a half. OP clearly needs to burn off his baby fat, and it's likely
that this situation might be just what he needs to grow up.

~~~
antoniuschan99
Regardless of OP's actual intent it definitely is a first world problem. I'm
sure OP is smart and a capable programmer but I also wonder, he did say he's
10 years into programming. If it's not that he's a bad programmer, or that his
social skills are not lacking, maybe ageism could be an issue?

~~~
L0j1k
Interesting observation, about ageism.

That of course could be the case, but I've built a vision of this guy in my
mind after reading his diatribe (against himself). He's clearly just
incredibly insecure, frustrated, and possibly self-loathing because of it.
It's possible he had/has an axe to grind and nowhere to grind it so he just
comes off like an ass. When people get like that, it's almost as if they put
off an aura of failure as soon as they open their mouths. After reading his
post, it's no surprise this guy doesn't do well interviewing. If your friends
-- who are developers -- are telling you in no uncertain terms that you're not
a bad developer, and you don't believe them such that your next step is to
then seek the validation of complete strangers on the internet, there's
obviously something much bigger working against you (in concert with lack of
confidence). Perhaps he has very poor hygiene -- or, as you mentioned, poor
social skills -- or something else that makes a horrible first impression.
First impressions are everything, and this guy clearly isn't making a good
one. Then again, maybe it really is the case that he's a bad developer with
shitty friends.

Having faced seemingly insurmountable obstacles that involved my nearly
getting killed for years on end (and a divorce, and death of friends, and what
amounts to enormously difficult daily hard labor), I have ZERO sympathy for
this kind of crap. Can't find a job after your little vacation? Boo hoo. At
least you have all your limbs, can go to the market without getting shot at,
and your wife and daughter haven't been executed.

