Fog Creek Software
Discussion Board




evaluating oneself as a programmer

Being out of work for sometime, I am trying to evaluate my programming abilities,where I stand, and how to improve.

My last job,which was my first after graduation with a cs degree, lasted 15 months working on a major( 500,000) line codebase project in C++.When I joined I never really had done much C++, doing mostly Java.I completed 2 big projects which were delegated to me, around 10K lines of code each, one lasted 4 months, and one 2 months,rest of the time was working on smaller projects within the codebase.I had to pick up learning proprietary API's,as well as the problem domain.
I thought I did an okay job.When I was let go,I got a general letter of reference from my manager, where he explained what I did, and he signed off in the end saying that he would recommend me for "any" professional software development job.
Going by the manager's reference,I would guess that he was satisfied by my work.
I don't claim to be a great programmer, but for a guy with around 2 years development experience, hoping to expand, do  the more experienced people on the forum think I am on the right track?

annonymous
Thursday, February 13, 2003

Here's one possible way to improve: join an open source development project. Don't idle, learn all you can, all the time. Real work and experience are the best references one can have ....

Dino

Dino
Thursday, February 13, 2003



Any chance that's Dino Esposito? :-)

Matt H.
Thursday, February 13, 2003

Sorry Matt ... second name is not Esposito ;-)

Ciao
D

Dino
Thursday, February 13, 2003

It sounds like you're doing just fine.

When it comes to self-evaluation, "am I great?" isn't a very productive question. Most of us aren't great. Questions that I've found more useful are "what have I accomplished so far?", "what kinds of work do I feel comfortable doing now?" and "what are the next things that I need to learn in order to improve?"

Beth Linker
Thursday, February 13, 2003


Value is relative.

I will explain.

Let's say that you are a good coder, and you join a company of good coders.  You value is "average" to that conmpany.

Next thing your company does is hire a guy who is an expert is QA who is a below-average coder.  But the company keeps shipping buggy products.

His value in that organization is probably greater than yours ... but you are "better" than him. 

What's going on here?

It's just market segmentation.  At a company with an established, mature software process, you might be worth more than "the new guy."

Another example: A world-class C++ guy hired into a company that writes in Java would be worth much "less" than if he'd been hired into a C company trying to transition to C++.

In fact, in the former case, he'd be a mid-level dude being "mentored", while in the latter he might be styled an architect or manager.

The key is to find your niche - your target market - and keep growing your skillset.

Years ago, I knew a VP of sales, who, when asked "how much will this cost" would reply with something like "How much are you willing to pay?" (Internally.  Externally, he was a bit more slick.)

Used to drive me nuts.  On some level, though, he's right. 

Conclusion: Focus on your strengths and never sell yourself short.


Just my $0.02 ...

Matt H.
Thursday, February 13, 2003

>But the company keeps shipping buggy products.

I ment BEFORE they hire the QA guy.  Please Forgive the typos ...

Matt H.
Thursday, February 13, 2003

There was an interesting post a while back about the fact that people below average tend to rate themselves more highly due to their lack of expertise.  Can't find it now.

Personally, I rate my own programming skills far less now than I did a few years back.

Ged Byrne
Thursday, February 13, 2003

Reminds me of the old psychology self-evaluation:
"So long as you question your sanity, you're fine. It's when you're positive you're sane that you have to worry"

I also believe a famous teacher once said "the more I learn, the more I realize how little I know."

Finally, I read a novel once where an ancient shaman or similar character had gone from student to teacher to master, and finally started calling himself "student" again to show that one who is truly wise never stops learning.

Philo

Philip Janus
Thursday, February 13, 2003

"There was an interesting post a while back about the fact that people below average tend to rate themselves more highly due to their lack of expertise."

Here's an artical about that: http://www.geocities.com/jrstrader2000/Incompetent.htm

Wilka
Thursday, February 13, 2003

[Personally, I rate my own programming skills far less now than I did a few years back. ]

This rings so true it's not even funny. A few years ago I thought I could do it all. Now, although I am confident in my ability, I find myself constantly questioning my own judgement. Although the process of programming drives this, feeding on the inflated ego, it doesn't make it any easier ;-).

anonymous, you are definetly on the right track. Just the fact that you posted this shows you question your judgement and the path you take.

Ian Stallings
Thursday, February 13, 2003

>> "There was an interesting post a while back about the fact that people below average tend to rate themselves more highly due to their lack of expertise."

Anecdotally, I have found that to be very true.

A while ago I provided a referral for an exceptionally weak and scattered programmer who was actually a good product support, QA, and "gofer" internal liason person, but is a really crappy programmer (disorganized, weak understanding of fundamentals such as data typing and use of API level handles for different purposes, etc). This guy was convinced that he deserved a senior developer position even though every single person who opinion I trusted never saw this guy write or maintain *any* code that he didn't break due to side effects that he was too stupid to try to understand. When I challenged him on this before providing a reference, he steadfastly maintained that he was a "good" developer. I wound up providing a reference that completely sidestepped any consideration of his programming expertise and focused on his apparent work ethic instead.

I also worked with a contractor a few years ago whose main contribution to a client's task was to tell the client that hand coded, optimized code in a product that was lightning fast, should be dumped in favor of SQL Server, SQL and Jet Engine. Basically he just whined at the client for the week that he was there. Maybe he was ultimately right in a way but he failed to grasp that the people writing the checks had never even *seen* SQL. He smirked to me in an email that the client "was making a big mistake", as though the world needed to revolve around his opinion.

Then there was the turd FTE at another one of my clients who couldn't be made to understand that it was impractical to attach a 20 megabyte file to an email that would be delivered over a dial up connection...  or the VB one trick pony who was so defensive about his 'senior' talent (1.5 years of VB at that, before that he was a machinist) that he practically got in a fistfight with the office manager because he was a drunken redneck.

Back in the days (early 90s) when the introduction of Visual Basic seemed to shake loose from the trees every uneducated  hack that found Windows API and C "too arcane" and had gone into hiding in the post-DOS world, this syndrome of unwashed wanna-be promoting self to Godhood was rampant. In fact, at one point it was rather hard to NOT find someone who did not profess to "program" and then find out that the one tool they had ever known was VB. It's cooled off quite a bit in recent years. (No aspersions being cast on those who use VB professionally and well and complement it with knowledge of other languages...)

But above all else, trust programmers and those who create development platforms in this industry to consistently push up the complexity of development tools so that creation of even a "Hello World" program is impossible without weeks or months of study. Perhaps this churn of languages and tools has the beneficial side effect of eventually removing those who should not be let near a keyboard... :-)
Man, what a contentious post. Let the flames begin. :-)

Bored Bystander
Thursday, February 13, 2003

Matt, I'm gonna disagree with you a bit.  In my opinion, a guy isn't "World class" (even if he's considered a world class C++ guy) if he can't do exceptionally well on a java project.

Vincent Marquez
Thursday, February 13, 2003

Ged, the research you're referring to may be this -- it's a fascinating read with a lot of implications for how we deal with other folks in a variety of social contexts.

Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to Inflated Self-Assessments

http://www.apa.org/journals/psp/psp7761121.html

Abstract
People tend to hold overly favorable views of their abilities in many social and intellectual domains. The authors suggest that this overestimation occurs, in part, because people who are unskilled in these domains suffer a dual burden: Not only do these people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of the metacognitive ability to realize it. Across 4 studies, the authors found that participants scoring in the bottom quartile on tests of humor, grammar, and logic grossly overestimated their test performance and ability. Although their test scores put them in the 12th percentile, they estimated themselves to be in the 62nd. Several analyses linked this miscalibration to deficits in metacognitive skill, or the capacity to distinguish accuracy from error. Paradoxically, improving the skills of participants, and thus increasing their metacognitive competence, helped them recognize the limitations of their abilities.

John C.
Thursday, February 13, 2003

[Across 4 studies, the authors found that participants scoring in the bottom quartile on tests of humor, grammar, and logic grossly overestimated their test performance and ability]

Oh my god - you mean I'm NOT funny, well-spoken, and smart?!

Philo

Philip Janus
Thursday, February 13, 2003

Interestingly I see a lot of talk about technical knowledge, but not much about whether it was ever used for anything useful.

You only 'rate' if you made a difference.

Realist
Thursday, February 13, 2003

>> Interestingly I see a lot of talk about technical knowledge, but not much about whether it was ever used for anything useful.
You only 'rate' if you made a difference.

Realist, "making a difference" is reserved for medical and law practice TV shows. Geez, what a pompous head trip.

Unless a developer is self employed, he or she follows the marching orders of the employer du jour, whose criteria for doing *anything* is (only) profitability.

The absolute last thought to 99.99% of the commercial enterprises out there is "benefit to humanity and/or the earth."

Bored Bystander
Thursday, February 13, 2003

Bored Bystander,

Why assume that Realist meant "made a difference" in a "global humanitarian" connotation? I would assume, rather, he meant it in a more specific "task-at-hand" sense. The greatest painter in the world who does nothing more than doodle on the backs of napkins might as well be the worst painter in the world. Talent, gift, or learned ability never put to the test must be questioned as to whether it ever really existed.

Ryan LaNeve
Thursday, February 13, 2003

>>  Why assume that Realist meant "made a difference" in a "global humanitarian" connotation? I would assume, rather, he meant it in a more specific "task-at-hand" sense.


Well, that's the problem with such a question, isn't it? I read the intention behind the phrase as meaning that programming skill by itself is trivial, and that some higher good (whatever it is) ought to be served. You might be reading the intention more correctly, though - I didn't find it nearly so obvious.


This phrase hit a nerve with me because I've been put down in some interviews for "only" being a developer and not having "well rounded" skills.  (this generally comes from people that have decided that their agenda is to actively put down programmers as a by-product of their business activities.) And, in many working environments, technical people are actively discouraged from looking beyond the modules or functions they are programming.

So I saw the "make a difference" line as implying that  the developer function itself is somewhat unimportant.

Bored Bystander
Friday, February 14, 2003

“…every uneducated  hack that found Windows API and C "too arcane" and had gone into hiding in the post-DOS world, this syndrome of unwashed wanna-be promoting self to Godhood was rampant…”

Bored Bystander this sounds a little pompous to me.

So what is the wannabe programmer supposed to call himself or herself? Are there no intermediate steps to becoming a really good programmer?

If you want to hire someone who can program at a certain level you would presumably do what it takes to test the applicants to make sure they can perform at that level.

By some standards, I am probably not considered a programmer. Yet I write programs almost every day.

If you can write a “Hello World” type program, you are to some extent a programmer. If you can write a database normalized to the fifth normal form, you are to some extent also a programmer.

When trying to get a job, most people try to put on the best image they can. Even the most ignorant user has information that you can learn from.

WNC
Friday, February 14, 2003

>> “…every uneducated  hack that found Windows API and C "too arcane" and had gone into hiding in the post-DOS world, this syndrome of unwashed wanna-be promoting self to Godhood was rampant…”

>> Bored Bystander this sounds a little pompous to me.

Let me explain. I know how it sounds.

The DOS programming world revolved around procedural non OOP languages and single tasked, console oriented applications. A lot of really poor developers could earn fairly good money in those days by substututing brawn for expertise. I actually knew DOS developers who didn't think that *subroutines* were a good idea, who thought subroutines and functions obfuscated code and who used copy and paste instead to replicate functionality. This kind of scene lasted until the early 90s.

When Windows and the market demand for GUI applications came along, the developers who couldn't cope with more than one context or thing happening at a time, as well as those who resisted higher level constructs such as object programming, tended to fall by the wayside. They lost their jobs, or quit their jobs because the demands were too much, or they didn't deliver on contracts.

When Visual Basic came out, the people who couldn't understand events, object oriented development, and other advances, were able to do some programming again. And people who had never touched a language before could also appear to "program".

The "problem" was - Visual Basic was so transparent that certain people with no computer nor even academic background, who saw development as a meal  ticket, started to infest the industry.

As I said earlier, I had to contend in one contract with a drunken dumbass redneck who was formerly a machinist, with a HUGE atitude and no wisdom, who entered the field by playing with VB, who would  start fistfight arguments in our office over some illiterate terminology misdefinition that he was adamant at shoving down our throats.

I basically think a lot of unprofessional creeps with no business in ANY profession hung on in the mid 90s. VB brought some out, and the wide open web development scene and the Microsoft paper certification fad also fed this phenomenon.

This industry, however, is particularly good at creating needless complexity and raising the bar continually, so the one trick ponies with no career orientation nor professionalism were eventually washed out anyway.  Not for the right reasons, perhaps. But once again, you have to be an "egghead" to be able to work in the industry.

Bored Bystander
Friday, February 14, 2003

Lately, I have been playing on topcoder.com. It's not really programming knowledge but more coding puzzle knowledge. It's a fun place to learn and see how other people sovled the same problem.


Friday, February 14, 2003

>>>>>>If you can write a database normalized to the fifth normal form, you are to some extent also a programmer.
<<<<<<<<<<<

And a perfectionist!

And you might well need a colleague to go around denormalizing everything after you!

Stephen Jones
Saturday, February 15, 2003

>>And a perfectionist!

>>And you might well need a colleague to go around denormalizing everything after you!

That’s funny.

I only normalize to the third normal form in my databases. But you seem to have missed the point.

WNC
Saturday, February 15, 2003

*  Recent Topics

*  Fog Creek Home