
How do I know if I am good enough? - dmak
I, always, am comparing myself with programmers and I want to be "that" good before I take jobs. However, sometimes job opportunities come and I am just not sure if I should dive. How do I know if I can fulfill the request? How do I know if I am good enough?<p>Right now, I am taking working on some freebie projects for my friends so I can further develop my skills.<p>Also, it is an eCommerce website: Could anyone give me some ideas of how difficult it may be or an idea of the problems I may encounter?
======
Raphomet
I felt this way before taking my current job, but I took it anyway. It turns
out that you can learn way more way faster when you're working in a team on a
real project.

There's _a lot_ of stuff that your teammates can teach you in five minutes
that would take a day of Googling and experimentation to learn yourself,
especially when you're a beginner.

~~~
dmak
What if there was not a team? Just one person.

~~~
timwiseman
Even then I would approach it with confidence. You can learn things very
quickly by doing, especially when highly motivated and especially if you can
budget some extra time (perhaps unbilled?) to account for the learning curve.

I would only turn down work for fear that you are not capable if you know it
is truly beyond your ability for the forseeable future or if the deadline is
too constrained to permit yourself to recover from mistakes or delays from
learning.

------
joshu
You don't really want a job you're fully qualified for. You won't be
stretched.

~~~
mmelin
Definitely. If you want to grow, make sure you're thinking "I don't know what
the hell I'm doing" on a regular basis. When you're comfortable with
everything you do, get new stuff to do or get a new job.

------
HeyLaughingBoy
You're good enough if they pay you without complaint.

Here's a hopefully useful anecdote from the early 2000's. I had a friend who
had worked as a secretary for a few years while getting her BA in Business.
Along the way, she somehow took a single class in Statistics that involved
learning to program the SAS statistical analysis package.

On the strength of that one class, that wasn't even a programming class, she
found a contractor job programming in SAS paying $45/hour which for a former
secretary was a fortune. She asked me the same question and I gave the same
answer: "if they'll pay you, then you're good enough." And from that week
onwards, she happily deposited the paychecks! She confided in me that she felt
guilty because she barely had a clue what she was doing and "was taking their
money to learn on the job." Welcome to software development! Felt guilty
enough to tell her boss who just shushed her with "oh, we know you don't know
much; you'll learn."

If you think you can do the job, then apply for it.

------
user24
Just dive in, take the opportunity. What's the worst that can happen?

When I started as a junior html developer I'd written exactly one website, a
really poor 1997-era personal homepage. I didn't even know what a html table
was, I'd never done forms, etc etc. It was a really junior role, but I figured
I could learn what I didn't know on the spot. I stayed at that company for 4
years, and left with the job title "Senior Database Programmer". I'm now a
highly experienced developer with some good academic qualifications too; I
joined my first university on the strength of my experience alone, which was
that first job.

Stop worrying and go for it. There's a crapload of documentation online, so
even if you really are a bad developer you should be able to squeeze by until
you become good enough.

~~~
btipling
>What's the worst that can happen?

Ending up on a pip which ruins your career.

~~~
d2viant
That may ruin your job, but it shouldn't ruin your career.

------
decavolt
You should always be going after gigs that are just above your current skill
level. This is how you get better and how you can constantly progress. The
most important skill you can have is the ability to quickly learn on-the-fly,
to solve new problems.

If you only attempt projects that are well below your skill level you'll just
stagnate and get bored. Eventually your skills will deteriorate as a result.

Go for bigger fish, even if you're not sure you can reel them in.

------
dmak
I just wanted to tell everyone, thank you for the motivation and encouraging
words. I cannot be happier.

------
pvg
Oh, easy, there's a standard screencast on this.

<http://www.youtube.com/watch?v=-DIETlxquzY>

And it works, the man went on to become a United States Senator.

~~~
aspir
You can supplement that video with Courage Wolf:

<http://www.iggdawg.com/pics/misc/chew_it.jpg>

This wolf went on to become the alpha pack leader, not unlike Al Franken.

------
fablednet
Keep it simple -- be honest about your skills and willingness to learn. It's
great learning on a job but you need honest communications with your new team.
Make sure you know enough (or trust you're learning process enough) to give
the company value or not get in over your head for something mission critical.

Once you've gone through the interview process and they've hired you, trust
them! Don't second guess yourself. At that point, tips are:

* Be prepared to spend time outside of the job getting up to standards on the code base or things you don't understand, especially the first few months. You want to make sure you can also deliver what you've contracted for.

* Are you willing and comfortable asking for help from other people? If you have good sources to go to and you go to them frequently while you're learning, that'll help a ton.

Anecdote: I've seen folks (it doesn't sound like you're one of them though,
tho) who kind of hold their breath and hope folks don't notice what they don't
know. That's toxic: bad for the company _and_ for the person (it stops them
from being able to learn b/c they're so afraid to admit they don't know.

As long as you trust you can learn, work hard, and deliver -- go for it! There
are always going to be new things to learn and jobs that are "just beyond us".
It's finding the line between "way over your head" and "a good stretch" that's
important.

Good luck!

------
user24
Another thing: that thing with comparing yourself to others never stops. I
still compare myself to other programmers and think "wow, I'll never reach
their level", and I just graduated from Oxford with a masters in computer
science. I'm not bragging, just saying that _whatever_ level you're at,
there'll always be other developers to look up to and aspire to. You should
never let that discourage you.

~~~
doyoulikeworms
>...whatever level you're at, there'll always be other developers to look up
to and aspire to. You should never let that discourage you.

In fact, it should be considered a great form of encouragement! I'm a very
green developer (1 year experience), and the fact that there exists
individuals orders of magnitude more impressive than me at my craft gives me
great hope for future growth.

It's a challenge, an inspiration, and direction all wrapped into one.

------
kayhi
Here are a couple characteristics of the elite in a field (certainly
exceptions exist). 1) they know that they are decent to the point that they no
longer need peer approval and 2) they have a better understanding of how vast
the ‘knowing what you don’t know’ really is. This can create interesting
situations in which the best in a field will be the first to tell that they
don’t know. I think you are getting to a good place since you realize that
there is quite a bit left to learn.

Perhaps instead of thinking: ‘Am I good enough’ think of it as ‘How can I
improve’. The idea is to shift the focus toward being your best, which is
largely under your control while how hard other people work is not. Those that
are internally driven tend to do better since they are trying to maximize
their situation. By helping your friends in order to improve your skill set it
seems you are doing just that.

------
tsalfie
Thank you for asking this. I am in a very similar position and just recently
threw myself out there for a rails job. After showing off some small and
simple projects I've done, I was told that I need to learn more (specifically:
TDD). So, I'm reading and trying out everything I can and will repeat the
process.

------
hexis
Something I've learned in the last few years is that I can almost always think
of a reason why I will be unable to accomplish any goal. Which is to say, if I
only pursued goals I was sure I would accomplish, I would never pursue
anything (which is effectively what I ended up doing for a few years, without
really noticing the hole I'd dug for myself.) My current MO is to not deny
myself preemptively and to just go ahead and pursue the goals I want to
achieve. As it turns out, it's OK to try and fail. It's even better to try and
succeed. I'm not haunted by failures in my life as much as I am haunted by
roads not traveled.

------
Nervetattoo
Take the job, get intimidated when you realize you are completely out of your
league and get fired within 2 months. In other words; Your worst case scenario
is 2 months paid experience learning more.

I know, it IS scary but trust me that will pass.

------
bluesnowmonkey
Get involved with programming-related user groups and meetups in your area.
The first time you hear a dumb question from a guy earning six figures at a
Fortune 500 company, you'll realize we all have a lot to learn.

------
datapimp
You should take it because being slightly under pressure, and worried, creates
the emotional environment that is most conducive to learning. You are forced
to focus on what is essential, and have a constant source of external
motivation.

Just think about why human animals have the capacity for learning and
knowledge in the first place. It was for survival in a much harsher setting.
Jumping in water which is just a little too deep is a good way to simulate
this.

Good luck

------
thirdusername
I've learnt two things when facing those questions myself.

* Only compare yourself to the worst people getting paid to do something when figuring out if you are good enough.

* You can do what you can learn.

------
runjake
You're good enough when you do, do, and do some more and aren't sitting around
wondering if you're good enough.

In other words: you're good enough, now get busy.

------
sirwitti
after more than 2 years working as freelancer and (hopefully) soon starting my
own business i still consider myself kind of inexperienced. not because i´m a
bad programmer, but because there are so many awesome people writing software.

so keep learning stuff every day. and more importantly start working
somewhere! every waited day costs you time.

------
scott_s
_How do I know if I am good enough?_

You never will. Ever. That's the difficulty: doing well despite constant
uncertainty.

~~~
riledhel
You should add "that's the challenge: also doing well despite constant
uncertainty"

------
ashitvora
It's very easy if you Do it.

Don't think too much. Just start. Everything will fall in place.

Most people fail because they don't do it.

------
haploid
"ecommerce" is a fairly broad term. If you're referring specifically to web
retail, I can make a few comments here.

First, the problems to be solved in web retail aren't particularly "hard" in
comparison to the kind of problems being solved by, say, the more recent YC
startups.

One thing that is critical in web retail is good architecture and clean code,
specifically with interface coupling. Between third party order/product feed
integration, promotions, special offers, sales tax, duties, shipping concerns,
etc, the "special case" and edge condition pile grows very rapidly in this
industry. Building a sufficiently generic framework for your system and
keeping concerns as loosely coupled as possible is probably the most critical
aspect to the technology of a web retailer.

