Hacker News new | comments | show | ask | jobs | submit login
I’m young, inexperienced and a perfectionist (medium.com)
133 points by nickjackson on June 27, 2013 | hide | past | web | favorite | 123 comments

56 instances of the word "I". That's your problem. All the rest is fluff.

OP, try rewriting this, substituting "he", "she", "they", or "you" for "I".

Funny how quickly your perceived problems melt away as soon as you stop dwelling on yourself and start focusing on others.

Edit: I realize that OP is being slightly sarcastic, but I took this as an opportunity: This is a condensed version of pretty much the same feedback I've been giving people struggling with themselves for years: It's not about you! As soon as you get that, you can move on.

A recent instance:


I found the OP's style of introspection refreshing. I am not sure why it matters how many times he used the word 'I', after all, it is a post about the OP himself.

Yours is not even a valid criticism. How about commenting on the actual content surrounding the words you're focusing on instead of arbitrary metrics that enforce your own perceptions?

There is a positive correlation between frequency of use of personal pronouns and of insecurity and inferiority.

This sort of inferiority can manifest itself structurally, eg. an army private vs. a captain, or individually, eg. insecurity and conceit. Based on the sheer volume of personal pronouns, it is clear that he is being subjected to a sort of myopia, and that he can't look at the issue objectively.

Removing oneself from the situation can be a valuable tool used to create objectivity, and one that this person has not attempted to employ.

I'd love to read more about the correlation you mention. Can you share a reference to a relevant publication ?

It was discussed in The Secret Life of Pronouns by James Pennebaker (Although I only read about his finding in an interview in HBR). A few of his most salient points are explained in this article: http://www.psychologytoday.com/articles/201108/the-is-have-i....

Through the wonders of Google Scholar, I give you: http://homepage.psy.utexas.edu/homepage/faculty/pennebaker/r...

It is written for a psychology journal, but the Annual reviews series is typically not loaded down with any more than the usual academic journal.

Most HN readers are focused on technology and entrepreneurship. Comments like this one, which have to do with language and writing style, tend to get a bad rap as being "irrelevant" or "arbitrary."

But your comment is definitely relevant and potentially useful to the author.

Even though most of us are tech- and business-minded, we have to be aware that language is a big deal. The words we use to describe our products, startups and career experiences really affect how people think of them.

In this case, using so many instances of "I" makes the sentences repetitive and harder to read. That doesn't mean the article is bad or uninteresting. It just means the author has an opportunity to improve his already well-done essay by switching up his sentences and maybe focusing a little more on his environment.

Wasn't the OP's intention to write about themselves though? Changing I to he/she etc doesn't seem like it would make much sense? Could you expand on what you mean?

Yeah "I" don't get it: on face value, "I" disagree; surely it's nice to take responsibility rather than blame that which is external.

It's irritating when you read a narrative that is very heavy with personal pronouns, because you generally are reading a bunch of declarations strung together. As a reader, you're stuck wading through the muck to figure out WTF is actually being said. The whole point of introspection is to examine your actions and reach conclusions. Nobody cares about the minutae. If you're describing a trip to Tahiti, don't make me read about how you fed the cats and cut your toenails before heading for the airport.

For example:

"We opted to go for a web app purely because I was the most familiar with this platform but even then I had no prior experience and my friends were aware of this. I would be balancing my time between this and a well paid part time job at a local school as a music technician."

56 words and bunch of fluff. It sounds like a deflection of guilt.

What does it actually say? "I already had experience with web apps, so we decided a webapp would get things done quickly."

Good example, my issue was really that the suggestion of changing I to he/she etc by edw519 was overly flippant and added little value to the OP; who probably liked constructive feedback - nice job on clarifying

Writing is a craft like programming in that you must learn by doing, and you need to leave rough edges behind to polish. My writing ability was "leveled up" by merciless teachers who would torture us with seemingly impossible tasks.

One of my favorite teachers ever was a History professor who taught "The History of Warfare". Writing assignments were due every week and covered a fairly substantial scope. The catch: It had to be written by hand (this was 1998) and had to fit on one side of a sheet of college-ruled loose-leaf paper. The first draft of my first paper was 6 pages long, and took about 3 days to proofread/boil down to what it needed to say. (I still remember way too much about Gustavus Adolphus because of that.) By the end of the semester, I was able to whip out a single sheet in about 45 minutes. I learned alot about the history of warfare, but learned far more about clarity of thought and getting to the root of things.


I agree on passive voice - it was longer than it needed to be.

I believe this is typically where someone would respond with a snarky wooosh comment.

And yet if you don't use "I" then some other expert will tell you that this indicates a lack of confidence.

People who are hiring don't respond well to a lack of confidence. They will assume you suck and show you the door.

This seems like an arbitrary comment. He was writing about the choices and mistakes he made. He could avoid "I" but then start blaming his problems on other people.

This isn't a story about successfully delivering a product, it's about the personal mental failures and quirks that prevent success. It's a great cautionary tale that describes his thought process for others to avoid those traps. Without the self-referencing statements, it wouldn't be as useful.

I appreciate what you're saying. That's great advice. Sometimes it's helpful to look at yourself from the outside.

Here is a td;lr.

I keep on making the mistake of throwing away what I've got and starting over because I've learned how to do things better. I've just made this mistake again, but it's better because I've learned how to do it better this time, honest.

My response to this.

Don't write the retrospective bragging about what you've learned until after you have demonstrated success in a measurable way. I've encountered the described failure mode in other people, and unwarranted optimism about recent improvement is part of the pattern, not a sign of actual progress.

(Let me throw out a long shot because it is easy to investigate, and if true would potentially let your life be changed for the better. The person that I am most specifically thinking of that fit this pattern later turned out to be manic depressive. This article describes specific events that could fit as well. So..unlikely, but with a big enough potential payoff that it is worth a visit to a competent psychiatrist.)

Also: I chose ruby on rails because it was hip. Then I chose node.js because it was hip. Now I'm evaluating those choices as mistakes because they were hip, because that's hip.

Get a job, get on a team, write code, and stop reading about writing code!

Honestly, it seems like you crossed paths with a personality on an extreme end of some scale.

I remember when I was a teenage hobbyist developer writing my first web apps in ASP. I learned so much, so quickly, that I also rewrote most things a few times.

I didn't try to fix that. I just naturally started learning less quickly as I grew more experienced. Now, I never threw away a whole stack like that, but then again, it's a lot easier to do that now (A lot more stacks, a lot more documentation).

This guy is in college. He's never done this work professionally. I know you're very hedged in your suggestion but IMO it's still entirely unwarranted and tainted by a bad experience you had.

What I see is the common mistake of confusing inexperience for complexity. He didn't know all the ins-and-outs of rails, probably went against the grain, and had unmaintainable code. Same thing happened when his browser app became complex.

I don't know why you included the bit about manic depression. If you can pick up a framework and build a full production app on your first try, then you're probably more impressive than the rest of us.

I threw it in as an admitted long shot because I was sharply reminded of personal experiences with someone who would have been much better off receiving that diagnosis decades earlier than actually happened.

A small chance of a good outcome and no real cost in the common case is worthwhile mentioning IMO. Particularly if it is sufficiently hedged that it comes across as the honest "really random, really far out possibility that I know is probably wrong" thing that it is.

I don't think the buddy who wrote the article is manic depressive... Definitely a long shot. He just seems like the stereotypical ADD teenager/college freshman who has no guidance. I feel like his experience is very similar to my early working years, especially when you are working on a project by yourself, with no one to benchmark yourself against.

That being said the article comes off as way too much of a "Look at all teh knowledges I have" humble brag, with not enough "I severely screwed over my friends (even if I was working for free) because after 2 years I still haven't delivered..." In the real world this situation results in unemployment not a self-congratulatory pat on the back.

He didn't screw over his friends.

I'm sure he feels like he did. But he didn't. Unless he was actively lying to them along the way. Which is plausible but certainly not something I would assume about somebody.

He's in school. He's done the best he could with a hard problem. He shouldn't be hard on himself and IMO you shouldn't either.

Yeah I was more than a little harsh, and that was definitely uncalled for. He has taught himself an impressive amount and the third time's a charm...

Jesus when i read this Article I see me... I love to start new Projects but i never finish them(only when i must because i customer is kicking my ass)... I always have a lot of motivation... but when i sit down and must read or do something i lose focus very often and maybe work on it for 30 minutes or 1 hour and then i start to watch some stupid youtube videos...

To this day i dont know how to focus... I got depression last year because... i dont know everything was not going the way i wanted but i dont changed anything... today i feel better but i still cant get things done... i was reading books/blogs/etc about how to organize/focus/motivate but nothing every really worked for me... not money/fame/etc helped to motivate...

maybe someone can help or share tips... and if you want dick around you can but i want answer or comment you...

I had a major problem with this back at college. I'd read articles about how to study, or focus, instead of focusing and studying.

The problem, clear in hindsight, was that actually hitting the books revealed how little I knew. Which is natural when you are studying a new subject, but filled me with fear because, well, exams.

It wasn't a happy time in my life. Maybe it's the same for you now. But that meant that rather than have the self belief to brush off initial defeat and study more, I found myself drawn towards distractions. Better to not know how bad you are than to work to improve it.

The sites you make are never going to be as good as the ones you imagine. Doing that animation, or adding this feature, is going to turn out to be harder than you first thought, and you are going to compromise.

If your self esteem is tied up in your work, or how good you are as a programmer, and you are like I was, then that means 'you are a bad person'. Better to read another blog than accept it.

Now I'm in a happier place, it's good enough to do my best. If I exceed expectations, I feel happy, but if I blow through a deadline, I'm confident that the next programmer would have too. Not happy about it, but confident.

So if you are like me, I'd suggest fixing my self belief and negative thinking yielded more than better time management. Hope this helps.

thank you! I will try to change my mindset How do you did that? i mean how to not think negative about something?

What worked for me might not be the things that work for you.

For me the following were useful:

-I worked with a 'life coach', and I guess we did something like CBT. I'd be a bit embarrassed to tell my friends but it was very useful.

-Working at a company, as an employee, I slowly got the trust and respect of my colleagues. Not having co-workers must be one of the hardest parts of freelancing. Even if I'm not happy with my performance on a task, I know my boss knows I'm usually effective, and that does help me remember that too. Maybe if you worked in a group with other freelancers instead of alone, it would be easier?

-I got into a very good relationship. That means that my work is only part of what I care about, so if it's going badly, then it's not all of me.

More generally, if you are struggling a bit, there are probably things in your life that would legitimately cause anyone stress.

Maybe you are taking on full stack projects, but are only comfortable with (front)(back) end work. Maybe your under pressure from your family to make money. Maybe you are having trouble learning the business side of things, while coding at the same time.

Either way, if you can work out what those are, and avoid them, it'll give you more energy to deal with everything else.

Sometimes though, you need make a big change, sacrifice something. I didn't carry on in academia after the masters where I struggled, and went back to programming instead. It seemed like I was giving up on my future at the time, but it's very easy to come up with a new vision of your future. It's much harder to struggle towards one from a bad place. Could it be worth being an employee for a bit, then going back to freelancing when you are more confident? Or going back to school for a bit (there is always funding)?

Those would be pretty radical - you've built a business, and you'd lose a lot of it by putting it on pause. But in HN terms, if what you are doing isn't working for you, pivot till it does...?

A way I have found to get round this is to set small, achievable milestones, it sounds like you are getting caught up in the "enormity of it all" - when we started our company the aim was "to enter competition X", then "get £5,000 in grant funding", then "3d print a prototype", then "build a test rig to test prototype", then "raise some investment", then "get a professionally designed product", the "set up 1 trial with potential customer", then "launch to public" etc.

By breaking it down into small steps and focussing on the next achievable goal (we actually went even more granular than this but you get the idea) you don't get swamped, and if it all ends and you fail to hit a mile stone then hey, at least we hit 5 out of 6 or 10 out of 11 milestones (depending on when/if you fail).

We're still going 2 years later using the same process and it works really well

Solid advice. Split the problem into many smaller problems and start working.

One thing to keep in mind though, TODO lists can give an illusion of progress and accomplishment[1]. That is assuming you split up the problem and create a TODO list out of it which seems like a reasonable thing to do.

I remember a discussion on HN about procrastination quite some time ago and there was a comment which made me think a lot. The commenter basically said that he procrastinates by writing code, because that is what he loves to do.

If you are procrastinating writing code by doing something else, perhaps you simply do not enjoy writing code and need to explore the world for whatever it is that you love doing?

I am still not sure myself, I enjoy writing code but there are other jobs which I think I would enjoy more.

[1] http://www.codinghorror.com/blog/2012/10/todont.html

This. Every time I've started a project and then abandoned it shortly afterwards, it was because the goal was too complex and I didn't break it up into small-enough pieces. Every time I've succeeded at a large project, it was because I was able to set small, testable intermediate targets. That small shot of dopamine you get when some small thing works does wonders for your motivation to keep at it.

thats smart ! thank you. so basically you started to plan things better before you started them

Essentially yes, but rather than plan the entire thing - just plan the next 1 or 2 steps and make sure they work toward the main objective

okay i think i got it. focus the goal. break it into milestones and break the milestones into small steps but only plan the next 1 2 steps

thank you !

I'm not a doctor. But I've been seeing a very talented therapist (in SF if anybody would like a referral). Working with him is like that refreshing feeling of working alongside an entirely competent teammate. It's wonderful.

Channeling him -- from things he's told me about myself -- I think he's say "What you're describing is a case, maybe a mild case, of ADD."

I've always rejected that comment when he made it, sure it was some failing of myself and my own "discipline." But you know what, there's nothing nobile about being hard on yourself and trying to enforce "discipline" through intolerance of your longtime behaviors.

Accept yourself, that a part of you wants to play and not work, accept that there's nothing inherently wrong about that. You're NOT a lazy person I'm sure. You're not a bad person. You're not doing anything bad. But if you feel your life would be better if you changed these behaviors, then try that out.

There are doctors (especially if you're lucky enough to live in a large city) that treat ADD without stimulants. But it's also possible the medication is exactly what you need. I'm a skeptic of remedies in pill form but also you can't argue with results.

For me, a big part was bad time management skills going back 20 years to grade school. So i sat down each morning and again after lunch and blocked out my next 4 hours in 30-minute increments. And I followed it. And I got a Chrome extension that began tracking time spent not working so I could acknowledge that it was happening with real hard numbers.

Over time, I got better at being productive. I started blocking time into hours. Then 2 hour blocks. I still do that on busy days. 2 hour blocks. It works well for me.

There's too many moral judgments passed about these things. You're a good person even if you manage time poorly. I promise.

thank you!

maybe you are right. i will try it for some weeks. can you name the extension for chrome?

ZeeFrank sums it up well in Brain Crack. http://www.youtube.com/watch?v=rDHb3vC9OmE

Additionally, focus comes from discipline. Discipline is forcing yourself to do something even when it's not what you might want to do at that moment.

How to become and stay disciplined is often very personal. Some people focus on the long goal, others on the minutia going from task to task, and still others focus on time (Pomodoro) or lists (GTD).

thank you nice video! i have discipline. last year i lost about 30 kilo because i wanted so!

To make a very, very long story short, I've clawed my way into my second (and current) career from a very dark bout of depression. One thing that has helped me focus is the right combination of medications (after talking to a doctor, of course).

oh i hope you are now cured! but i dont think that medications can help and that its not that bad(i hope)

same for me, more or less.

same here

I hope that maybe some other comments will help you !

This is how everybody learns - you make something, see the flaws in the process or the outcome, and then iterate again to fix them. Your technical approach to it is perfect, just keep it up.

However, you've missed the key point in the game - hustling. By the sound of it, you were not picking up a paycheck while doing this for 2 years. This is a major mistake. The product itself doesn't matter - if you're inexperienced the product is going to end up pretty bad, so the exact product you're building is largely irrelevant. The key is to hustle yourself into a position where someone is giving you money for you to learn. Late stage start-ups are usually perfect for this. You've wasted two years of potential income and fancy sounding positions for your CV, don't waste a third.

I disagree with you that the product doesn't matter. I've worked at a few startups and it really matters if everyone can get on board with the vision of the company's leadership. It improves your concentration if you think you're actually making a positive difference in people's lives with every feature you develop or bug that you fix. And it improves team motivation and cohesion if you all think that what you're building is a really cool idea.

TL;DR Adding a feature to a product that you don't care about is harder that adding a feature to a product that you do care about.

It's a cost-benefit analysis. As a completely entry-level developer, I could a lot of time trying to find a company whose product I believe in that will hire more, or I could spend that same time working for whoever will cut me a paycheck, and be in a much better place to decide what I care about working on once I have a bit of actual experience and money in the bank.

It would be lovely if you could just walk into a meaningful project that you care about, but that's not how it works in the current system.

I did this, and I wish I could encourage others to do the same. Honestly.

I started completely at 20 and not even 7 months later I was getting paid above average in Seoul to do the same thing, basically. Except I had expert help whenever I needed it in the form of coworkers.

I'd have to say that the two biggest factors contributing to this is that people like the OP probably don't know about opportunities available to them (though hard to imagine given the outlet used to express himself), and the general "5+ years of experience/ex-Googler" mentality really seem to discourage trying. Hell, I've gotten over a year of professional experience and sometimes I think I should just take an unpaid internship if I wanted to find a new job now...

That's why I still use vanilla PHP & Postgres for web projects. I don't use any hot new technologies, I don't use frameworks, I don't do unit testing. I try to use as little client side JS as possible. Whenever possible, I use static HTML.

The advantage is that I can create a working prototype in days. I can show something to the client very early, and I don't spend months to fulfill specifications the client didn't really understand in the first place.

When I leave the project, any PHP developer will be able to pick up and implement changes within hours. My code isn't elegant in any way, but it's simple.

I hope no one looks at this as advice... I was in this position for a long time, and looking back, it's a completely unsustainable (and, in my opinion, irresponsible) method of development.

Problems with PHP itself aside, rolling your own from scratch only ever works out well for projects that start small and stay small. Even if the code is sane and readable, a developer starting with a site like this will need to understand either all of the patterns that are being used or to read and understand all of the code before being able to confidently and effectively work with it.

Contrast this to a framework, where similarly-sane code will yield something anyone with experience in the framework can almost-immediately begin working with.

Both have an up-front cost; however, the first incurs that cost every time any new developer starts working with any project done in such a way. The second is incurred once, period, making the startup time on any project on the same framework dramatically lower.

Frameworks are by no means a silver bullet, but their utility should not be underestimated, and the very nasty maintenance cost effects of the parent's post should be similarly understood.

The most important thing about a codebase is how it is designed at a large scale, its architecture. Using a framework often dictates a specific architecture, and this might lead to more manageable code bases.

But you can come up with a clear architecture without using a framework. For example, most projects I work on are well suited for a modular design. I can build them from many small, independent parts. So I write lots of PHP scripts consisting of some SQL queries on top and some presentation logic below. Introducing an ORM and separating Model/View/Controller would just add unnecessary complexity!

In my case, modularity ensures maintainability; there's no need for anyone to read all of the code before they can start working on something. Reading all of the code is only necessary if you write spaghetti code; but inexperienced developers will have no problem writing unmaintainable spaghetti code using any choice of framework!

I don't use any hot new technologies, I don't use frameworks, I don't do unit testing. I try to use as little client side JS as possible.

When I leave the project, any PHP developer will be able to pick up and implement changes within hours.

Famous last words for PHP apps rolled from scratch with no unit tests.

I find the most utility of unit tests, aside from basic validation and regression testing, actually comes from the fact that you are documenting usage examples of your entire API.

Indeed. This aspect is especially useful when new developers join the team and they have questions about which modules and methods to use for common tasks.

Hmm , I kind of have the opposite experience having picked up a bunch of PHP projects over the years.

Without tests I have less confidence with modifying another persons code. Without a framework it can be difficult to figure out the structure unless there is good documentation or the project has been well designed and structured (almost never the case).

Also I tend to either find problems with SQL injection,XSS or CSRF because they don't have a framework to help solve these or they have implemented their own solutions which are inevitably buggy or weird in some way.

Well he was talking about a prototype. You don't necessairly need to worry about such things if you're just bashing something out as a showcase, otherwise I'd agree.

That said, they don't allow SQL injections because they don't have a framework, they did it because they're stupid. Using a framework (and following the docs) will help save us from their stupidty, but so would learning about security issues.

Frameworks are largely about speed. They should make you develop quicker because loads of code is pre-written and generally it is of a higher quality than what you'll knock out in a few days because hundreds of man hours go into those libs.

That doesn't make any sense.

Once you learn a singular framework, it cuts out any additional effort you need to go through to create said prototypes and you end up with a prototype that can be extended to production standard.

Sure you need to spend the time to learn it, but that's a one time deal for the most part.

I took the same approach for a while up until I started rolling my own framework to speed things up. Now I just stick to Yii + postgres. Backend gets developed first with Yii's code gen tools, then the sexy ajax fun gets put into the clientside and the auto genned CRUD code gets extended to pass any additional fields I need back to the client.

Yii's CRUD code gen is incredibly nice to work with off the bat, so it really comes down to customizing json form validation messages and packing some partials views in with the response.

edit: It has ended up being that a good 70% of my time in web app dev is devoted to the tedium of changing little UI crap (Can this blue pop a little more? Can you put some shadowing here? I like this slider but I'm not feeling hyped about it... repeat ad infinitum), and not so much with complex backend work. It takes about two days, as you said, to get the server code going strong, and then two weeks to move divs around by an em here or there.

I prefer microframeworks like Flask, because I can get prototypes up in hours that incrementally become what it's supposed to be, scaling well to a large complicated application with deployments, unit tests, and documentation.

...you lost me, I was expecting to read something like "as all the interesting stuff happens on the client side anyway" after the first part with using vanilla PHP, but you didn't, so you would either end up with a "thin-client + thin-backend" (which is close to... no site/app at all), or you end up with spaghetti. Care to share a github link of such a website or web-app to see for ourselves how easy it is to "pick up and implement changes within hours"? I bet it's more like diving headfirst into a pool of spaghetti once the project grows past a point...

I'm not really seeing how what you are saying is any different then Django, Rails, Flask, or Sinatra for me and many others. I can stand up and prototype really fast in any of those frameworks and not have a mess of php left over at the end. That's kinda what those frameworks are made for. The op couldn't do that because he didn't know what he was doing. Which is fine we all start somewhere but we shouldn't choose worse tools just because we don't want to learn how to use the better tools. Things like Django's admin interface and Rails scaffolding are huge boosts to productivity I can't imagine giving those up out of a lack of knowledge or laziness. I don't mean to say you are a bad developer or lack knowledge but you reasoning is the exactly why these frameworks were created in the first place.

> When I leave the project, any PHP developer will be able to pick up and implement changes within hours.

Congratulations. But will they be able to make changes without breaking what you did? That's the mark of a good developer. Anyone can make something, but it takes real experience and constant thought about how your code will be observed by others down the line to make a truly great product.

> Problems with PHP itself aside, rolling your own from scratch only ever works out well for projects that start small and stay small.

Small projects were what PHP was initially designed for. By the way the OP is talking, I believe that he's working on mostly brochureware or at least small/simple apps that don't require 24/7 monitoring or maintenance.

This is good advice, as long as one reads it as "implement with technologies you know and trust". I'm the same way, in a sense, but my technologies list is much longer than PHP + Postgres. It gives me an advantage of having many tools in my toolbox.

Some of the fun for a lot of us is to try out new technologies, when creating a new projekt. It simply motivates me more, when I also have to learn new stuff, and not just do the same old.

Sticking to proven technology like PHP and Postgres I think is solid advice when you actually have to deliver something.

Avoiding frameworks, unit tests and client-side JavaScript is probably not as helpful. True, they can add bloat and complexity if you don't learn how to work with them.

Check out a framework like Laravel. Once you get over the hump you won't want to look back. I have my own framework called Phreeze which of course I'm partial towards but there are more recognized ones out there.

The world isn't in black and white; it's possible to choose something between the two extremes. Sure, don't blindly jump to the coolest new thing, but also don't stop trying/learning new things.

Did you miss the part where blaming the framework/tools was a mistake?

you are trolling, arent you ? :P

Sounds like you learned a lot. The only problem here is the lack of shipping—that is what made you feel like a failure. Psychologically it would have been better to have finished a crappy v1 then do a rewrite in a new language for v2, but in practice you probably learned an equal amount this way, so cut yourself some slack.

And remember, being a perfectionist is a prerequisite for being good at anything. If you aren't self-critical you won't improve, and no one comes out of the gate being good at anything. Obviously that's necessary but not sufficient since many people are disheartened by their early incompetence and give up before they've even really gotten started, but it's not a bad thing.

I think coding kinda forms us to be perfectionists, because a small mistake can disable entire programs.

I'll share my epiphany that I've learned from HN that PG said...if we're not embarrassed at launch time, it's too late. Being a perfectionist my self, it's a brilliant statement.

Reid Hoffman, founder of LinkedIn, has a similar quote, "If you're not embarrassed by the first version of your product, you've launched too late." I don't know if one came before the other. Reguardless it's a good sentiment to have. The only thing that matters is launching. You can find the perfect shade of blue for that button after you launch.

Funny you mention styling, this is where a lot of my time gets consumed...CSS3 (love & hate)

He has a lot to still be embarrassed about. LinkedIn is the worst interface I've ever seen.

I don't know I've met my fair share of lazy "good enough" programmers that happily reuse code they wrote months, even years ago.

What's wrong with reusing code? Isn't that exactly what libraries (and frameworks) are for? Isn't that a fundamental programming principle (code reuse)?

Yeah, I don't see the problem with this. If the code is known to work, why do it over again? Just because it's a month old doesn't mean it's necessarily bad. Remember, laziness is one of the three primary virtues of the programmer.


In all seriousness I believe I have pretty sharp Internet sarcasm detection skills but I can't tell without more context how much of this post is sarcasm? If others didn't see it that way, can you re-read it again through a "this is pure dripping sarcasm" lens/filter?

I read it as a sarcastic detailed break down of the excuses new developers use nowadays to justify their lack of discipline. Or.. am I wrong?

It's that even more annoying modern invention: post-irony, where the writer doesn't have any faith in their own ideas so they hedge their bets with this strange kind of noncommittal sarcasm.

It is the plague of the modern age, and the real reason why hipsterism is so hateworthy.

If possible, I tend to look up words/terms I've not heard of: https://en.wikipedia.org/wiki/Post-irony

... are you saying in my effort in sounding all serious and sincere, that I, in fact, align myself with hipster philosophy and world views?

No. Unless your sincerity is merely the surface layer below which there is sarcasm, then another layer of sincerity, then a layer of irony, then more sincerity, and so on to the point where you have absolutely no idea of what your real opinion is, because you never had one in the first place.

Notice how 5-10 years ago, people were wearing ironically bad second hand clothes from the 80s, because it was fun, and it marked them out as "in on the joke." Then over time, that became so much the fashion that the definition of "good" clothes realigned itself to cover these things, so now people are walking around with handlebar moustaches, tie-dye hotpants and wolf moon shirts thinking its completely normal. The lines have been blurred, "good" and "bad" are slowly breaking down as concepts, replaced with "in" and "out."

The only way to escape it is to simply not think about any of it, and have absolute faith in your own objective internal preferences, whatever they are. Aesthetics is the only arena of thought in which fascism is not only acceptable, but morally right. Make full use of this fact.

EDIT - see also: the rapgenius blog currently on the frontpage: http://news.rapgenius.com/Lemon-how-rap-genius-raised-s18m-i...

Funny, I read it as a entirely sincere account of his tribulations. I think the title of "Don't hire me!" has put people off, because it sounds absurd. But maybe the whole thing is absurd, and I completely missed the sarcasm.

You're reading too much into it, it looks like straightforward self-deprecation to me.

Just as proof of my sincerity - I re-read the article/blog to debug my interpretation.

The problem was I didn't read the last 2 sections, of which he clearly talks about what he learned. Thus I scientifically conclude this is not some weird hipster-ish ironic post of which maybe I'm the only one in the world who misread it that way.

Maybe one day someone can make a machine learning based hipster irony or post irony detection browser plugin so I don't have to think about it.

I don't remember ever being so utterly inexperienced so as to firstly adopt a platform like Ruby on Rails, and then follow it up by making an even worse mistake in adopting Node.js.

These platforms seem hip and cool but they actually need extreme levels of discipline, awareness and experience to actually use them in the correct way.

I don't think the guy is a perfectionist at all. Perfectionists deliver finished working products. Perfectionism is a state of mind of not knowing when you are actually "finished finished". Don't make the mistake of thinking your inability to deliver a product is because of some perfectionism trait. It very likely isn't. It's more likely to simply be caused by incompetence.

> Perfectionists deliver finished working products.

From the psychology definition of perfectionism, there's both the version that lets you accomplish a thing well and the version that hinders you from completing something.

Anecdote: When it comes to me doing anything remotely artistic, I get so bogged down in fixing the details that I ignore the big picture. In reality, trying to perfect the details means I'm focusing on things that are going to jump out at me, but not at other people.

"Perfect is the enemy of good" is a good proverb about this.

"These platforms seem hip and cool but they actually need extreme levels of discipline, awareness and experience to actually use them in the correct way."

Is there a platform for which this isn't true? Anyone doing anything novel spends most of their time doing things the wrong way.

And it's odd that you single out those platforms -- RoR is extraordinarily beginner friendly, and less than most other platforms helps you stop from shooting yourself in the foot. Node JS with express again is quite trivial. The platforms have literally nothing to do with their problem (the eager platform jumping is a symptom, not a cause), and they would be non-completionists in any other platform as well.

They are beginner friendly, sure. But that's almost a bad thing.

As this poor guy found out the hard way. Building what was presumably quite a large system inevitably turned into a sprawling mess that was hard to maintain and develop any further.

There is extreme levels of immaturity in the RoR and NodeJS communities (when it comes to the dissemination of good software engineering principles and practices) and unfortunately this often projects outward onto its users who don't know any better. Hell, it was only a few months ago the creator of RoR was poo-poo'ing the very concept of DI/IoC and therefore SRP. So it's no wonder the poor sods in that community that read his blog as though it's gospel end up producing unmaintainable heaps of crap that ends up having to be scrapped.

Building what was presumably quite a large system inevitably turned into a sprawling mess that was hard to maintain and develop any further.

I'm not trying to be difficult, but for which platform isn't that just as true? I have seen disastrous spawling messes in Java, .NET, PHP, RoR, JavaScript, C++, and on and on. Platforms have a minimal ability to control self-damage, and many of the worst disasters of achieve-nothing projects are built in Java, with all of the best intentions and best practices in the world.

I've learned a few things to put a stop to this problem. I think in "engineer" mode. Engineers get things done that work. Creative perfectionists don't. I start a project making sure that I can build and deploy the simplest thing possible. I add one use case that works front-to-back. That gets me everything from the UI to the database. Get user feedback on that one thing, improve it if needed, then go on to use case two. Rinse and repeat. Don't go back and change frameworks, ORMs, languages, etc. Finish the project!

When I read the title, I thought, "Hey, that sounds just like me." But after reading it, I realized that his use of "perfectionism" as an excuse is just incomplete. Perfectionism can explain underperformance, certainly. A perfectionist might write half of a timed essay, and the part that exists might be outstanding. But incomplete or slow is generally insufficient when it comes to a job. While he may suffer from a bit of perfectionism, that's not what holds him back; he's simply indecisive and using "Oh, I'm rewriting everything" as an excuse for his incompetence, uncertainty, or anxiety for solving the actual problems. "Rails vs. Node.js" is a contrived, invented problem. It's really easy to blame things on the language or framework when things are tough, but I think everyone does this to some extent; it's not a problem faced exclusively by perfectionists. Wise perfectionists understand that perfection is impossible. I think the best programmers, overall, are both pragmatic and perfectionistic. People just have to get over their overwhelming preference for one or the other and use both to their advantage.

This seems so common, but few people can admit it (or even recognize it).

Congratulations on having this level of self-awareness, and I'm sure your future will be bright.

It's completely normal to have to start over a few times as a beginner. Learning to code is not trivial, and since you're not going to learn everything before you start writing code, you'll inevitably run into issues that you didn't anticipate.

That said, the OP could probably benefit from planning ahead a little more. It helps to focus on core aspects of the product that are not likely to change and to anticipate things that you might want to change. At first, it may be a little hard to hold your entire project in your head at once, but once you've broken it down into a few core components, it becomes much easier to think about things going forward.

It sounds like the OP is already arriving at these realizations, so good luck to him!

This is how learning works. Don't beat yourself up about it. Very few people successfully build perfect software products their first time out. A person should start out by aiming for the stars and failing -- that's how you figure out how reality works.

> I am not very focused and easily distracted.

Unless you are embellishing, get checked for ADHD.

Disclaimer: I have ADHD and OCD.

I'm not ADHD. I do, however, love chasing rabbits right into their holes. And exploring the intricate network of passages they've made.

What I mean is that as I search for a solution in the API docs, I stumble across other things that look interesting. Or bits of detail that further explain how this library is built. Or explain the dependence of this function on a specific language feature. It's fascinating. And ultimately, that information makes me a better coder ... but it seldom solves the immediate problem. And now I've got all these ideas for new projects. Or ideas for future features for this project. I feel focused (on obtaining my goal) but distracted.

Or maybe I'm building a new system. But to support feature F, I need this library. To serve feature Q, I need that daemon. To support that daemon, I need a database engine ... but nope, it doesn't support PostgreSQL. To support the database engine, I need a logging daemon with feature L that the bleeding edge metagammalogd doesn't offer. And why am I building all this again? At this point, I'm feeling not focused and also distracted.

Are you sure? I came right into the comments and did a Command+F for "ADHD", as this is what I thought as well.

Know that all types of ADHD aren't the same, and specifically that there is ADHD without the outward hyperactivity. Look up "Inattentive ADHD" - I am 30, and up until this past year I just thought that I had issues with procrastination, lack of follow-through, and was easily distracted.

Does this sound like you?

- Underperformed in school, despite being incredibly bright.

- Frequently didn't complete homework in school.

- Easily distracted.

- Shifts from one uncompleted task to another.

- Frequently skips large sections of text when reading.

- Procrastination.

- Frequently switches jobs

That sounds exactly like me, but I don't skip large sections of text. I also read and think and talk about programming a lot more than I do it. At work I don't have this problem. The work place establishes the focus, which is hard to maintain at home.

Anyhow, why should one get a diagnosis for ADD/ADHD. What difference would it make for a 20 something?

At least for me, just understanding myself better has helped me cope with the difficulties I have.

> I'm not ADHD.

Please note, I'm not saying anyone has ADHD. I'm not qualified to make that assessment.

However, I'm going to make a guess and assume you aren't qualified to make that assessment either.

Getting checked for ADHD and OCD has made a big impact on my life. I didn't think I had ADHD either. I was getting checked for OCD for something unrelated to ADHD, and this came up.

What I considered a normal life, being distracted normally, etc - well, I learned it wasn't normal.

I agree, the whole post sounded very ADHD

I experience this right now!

The saddest paragraphs were "Time to change" and "Learning from your mistakes", where he basically says that he is doing the same thing under a different name with the same lack of results :(

Nice write up. I think many people face the same problems me included. The problem for me is that I have never had a chance working in a team with more experienced developers. Which would teach a mindset, or bring some insights, of successful developer, which is implement the feature then return and improve as needed. Also solving so called "complex" problems brings rush of pleasure. So you start solving complex problems instead of getting the stuff done.

Poor guy. You are supposed to learn in your off time while taking home a cushy corporate paycheck, then quit and take over the world!

I saw a product idea for a product adoption platform where the end users could adopt maker's product and provide feedback along the way, no money involved as Kickstart. Human feedback is usually more motivating than self-conjecture. Thanks for the reflective piece.

I like his attitude, and I think he learned something most don't ever learn. I'd hire him.

Does anyone know of any good ad-dons or extensions to blocks medium.com articles from showing up on HN? By the amount of low quality articles that make it to the front page, seems like there must be some kind of voting ring for them.

Sorry, but a real perfectionist wouldn't have taken a photo with his MBP screen full of smudges -- he would have wiped them first.



Experience is an excellent cure for perfectionism.

about half the people in my developer peer group fit this description, especially the 'rails to node' path (well, not all 50% did rails->node, but more than a couple did, precisely because of the reasoning in the article).

It worries me that so many of us want to jump to this kids defence. He's right, you shouldn't hire him because a developer who can't ship is a developer nobody needs.

He's a junior developer. Give the kid a break. You were there at some point.

For sure, we all were. I did have to chuckle at the Technical Director in the sidebar, though. I'm pretty sure the qualification for technical director [should] include shipping > 0 products.

A developer who can't ship is a developer nobody needs. A developer who has shipped 0 things obviously can't ship. A developer who has shipped n+1 things isn't really different from one who has shipped n things. I mean, one product? That's not real experience. So, by induction, nobody needs any developers.

Y'all looking at this at a superficial level.

Sure, we all need somewhere to learn, but most of us do this on personal projects, at school or on low paid gigs under superiors who'll kick our asses.

I don't know many technical directors / lead developers who havn't shipped a single project and while some of you might call that "hustle" I call it lying.

this is a bit of a humblebrag isn't it...

Not really, since he describes how his youth and the traits that often go along with it (exuberance, relative inexperience, idealism, desire to be hip), have been actual obstacles to his progress.

Dont worry I am not going to :)

Cliche warning. Admitting that you have a problem is the first step.

Most young people are like this. You're not unusual. Difficulty focusing is pretty normal, but you do have to do something about it if you want to achieve anything.

I hate to break it to you, but the corporate world makes it worse. Now you're surrounded by unfocused, capricious, and disengaged people in a world where the worst people tend to have the most success. You need to take that for what it is: a motivating negative example, how not to live and what not to become.

When you're young, you wonder why most people never accomplish anything. Now you're getting older and seeing why. Lack of focus. Career incoherency. Bad management. Low drive. People let their time and energy and engagement get nickel-and-dimed by the world and soon there's nothing left.

You've learned a lot in 2 years. That's great! You've probably gotten more out of the past 2 years than 95% of people; but if you want to run with the elite (I'm not elite; I spend way too much time on activism, but that's another story) you have to up your game even further. Up it again. And again.

Perfectionism is something that comes to us from schooling, I believe. You work on something, then you "turn it in", and you get your one final, seemingly life-altering, piece of feedback: a letter grade or a score between 0 and 100. School also encourages risk aversion, in so far as tests ask easy questions where the average person gets 75-85% right, which means that 1 total failure (0%) counteracts 5 excellent projects or aced exams. (This is not universal; in the UK, exams are harder but 70% is an excellent score.) If I were to redesign the system, tests and projects would be very hard but 20% would be passing and 50% would be an A... but that's another rant. In the real world, that "work for months then 'turn it in'" strategy leads to demotivation, anxiety, and (as you've experienced) perfectionism. You need to find people you trust and link up with them to get constant feedback. This is why the REPL (interactive mode) of modern languages is so important; without interactivity, you don't learn anything and become disengaged.

You have to change yourself if you want to achieve anything. You're experiencing the processes that cause so many people not to achieve anything, but at least you're aware of it. You have to form better habits. Work, and sleep, and exercise, in the same hours every day. Have a principled schedule for taking breaks. Get up at 5:00 if that works for you. Exercise every day (it helps). Establish a routine because if your life is constantly full of injections and senseless change, you'll constantly be cleaning up your own spilled apple carts. Curtail (or cease) drinking.

You need to form better habits and establish a routine of getting stuff done. Just remember that each action counts for about 10, insofar as people are creatures of habit and what you do now also influences how you will behave when you are tired and falling into default activities (self-control is hard and limited and 70+ percent of your time will be in default activities, so make those better). What differentiates the true high-achievers from the rest of us is that they program themselves (often unconsciously) to have useful default activities, instead of watching TV or playing video games.

That's not to say there's anything wrong with TV and video games in moderation. I love Mad Men and Breaking Bad, and I probably play an SNES RPG (those are good because they're time-limited at about 50 hours) every year or so. You just don't want those to become your default time-filling activities. If you want to be a top-tier technologist, your default activity should be something related to technology.


I understand your viewpoint, but I wholeheartedly disagree.

He said that he started the project with almost no experience. Cut the guy some slack! Learning on the job is difficult, especially working within the confines of another job.

Putting people down is not really what this site is for. It is for spreading interesting articles and engaging a positive community.

Quit being be a dick x

it was his first project plus he learned rails in his free time... honestly i dont think saying he is a bad developer is fair.

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