
Career Advice For Young Developers - nreece
http://davybrion.com/blog/2008/10/career-advice-for-young-developers/
======
gojomo
Mostly common sense, but I disagree with the third point:

 _Choose between actual jobs, not companies_

People change roles within companies more often and easily than they change
companies -- especially in smaller organizations. And good, growing companies
with interesting challenges promote people from any starting position quickly.
Meanwhile, a 'good' job in a more static company risks stagnation.

So I would counsel the opposite of this post: choose the company moreso than
the job.

~~~
nradov
I agree. Furthermore, it's important to choose the right type of company. Find
one where software development is a core competency and a direct part of the
value chain. When senior management sees you as just a cost to be minimized
your opportunities for growth and advancement will be limited.

I've been interviewing a lot of job applicants lately and have found that most
of those who have worked for years in typical corporate IT departments are
basically ruined. They only know how to do high-level "fill in the blanks"
development and don't have what it takes to work for a software product or
service vendor. Now to get back on track they would probably have to return to
school and start over from scratch. Don't fall into that trap.

~~~
queensnake
> When senior management sees you as just a cost to be minimized

And they'll have the same attitude toward your dev. environment. Noisy,
crowded environment, out-of-date tools, machines / upgrades hard to come by,
or take forever ... I'm at my 2nd such because of other constraints.

------
edw519
Nice writeup, but I think he forgot the most important one...

"Delight your users."

In my experience, everything else on OP's list is a byproduct of this.

When you delight your users, everything will be easier and more fun, you'll
get better feedback and support, and you'll be best positioned to steer your
career.

I you're not delighting your users (for whatever reason), do everyone a favor
and either figure out how to or move on.

------
tom_rath
How could he have neglected to mention _Test_?!

Test everything. Test it early. Test it extensively.

If testing 'isn't needed' and is a 'waste of time' for the simple thing you're
doing, it'll only take a few moments away from your busy day. If it was
needed, you'll be glad you caught the error when you did.

If in doubt, ask any veteran developer about the horror stories they ran into
in production due to a minor bug that could have been caught at the point of
development with a simple 'complete waste of time' test.

Edit: I cannot understand why this is being down-modded to negative territory.
This is classic 'advice to a young engineer'! Your development career is
headed to a dead end if you cannot create reliable software.

~~~
igorhvr
> Test everything. Test it early. Test it extensively.

While in some contexts appropriate and many times helpful, testing is not the
way to create reliable software.

Willingness to learn from mistakes, knowing your limits and biases, practicing
complete concentration, disciplined reasoning and careful thinking is.

~~~
tom_rath
Yes, testing is the way to create reliable software. How else can you find the
'mistakes, limits, biases', etc. which come from the 'concentration, reasoning
and careful thinking' you THINK you have?

Learning how to break your software is one of the best ways of ensuring you
stop writing software that breaks!

~~~
igorhvr
If you don't reason properly, no amount of testing will save you. It is only
part (an important one, surely) of what you need to create reliable software.

I saw too many developers in a cycle like this:

test->bang keyboard->test again (not working)->bang keyboard (now a hack)
->test again(still not working - let's try one more thing)->bang
keyboard->test again (it works - Don't touch it!)

which is why early focus on testing doesn't seem very sound advice. The
original post is about "Career Advice For Young Developers" - and for a young
developer, focusing on careful thinking is better than focusing on testing.

------
swombat
I'm not entirely sure the "Don't worry about job security" is that well timed,
given the market as it is now, but it is good overall advice.

~~~
gaius
You can worry about it, but worrying's not likely to help...

------
habs
What a fantastic article! over the last few months I've been thinking about
finding a new job, but didn't want to gamble job security. I think this
article has put a lot of things into perspective for me.

Oh and I couldn't agree more with bigbang. The company I'm working for
advertised themselves as a company with lots of goodies and great people
working in the company, but I very rarely get to do interesting work and an
hour at lunch playing on an Xbox really doesn't make up for that.

------
cellis
Career Advice For Young Developers: Start a startup while you're still young.

Before you turn 21. Then you're old!

~~~
modoc
I'm 28, and while I have a number of failed startup companies/ideas in my
past, my current one is a success (although it may not meet the criteria of a
startup here, it's a small LLC that I've "started up"). The reason it's a
success is that I have 10 years of experience working with hundreds of
companies (lots of contracting, etc...), so I KNOW how big companies work, I
KNOW what they need, and I KNOW how many large players in a particular niche
are failing to provide good services/products. Which made it easy to for me to
create a better offering, that was price competitive, and met the needs of a
niche of large customers.

So while I'm old, and while I definitely think you should start a startup when
you're young, being old has it's advantages too:)

~~~
curiousgeorge
I don't think you're old, and I'm glad your start-up (yes, it counts) is a
success. Perhaps you can elaborate on the lessons you learned and the
differences this time versus previous times around in a blog post sometime.
I'd be interested in reading it.

~~~
modoc
I'll definitely add that as a blog-post topic in the future.

I can summarize a few lessons I learned here though:

1) just because people like using something for free, doesn't mean even 1% of
them will be willing to pay anything for it. High traffic/member numbers don't
mean much unless you can monetize them, mostly they just cost you.

2) selling to a few large companies is often a much easier path than selling
to thousands of individuals.

3) there are a million services that are provided almost exclusively by very
large companies. Quite often they do a horrible job. There's a million
opportunities there.

4) don't count your chickens before they hatch. Getting a 1/4 million dollar
contract in a month, does NOT mean you'll get one every month.

5) if you start to make money, get an accountant/tax person. If you have
contracts with fish that bigger than you, get an attorney.

6) don't rely on free/cheap stuff from so-and-so's friend. They could vanish
and take your servers with them.

~~~
lliiffee
> 3) there are a million services that are provided almost exclusively by very
> large companies. Quite often they do a horrible job. There's a million
> opportunities there.

How do you find these opportunities? I guess there is no easy answer, or there
would be a lot more startups, but if you have any thoughts, that would be
great.

------
jhancock
oh yeah, and learn Objective-C. Apple has more cash than M$ now and Macs are
selling like mad.

~~~
silentbicycle
Better yet, learn several languages that are significantly different from each
other. That way, your mind will be more flexible, and you'll be able to pick
up whatever languages are currently popular for marketing reasons on fairly
short notice.

~~~
jhancock
ok, lets settle for learning languages from the two companies with the top
cash on hand: M$ and Apple. That should mean F# and Objective-C. And then
learn a new language each year just to keep the juices flowing.

~~~
silentbicycle
Will Microsoft and Apple lead the programming job market in ten years? (Will
they exist?) I would rather hedge my bets and just focus on learning to
program.

