[Music]
okay folks welcome to part two of our
series on how to be a good developer
brought to you with help from the good
people at Stack Exchange so let's review
what we've discussed so far development
is all about problem solving breaking a
problem down and finding the right
solution to do that you need to be a
great analytical thinker and a
professional tinkerer who can take apart
any digital system understand how it
works and put it all back together the
best problem solvers are explorers who
are constantly learning new tools and
techniques on their own and from other
developers today I want to start by
talking about the third primary skill of
an effective developer communication
because if you're gonna be working with
other people and you are at some point
you're gonna have to talk to them most
developers don't really like this they
like to imagine themselves as the lone
wolf hacker tearing through code into
the wee hours of the morning
free of stupid time sinks like meetings
but the reality is that real development
almost always happens in the context of
a team because there's a limit to what
one developer can do a well-coordinated
team can tackle bigger problems play to
each person's strengths and solve
problems faster and better than if any
of them had done it alone one developer
who's bad at communicating can wreck all
of that when people aren't talking to
each other the various pieces don't line
up the wrong problems get solved
assumptions are made bugs creep in and
projects run late this is just as true
for working with non programmers as with
fellow developers somewhere on your team
there will be a manager or an artist or
a marketing person who is vital to
getting the project finished and out to
the end users if you aren't
communicating with them they can't do
their jobs and the product will suffer
so how do you get better at
communication first treat it like any
other problem and examine the tools at
your disposal meetings phone calls Skype
chat email passive-aggressive check-in
comments these are all ways to stay
coordinated with the rest of the team so
don't neglect them but you don't want to
treat it just like any other problem
because now you're dealing with people
that means listening to their ideas
giving the benefit of the doubt not
assuming your way is always the right
way this is especially true when working
with non-programmers since your tendency
will always be to assume that the
programmer mindsets right and the artist
is just insane take a deep breath listen
to what they're saying again assume
until proven otherwise that they're just
as good at their job as you are at yours
a team that communicates well will
always get better results than a team
who doesn't so at this point we've
pretty much covered what it means to be
a good developer of course there's much
more to it than just the big-picture
stuff here are some more specific tips
and skills you should pick up as a
developer
number one mass at least through algebra
and geometry you don't have to be great
at math to be a programmer but you will
need to use it most developers won't do
a lot of advanced math but you'll
definitely use algebra trigonometry
geometry and basic probability in the
course of your career if you're going
into game development to finance higher
math is even more important number 2
estimation the software industry is
famous for blowing through deadlines
sometimes by months or even years and
some of that is featured treatment it's
very hard to resist adding just one more
feature but just as often it's due to
developers who are bad at realistically
estimating how long something will take
actively work on your estimation skills
breakdown each piece and estimate each
component record your estimate and see
how long it actually took you and figure
out where you went wrong if you're not
evaluating yourself you're not gonna get
any better at it 3 microeconomics if you
can't talk the basic languages of
economics supply demand opportunity cost
a game theory and all that you and the
suits are just gonna be talking past
each other most of the real decisions on
a project will be influenced by money
and a lot of the programmers make
themselves irrelevant in the
decision-making process by insisting on
only thinking about making the software
perfect instead of what's best for the
business for basic user interface design
it's basically unavoidable at some point
in your career you're gonna have to make
something that an actual person will use
and most bad interfaces come from
programmers understand common UI
metaphors and when to use them
accordions modal dialogues buttons icons
tabs folders all that learning to see it
from the user's perspective can make all
the difference you may not be enough of
a designer to make it beautiful but
every programmer should be able to make
something usable number 5 low-level
languages like C and assembly you may
not use them every day and in fact you
may never use them but the abstractions
of all the higher-level languages are
built on the same basics of pointers
branching and arithmetic at some point
in almost every industry performance
becomes an issue and understanding how
the code works at a low level is the
only way to get a high-performing code 6
understand how computers work this means
understanding computer hardware
networking and operating systems most of
the details of these things are nicely
abstracted for you 99% of the time but
someday your team's gonna have to deal
with packet loss or page faulting or
hardware failures and you don't want to
be playing catch-up then having a solid
understanding of how all these systems
work will make you a better developer
and 7 just start programming if all of
this seems like too much to figure out
right now it'll never hurt to just get
more programming experience under your
belt
if you're watching this on a computer
over the Internet you already got
everything you need to start programming
so get to it and that's about it once
again very big thank you to our friends
at game dev Stack Exchange comm for
their insights in the game development
again if you're interested in becoming a
programmer definitely make some time to
check them out and even if you don't
want to be a programmer Stack Exchange
has opened up a pretty neat site to ask
and answer more general questions about
games which you can find that gaming dot
Stack Exchange calm thanks again fellas
I think you may have helped at least a
few people better understand how to
pursue this career we'll be back next
week to kick off another multi-part
series see you then
[Music]