
I’m young, inexperienced and a perfectionist - nickjackson
https://medium.com/p/19784e23163b
======
edw519
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:

[https://news.ycombinator.com/item?id=5763484](https://news.ycombinator.com/item?id=5763484)

~~~
simonbarker87
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?

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

~~~
simonbarker87
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

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

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

~~~
jmilloy
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!

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

~~~
simonbarker87
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

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

~~~
simonbarker87
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

~~~
lampe3
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 !

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

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

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

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

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

~~~
jakobe
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!

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

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

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

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

------
volume
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?

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

~~~
volume
If possible, I tend to look up words/terms I've not heard of:
[https://en.wikipedia.org/wiki/Post-irony](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?

~~~
JonnieCache
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...](http://news.rapgenius.com/Lemon-how-rap-genius-
raised-s18m-in-seed-funding-without-knowing-what-we-were-doing-lyrics)

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

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

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

~~~
corresation
_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.

------
skittles
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!

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

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

------
arghbleargh
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!

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

------
jasonlotito
> I am not very focused and easily distracted.

Unless you are embellishing, get checked for ADHD.

Disclaimer: I have ADHD and OCD.

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

~~~
lancer383
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

~~~
admiralmidnight
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?

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

------
cell303
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 :(

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

------
hi2usir
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!

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

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

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

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

~~~
nickjackson
Hahaha!

~~~
peteacc
Ha.

------
beat
Experience is an excellent cure for perfectionism.

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

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

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

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

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

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

------
tbarbugli
Dont worry I am not going to :)

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

