Hacker News new | past | comments | ask | show | jobs | submit login
How do I know if I am good enough?
37 points by dmak on Oct 14, 2010 | hide | past | favorite | 34 comments
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?

Right now, I am taking working on some freebie projects for my friends so I can further develop my skills.

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?

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.

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

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.

Then you get more pressure. You want fit where you are, don't want to let anybody down. And from the inside you get second breathing and try try try, and one day you see that you are far away from your start.

You can always ask your questions online (StackOverflow and other forums).

People are always ready to help.

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

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.

You want to be working right on the edge of your abilities. If you're in your comfort zone you aren't going to learn anything new. If you're completely in over your head, you'll just flounder. Working right on the edge lets you make the incremental improvements in your skills that can take you to excellence.

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.

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.

I'd agree. When I started at my current job (my first real programming job, other than what I did when trying to learn), I knew very little of HTML, JavaScript, or any other language, really. In the year and a half since I've been here, I've learned quite a bit, becoming (in my humble opinion ;) ) one of our best coders, and if you're dedicated to learning and succeeding, you really can't go wrong. Like the poster above me, just go for it and try.

Upvote. At least in Australia, it's pretty hard to actually get fired (generalisation, but holds up pretty well). There's no harm in jumping into something, taking a hit with the learning curve and busting ass to get up to speed. If a year down the track you're embedded into the process / team and performing, nobody will give a shit that you spent the first three or five months building up your skill / role.

It's a better model then getting into something you know you're fully capable of and having no incentive to perform like hell. Comfortable but mind destroying.

>What's the worst that can happen?

Ending up on a pip which ruins your career.

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

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.

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

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


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

You can supplement that video with Courage Wolf:


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

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!

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.

>...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.

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.

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.

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.

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.

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.

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

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.

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.

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.

How do I know if I am good enough?

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

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

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.

"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.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact