0% found this document useful (0 votes)
34 views39 pages

Skills of a Software Developer MEAP Version 5 Fernando Doglio pdf download

The document discusses the challenges faced by new software developers in securing their first job, highlighting the unrealistic expectations set by employers. It emphasizes the importance of non-technical skills and practical experience over formal education, suggesting that many traditional requirements are not essential for entry-level positions. The author shares personal experiences to guide readers through their career journey in software development.

Uploaded by

aslameandain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views39 pages

Skills of a Software Developer MEAP Version 5 Fernando Doglio pdf download

The document discusses the challenges faced by new software developers in securing their first job, highlighting the unrealistic expectations set by employers. It emphasizes the importance of non-technical skills and practical experience over formal education, suggesting that many traditional requirements are not essential for entry-level positions. The author shares personal experiences to guide readers through their career journey in software development.

Uploaded by

aslameandain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

Skills of a Software Developer MEAP Version 5

Fernando Doglio pdf download

https://ebookmeta.com/product/skills-of-a-software-developer-
meap-version-5-fernando-doglio/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Skills of a Successful Software Engineer (MEAP V07)


Fernando Doglio

https://ebookmeta.com/product/skills-of-a-successful-software-
engineer-meap-v07-fernando-doglio/

The Well-Grounded Python Developer - MEAP Version 5


Doug Farrell

https://ebookmeta.com/product/the-well-grounded-python-developer-
meap-version-5-doug-farrell/

Robotics for Software Engineers - MEAP Version 3


Andreas Bihlmaier

https://ebookmeta.com/product/robotics-for-software-engineers-
meap-version-3-andreas-bihlmaier/

Elements of Mathematics A Problem Centered Approach to


History and Foundations 1st Edition Toth

https://ebookmeta.com/product/elements-of-mathematics-a-problem-
centered-approach-to-history-and-foundations-1st-edition-toth/
Vegan Cookbook 2nd Edition Alice Barnes-Brown (Editor)

https://ebookmeta.com/product/vegan-cookbook-2nd-edition-alice-
barnes-brown-editor/

Industry 4.0, AI, and Data Science: Research Trends and


Challenges 1st Edition Vikram Bali (Editor)

https://ebookmeta.com/product/industry-4-0-ai-and-data-science-
research-trends-and-challenges-1st-edition-vikram-bali-editor/

Fundamental Chemistry with MATLAB Daniele Mazza

https://ebookmeta.com/product/fundamental-chemistry-with-matlab-
daniele-mazza/

The Nordic Baltic and Visegrád Small Powers in Europe A


Dance With Giants for Survival and Prosperity 1st
Edition Hilmar Hilmarsson

https://ebookmeta.com/product/the-nordic-baltic-and-visegrad-
small-powers-in-europe-a-dance-with-giants-for-survival-and-
prosperity-1st-edition-hilmar-hilmarsson/

WJEC Eduqas Media Studies For A Level Year 1 and AS


Student Book Unknown

https://ebookmeta.com/product/wjec-eduqas-media-studies-for-a-
level-year-1-and-as-student-book-unknown/
Advances in Robotics, Automation and Data Analytics:
Selected Papers from ICITES 2020 Jessnor Arif Mat Jizat

https://ebookmeta.com/product/advances-in-robotics-automation-
and-data-analytics-selected-papers-from-icites-2020-jessnor-arif-
mat-jizat/
MEAP Edition
Manning Early Access Program
Skills of a Software Developer
Version 5

Copyright 2021 Manning Publications

For more information on this and other Manning titles go to


manning.com
welcome
Hi there, welcome to Skills of a Software Developer, a book written for developers by a developer!
At least, that is what I used to be in one of my past lives almost 20 years ago.
During those years I’ve seen our industry grow into an incredible force that moves and powers
the world. Programming is such a basic profession by now that we’re not yet ready to give it up;
developers are still very much needed.
However, for some reason getting a job as one gets harder and harder with time. There is a lot
of gatekeeping from other developers (which is crazy) and companies expecting unicorns such as a
Jr. dev with 10 years experience makes it harder to get started.
So I thought I’d write a book about the actual software development career path, about the
hidden standards in our profession and the code of conduct you as a new member of this global
community should abide by.
Note however that this book will not teach you how to write code; you should already know how
to do that, at least at a basic level. What it will do is cover some technical aspects of the
profession, but mainly because they’re part of the core of any good software development project,
which in turn will make you a better software developer. The meat of the book, however, will be
filled with non-technical teachings about what to expect during your journey from Jr. dev to Tech
Lead. I won’t be aggregating information from the internet, I will be using my own experience as
an example, and, hopefully, my own better judgment.
With the help of my mistakes, my successes, and your own input from reading this book, we’ll
together create a resource that will help others in your same situation, so please visit the
liveBook's Discussion Forum and leave your comments. Whether they’re trying to get started or
have already been working for a few years, the final version of Coder’s Code will bring light to the
dark tunnel that is our career path.
Thanks again for showing interest in this book and I hope you enjoy reading it, at least half as
much as I’ve enjoyed writing it.

—Fernando Doglio

©Manning Publications Co. To comment go to liveBook


brief contents
1 The start of your journey
2 Starting out - Learning how to code
3 Advanced coding skills – Unit testing
4 Advanced coding skills - Refactoring
5 Tackling the personal side of coding
6 Finding a job – Getting past the job interview
7 Working as part of a team
8 Understanding what it takes to lead the team

©Manning Publications Co. To comment go to liveBook


1

1
The start of your journey

This chapter covers

• What skills not to focus on when starting the software developer career
• The skills that actually make for a good software developer
From the outside, the software industry looks very compelling if you think about it: many countries
have no unemployment around it, salaries are fair, there is always room to grow, travel is involved
in many cases, the option to work from your couch for a Silicon Valley company is there, I mean
really, why isn’t everyone working on it?
The truth is that while it might seem interesting, getting in is not that simple.
Finding your first job as a software developer can be challenging at best; most companies
looking for entry-level engineers require them to either have experience with some of the latest
frameworks and technologies or to understand a lot of advanced concepts such as design patterns,
software development best practices, and version control. Then, they’ll go into vague requirements,
such as having great “interpersonal skills”, or knowledge about other IT-related areas, what is that
about?.
The following job listing was created from multiple samples taken from internet, looking for Jr.
developers:
• Bachelor’s degree in related areas and a minimum of one year of experience in similar roles.
• Knowledge of secure software development.
• Intermediate skills associated with design, development, modifications, and deployment of
software, including object-oriented programming.
• Knowledge of other IT-related areas.
• Demonstrated software repository skills.
• Demonstrated effective communication and interpersonal skills.
• Self-motivated and works independently.
• Demonstrated problem-solving skills.

©Manning Publications Co. To comment go to liveBook


2

• Intermediate skills in C#, ASP.NET MVC, SQL Server, TypeScript and React.js.
• Experience using Git and Github.
Looking at that list, how can anyone trying to get into the industry not feel intimidated and
scared of applying? Anyone looking at that job posting will assume they need two more years, at
least, of experience before being taken seriously.
Having been through the same experience 18 years ago, I still remember the type of questions
I had:
• Do I even bother applying for the job? I only have 3 out of 10 of the required skills.
• Do I need to stop studying X and switch to Y now? Because this week everyone’s asking for
Y developers.
• How can I get experience if I’m looking for my first job?
They’re probably the same questions that any new developer looking to start their career has.
But here is the kicker: they’re normal. You’re not figuring out you’re not cut out to be a developer,
you’re only living through the Jr. Dev experience.
That is what this whole book is all about. I’ve been through the same struggles that any new
developer experiences, I’ve had my first underpaid job because I had no experience. I’ve met some
great people that taught me quite a lot about working in a team and I’ve also met some terrible
ones who, through their behavior taught me a considerable amount of things to avoid.
Throughout this book, I’ll be sharing the bits and pieces of my own journey. My hope is to show
you that you’re just getting started in yours and that the issues you’re facing and the doubts you’re
having, are completely normal and part of the developer experience-pack you bought when you
decided to live off of your coding skills.
For this chapter, however, I wanted to start by covering the basics: what exactly do you need
to work as a developer? There is a lot of noise on the internet and asking this question to Google
can bring up a lot of different articles. Everyone has their opinion, and most people tend to focus
on functional skills, things you need to learn before thinking of applying for a job.
In my experience they’re not the most relevant, nor the most important ones, you’ll pick those
up through experience if you have to. The truly important qualities of a good developer (even one
who’s never worked a single day in their life) are not technical.
Let’s look at both lists now: the common misconceptions of what is needed to be a developer
and the truly useful skills you’ll need.

1.1 What you don’t need to become a successful software developer


If you’re looking around internet trying to figure out how to profile your learning before applying for
the first job, or if you’re just thinking about planning your next 5 years before you start working,
let me cover some of the biggest misconceptions around the requirements to get into the software
industry.
Mind you, none of the following topics will hurt your chances, but they’re not hard
requirements needed to start the job. Don’t think of it as a to-do list, but rather, a nice-to-
eventually-have list.

©Manning Publications Co. To comment go to liveBook


3

1.1.1 Bachelor's degree in computer science or related degree


Essentially, 4+ years of formal education. Look, I went through it, I did my best to finish it, and I
failed on my first try. I tried to be a Software Engineer, a 5 years career in my country, but by the
time I was in second grade I got my first job, and my formal education went down the drain.
Do I regret it? I did, which is why a few years later I completed a technical degree (2 years + a
final project) to formalize a lot of my practical experience.
Did I need the first 2 years of university? I did, yes, but mainly because they formalized a lot of
the basic programming concepts that I had somewhat figured out on my own, learning how to code
for fun. But back then there were no bootcamps, my internet access was limited by my 2400 bauds
modem, and the learning resources were mainly hacker e-magazines (which were TXT files with
some ASCII art thrown in there).
The situation now is completely different, however, anyone looking to start learning how to
code has the world’s knowledge at their disposal. This is no exaggeration, there are free online
resources such as Youtube or freeCodeCamp.org which have everything you need to go from zero
to workable. And while it is true that not everyone can learn just by absorbing knowledge, you also
have other options: paid courses in places like Udemy or Skillshare, which if you’re able to invest
will cost a lot less than a university degree and will give you access to classrooms, Q&A sessions
with teachers and contacts of other students going through the same problems you are.
There you can get the actual practical knowledge required to start coding, and while it is true
that many people value the mention of a college degree as part of your resume, a lot of companies
are starting to pay less attention to that single bullet point. Granted, that affirmation might be less
true in some countries than others, but it’s also true that ours is a very international profession in
the sense that we can work for companies anywhere in the world, and when that starts happening,
the college degree starts weighing less and less as time goes by.
I’ve personally performed hundreds of interviews with new developers, and I’ve come to learn
that a college degree should not be an entry requirement.
Don’t get me wrong, I personally believe there is still value in formal education, and I’ll go into
more detail about that later on, but it’s probably not your best choice if you’re looking to get your
first developer job. Especially if you’re in a hurry, a 4+ year investment (money AND time) is too
much and when compared to the 6 to 12 months of a practical bootcamp, the choice should be
obvious.
Do you need more? Yes, of course, a bootcamp, or online education will not cover everything
you need to know, but that’s not what we’re after here. We’re focusing on the practical aspect of
the profession, so you can start learning by doing.

1.1.2 Knowledge of the software development life-cycle


A typical software project has to go through a development life-cycle:

1. You first need to do a requirement analysis to understand exactly what you need to do.
2. Then move on to planning your project to understand when to do those things and how
much time you’ll need.
3. Designing its architecture comes third. Once you know the “what” and the “when”, you have
to start thinking about the “how”, and the architecture will give you the blueprints for that.

©Manning Publications Co. To comment go to liveBook


4

4. Only then, you can start writing code. This is the section where most developers tend to
focus on, but as you can see, it’s not the first thing you’d normally do.
5. Testing your code and your product comes next, understanding if the previous step produced
the right output is a must-do before moving on to the next one.
6. Deploying your product. In other words, giving it to users so they can start testing it and
giving you feedback.
Because it’s a cycle, you’d take that feedback and normally start all over again, but you get the
idea.
Now, if you’ve never worked on a software project before then you’ve never had to apply most
of these concepts, and that’s perfectly fine. You don’t need to understand any of that to get your
first job.
Yes, they will be part of your tasks, and you’ll be applying this knowledge every day. But
turning it into an entry-level requirement for the role of Jr. dev is like asking an acting surgeon to
lead their first surgery. Eventually, they’ll be able to do it and they’ve probably read about it, but
you don’t want them doing it on day one.
And that is the same for you as a developer, you should not be expected to understand what all
these steps really mean on day one, you won’t be in charge of doing it all anyway. You’ll learn
about it because you’ll be part of the process.

1.1.3 A math, physics, or similar degree for understanding programming


I’m guilty of believing this one myself back when I started, but then again, I blame college, they
were teaching me calculus and algebra at the same time I was learning to code. Was that a
mistake? In the long run, no, it wasn’t, but it did nothing to help me get my first job as a
developer.
Math, physics, or any similar sciences are not going to help you understand programming.
Some of them require you to understand abstract concepts (such as infinity, or the number PI),
which can act as practice when you need to create mental models of an algorithm you’re trying to
write.
That is where I think the misconception comes from, they all require you to flex your abstract
thinking muscles.
However, you won’t be solving hard math problems or implementing difficult physics
simulations on your first job, and even if you happen to find yourself in such a conundrum, there is
a big chance you’ll be using someone else’s library.
So should you need to get a math degree before making the jump to computer science or a Jr.
dev role? No, not at all.

The Role of DataScientist is not exception


While the role of a Jr. Data Scientist might require you to, in fact, have one of those degrees, the requirement is not for
understanding how to code but rather, how to model the problems you’re trying to solve.

©Manning Publications Co. To comment go to liveBook


5

Eventually, you might find shared concepts between programming and these other sciences
(such as sets in many programming languages), or you might find yourself implementing concepts
from other realms into your code (such as implementing the concept of gravity on a platformer
game), but none of this is something that requires a full degree before even starting to code.

1.1.4 Certifications
Certifications are tempting because they have that “not-as-long-as-formal-education-but-still-
useful” kind of vibe. And they do have their merit, but they’re not a hard requirement to get a
developer job.
Listing certifications on your Jr. dev resume shows you care about your learning and that you
care about improving your skills. This is indeed a good thing.
But it’s not a requirement. You won’t find job listings asking for particular certifications from a
Jr. developer, instead, they’ll be looking for knowledge about a group of technology. And this is
easier to achieve by following online courses or bootcamps.
What I’m saying here is: if you have to choose between investing in a certification or an online
course, go for the latter, get a broader education before you start narrowing down on a particular
subject.

1.1.5 The desire to work in a fast-paced environment


I personally love this requirement. You can find it on many job listings as well as basic software
development skillsets. Truth is, this one is so generic that it can really mean anything.
What does “fast-paced” even mean here? That term can mean anything honestly, but I’m
assuming (because that is what anyone reading in our context would do), it means you have to be
interested in working inside an industry that changes a lot. And by that, I mean changes in
technology, working methodologies, project focus, or even projects themselves.
That probably sounds scary, especially for someone who’s not even working yet. But I can
confirm that you can be a software developer and still hate “fast-paced” environments. Not
everyone likes changing technologies, nor even projects. You don’t have to either.
Granted, startups normally work that way, because they have to. They normally need to grow
fast and adapt to changes.
Contractors work like that too. There are companies out there that hire you to be part of
someone else’s team for the duration of a project, and when that is done, you move on to the next
client.
Both scenarios are great, and if you find that interesting please go ahead and apply, chances
are you’ll enjoy your work there.
But there are other companies, the ones that have been working for years now on their
product(s) that tend to have a more stable environment. In fact, the perfect example of that is
banks (and I should know, I’ve worked for some of them in the past as an external contractor),
they have so much data from so many clients, that making a change on their tech stack is quite
hard, and honestly, scary for them.
There is no right choice here, most of the time you don’t get to pick your first company, the fact
that they accept your lack of experience will be the deciding factor. However, keep in mind that
just because a section of our industry is “fast-paced” doesn’t mean you need to like it or to be
looking for that.

©Manning Publications Co. To comment go to liveBook


6

1.1.6 Experience
Asking for experience from a Jr. dev is not only counterintuitive, it’s just plain silly. And I’ve been
there, I know how it feels when you read a job listing asking for Jr devs with experience in different
technologies. You’re sitting there, reading the listing trying to find a job so you can get the actual
experience. It’s like the egg and chicken problem.
My advice here is to ignore that part of the listing, it makes no sense after all. Just apply if you
feel comfortable with some of the other requirements or if you feel like you can pick them up
quickly.
The kicker is: if you’re applying for the job and are worried about the experience part, you can
showcase other types of experience:
• If you’ve done some kind of online course, you can list it here.
• If you have one or more personal projects published somewhere (i.e on Github, or
somewhere else), you definitely want to publish it here.
• If you’ve worked as a volunteer on something remotely related to IT, list it here.
Careful though, I’m not saying this is a must-do, requiring experience for an entry-level position
makes no sense, and it should not be a prerequisite. However, if you do want to address that point
on your application, listing some of the above items is definitely better than saying “none”.

1.2 Useful skills for a software developer to have


On the other side of the spectrum there are some skills that are never listed in your typical job
offers. They, however, will definitely help you either get your first job or to be considered a great
dev. But because they’re not technical skills they can add to their resume, many new developers
tend to skip them.
These are passive skills. You won’t actively have to use them, but rather, they’ll be there in the
back of your mind helping you in your daily routine. The most frustrating part about them: there
are no online courses or bootcamps that will help you train them. These are soft skills that you
need to be aware of in order to develop (if you don’t already have them).
I know that’s probably not what you wanted to hear, but they are the cornerstone of growing as
a developer, you’ll need these in order to successfully train everything else. As you’re about to see,
any technical skill can be learned over time by reading a manual or watching a video. But the
following skills will be there, helping you through that learning process.
Yes, you’ll become a developer by learning how to code, but if you skip these 5 skills, it’ll be like
learning to run before knowing how to walk.

1.2.1 Patience
Nothing says “I’m a Software Developer” like spending 3 hours debugging a piece of code, just to
figure out, the problem was a missing “,” somewhere in the middle.
You’ll go through this a lot, and that is no sign of “Juniority” or of lack of experience, trust me, I
go through that same process every now and then today, after almost 20 years.
Understanding someone else’s code requires time and effort, researching how to solve a
problem requires time and effort, writing code and getting it to work requires time and effort.
Patience is not a virtue for a developer, it’s a must-have. Copy and pasting code from the internet

©Manning Publications Co. To comment go to liveBook


7

will only get you half-way, the rest needs to come from you and there is a lot of trial and error
involved.

1.2.2 Determination
In-line with patience, you have to also understand this is not an easy profession. And I’m not
saying this to scare you off and throw this book away. On the contrary, setting the right
expectations is key to avoid getting discouraged when bad things happen during your journey.
The fact is, your chosen profession will be filled with roadblocks, with problems that once fixed
become ten. Bugs that take months to solve and each and every one of these situations will
become a reason for you to quit.
Trust me, I’ve wanted to quit programming multiple times during my career. The idea of
moving to the middle of nowhere, away from technology, and just growing tomatoes in the desert
is appealing to many devs inside our industry.
Is that the sign of a problem in software development? I don’t think so, but it is proof that ours
can be a very frustrating profession at times.
And that is why determination is a must-have skill for developers. Mind you, you can build it
over time. It’s hard to know if you’re determined enough until you’re faced with a situation that
challenges you. But if you’re already a determined person, someone who’s known to not give up on
the first try, then you’ll do fine as a developer.

1.2.3 An eternal student mindset


The underlying topic of this book is professional growth, you might’ve picked that up from reading
through the ToC by now. However, growth can’t happen without learning, and while you’ll see that
I’ll cover learning from different aspects in Chapter 5; I still wanted to highlight it here.
One hard requirement I would put on every new software developer would be to always be
learning. Or at least, be open to the idea of learning.
While it is true that you don’t have to like a fast-paced environment to work on, our industry is
always moving. Sometimes it moves forward and sometimes backward by making a 20+ years old
pattern new again (I’m looking at you React) and if you don’t keep tabs on these changes, you’ll
be left behind.
Mind you, I’m not saying you need to go out and learn “all the things”. That couldn’t be further
from the message. What I’m saying is that you should be open to the idea that the tools you’re
using right now and the things you know right now will not always be the norm. If you don’t accept
that, you’ll find yourself unable to move forward with your career within two years.
Technology pushes technology forward, it’s that simple. The tools you use today, will not the
same as the ones you’ll use tomorrow. New technology developments might open new areas of
research, new ways of processing data, new ways of interacting with users, and when that happens
the tools for the developers will have to adapt. If you don’t adapt with them, you’ll be left behind.

1.2.4 An open mind to receive criticism and learn from it


Programming is not a solo profession, even if you’re considering going freelance, you’ll have to
interact with other developers one way or another. And part of that interaction happens through
feedback.

©Manning Publications Co. To comment go to liveBook


8

Code review, for example, is a very common practice in software development that helps in
ensuring code quality by having a group of devs, reviewing the code written by someone else.
If you’ve never been through it, it might sound strange, but it’s actually a growing experience
for both parties involved if they perform it correctly:
• On the reviewing end, the group of developers reading the code need to understand that
their job is to improve the code by finding logic issues, missing standards, or even some
bugs.
• On the receiving end, you’ll need to understand that the feedback they’re giving you is not
personal. Showing your code like that can feel like that nightmare where we realize a little
too late that you’re already in class, naked in front of everyone. But trust me, they’re putting
their years of experience at your disposal, accept their feedback, make sure you understand
why it is given, and you’ll come out learning a lot.
There are other instances where feedback will come into play as well. Sometimes it’ll be
expected, like with performance reviews, and other times it won’t be, like getting an issue reported
on your open source project. Either way, receiving negative feedback is always a possibility, and
being open to it is a must.
Surviving negative feedback, especially when it’s not expected, can be hard if you’re not open
to learning from it.
I think it’s important to make a distinction between feedback that shows a negative quality of
our work (i.e a bug), versus non-constructive (negative) feedback that only shows how our work
has affected others to the point where they need to hurt or disqualify us with their words.
A negative piece of feedback has to be received as advice you didn’t ask for. There is always a
nugget of wisdom inside it, you just have to ignore the negative coating around it, cut through to
the core message and the lesson to be taken out of it. You should consider the rest as noise.
As a technical lead myself, I’ve received hundreds of performance reviews in my career, and
they’ve not always been positive. Whenever that happens, I always try to focus on getting to the
core of the problem, on trying to understand what caused that negative review so that I can avoid
that behavior in the future.
If you only see feedback as a bad thing, then you’ll start second-guessing your decisions and
the whole point of that feedback (which was to help you improve) will be lost.

1.2.5 Know how to communicate


This is a tough one because a very common problem amongst developers, even experienced ones,
is that they don’t know how to communicate with people.
From the outside, it might seem weird, but sometimes we focus so much on learning how to
write logic code that a machine can understand, that our soft skills, no matter how small and
undeveloped they are, tend to wither away.
Machines don’t need us to write eloquent sentences, they don’t really care for synonyms or the
use of metaphors and figured speech. They need clear, unquestionable logic. However, as a
developer, you also need to work with humans, who, unlike machines favor all those things.
When you need to interact with a colleague to ask for help by explaining the problem you’re
having, or even when you have to solve someone else’s question, you need to switch from your
“machine understandable syntax” to your “human understandable” settings.

©Manning Publications Co. To comment go to liveBook


9

This is why having these skills even before applying to your first job is a major advantage over
everyone else in your same situation. The moment your interviewer notices you can communicate
effectively, the battle is half won.
And how can you develop this skill? One way to do it is through writing.
Back when I started, both my written and spoken communication skills were terrible. I
remember spending 30 minutes writing “important” emails because I had to go through them
multiple times, adding words and explanations, asking colleagues to review them to see if they
made sense or not.
It was only when I started making the conscious effort to write online (articles for my own blog)
that I started learning how to write more eloquently, you can say I started finding “human friendly”
ways of explaining concepts. This, in turn, helped my spoken communication skills as well
(something “clicked” in my brain).
And through that and other working experiences, I was able to learn how to effectively talk to
others (which helped me in my path to leading teams as well).
So yes, knowing how to communicate with others is a major skill to have, the great news is that
you can start practicing it right now, for free, and figure out what your internal voice sounds like.

1.3 And what about after you get your first job?
The trick to the career path of the software developer is to remember that you’re not done when
you get your job. That only means you’re just getting started.
It’s like getting to the max level on your favorite MMORPG and thinking you beat the game,
that’s not right, in fact, you just unlocked a whole new level of content specifically designed for
you.
And it’s the same thing with your career. Getting the job doesn’t mean you’ve mastered the
trade, it just means you were able to stand on the first step of a huge ladder. The skills I listed
above will have to be developed and maintained throughout the course of your life, and the more
you work on them, the better you’ll do.
• Keep honing your communication skills, they’ll always be useful, but the higher on the ladder
you climb, the more important they’ll become.
• Understanding how to grow from negative feedback will keep you from getting stuck in your
career.
• Working on your patience and determination will ensure you never meet a problem you can’t
solve. These two skills have taught me that there is nothing impossible in our profession, as
long as you have enough time and people to work on it. That’s something I always like to
say to clients asking if their idea is possible. The answer is always yes, no matter how crazy
or difficult the request is, as long as you have the patience and determination to do it.
• Staying relevant in our industry is a must for anyone who’s interested in advancing their
career. That means looking outside your own box to find out about what others are doing.
Just raise your head every once in a while, if nothing else, to make sure you’re not the only
one around.
The rest of this book will cover other areas of work you’ll need to focus on once you’ve decided
to become a software developer, and they are just as important as the ones covered here. But

©Manning Publications Co. To comment go to liveBook


10

keep these in mind always, as they’ll be acting as the building blocks for everything else you learn
in the coming chapters.

1.4 Summary
I literally knew I wanted to be a software developer before I owned my first computer. I had made
the choice based on the value computers were generating back when I was a kid. But when it was
time for me to start the journey and make the jump into the real world, it wasn’t just difficult to get
in, it was scary and unwelcoming.
I had no guide, no map that would help me navigate the maze that was job interviews or even
job listings. I would spend a few hours every weekend going through the jobs section of my local
newspaper looking for opportunities for Jr. devs without experience.
It took me a while to find my first job, and while it was a terrible, underpaid one, I learned as
much as I could from it until it was time for me to move on.
Now internet makes it a lot easier to interact with people, find new jobs and opportunities, but
the difficulties are, incredibly enough, still the same. Companies are still looking for entry-level
roles with experience, they’re still focusing on the wrong set of skills and then wonder why they
can’t get the right candidates.
If you want to be ready for the software development career, amongst all the technical skills
you want to learn, remember that you also need to focus on the non-tech ones:
• Patience
• Determination
• Being open to learning
• Being open to receiving feedback
• And knowing how to communicate
These will help you develop anything else you want and will show potential employers you bring
more value with you than someone who’s just memorizing some technical documentation.
In the next chapters, I’ll start focusing more on the code aspect of the career, I’ll give you some
hints at best practices and I’ll show you how to write code that everyone wants to read.

©Manning Publications Co. To comment go to liveBook


11

2
Starting out - Learning how to code

This chapter covers

• Focus on working code first.


• You’re part of a team, thus your code needs to be understandable by all of them.
• Overengineering is a real problem but there are ways around it.
• There are no random bugs.
• There is great value in learning about languages you don’t normally use.
During your journey as a developer, one of the main activities in your day is going to be coding.
Writing code needs to become part of your life, not because you want to make a living out of it but
because you’re looking to be great at it. Just like any Olympic athlete spends a portion of their day
training, and the rest of it thinking about their training, you need to do the same. If you’re aiming
to become an Olympic coder (granted, that’s not a thing, but it should be) you need to make code
your life. Mind you, I’m not asking you to forfeit time with your loved ones but keeping code in the
back of your mind is something that you’ll want to do.
Consider the following: you will never improve from a repetitive task if you only keep
mindlessly doing it over and over again. You need to understand what to aim for. Be clear about
the standards you have to achieve and the best practices to follow. Only then, you’ll be able to
measure your progress and understand if you’re improving.
That is what I mean by “keeping code in the back of your mind”. You’ll be solving problems and
thinking about algorithms even without noticing.
This book is not going to teach you how to code, you should already know how to do that. But
with that being said, what I will cover are some of the lessons I’ve learned about the process of
coding throughout my career.
If you’ve been doing it for a while you might recognize some of the behaviors and problems I’ll
mention throughout the chapter. If on the other hand you’re just starting on your coding journey,

©Manning Publications Co. To comment go to liveBook


Other documents randomly have
different content
sen, että ilma oli kaunis ja että viljavainio näytti lupaavalta, kun
Bredelin poika, joka oli ruokkoamassa viinitarhaansa, huusi hänelle:

— Hoi, ukko Hochedur, menkääpäs katsomaan metsänreunaan,


ensimäiseen näreikköön, niin tulette tapaamaan kyyhkysparin, jolla
on ikää yhteensä ainakin satakolmekymmentä vuotta.

Hän oli seurannut neuvoa, tunkeutunut tiheikköön ja kuullut siellä


sanoja ja hengähdyksiä, jotka saivat hänet aavistamaan, että
kysymyksessä oli parhaillaan tapahtuva siveysrikos.

Nelinkontin käyden hän oli lähestynyt rikoksellisia kuten


salametsästäjää ja yllättänyt tämän pariskunnan juuri sillä hetkellä,
kun se oli vaistojensa vallassa.

Hämmästyneenä tarkasteli määri rikoksellisia. Mies oli hyvinkin


kuusikymmenvuotias ja nainen vähintäinkin viisikymmentä viisi.

Hän ryhtyi heitä tutkimaan, alottaen miehestä, joka, vastasi niin


hiljaisella äänellä, että sitä tuskin kuuli.

— Teidän nimenne?

— Nicolas Beaurain.

— Teidän ammattinne?

— Rihkamakauppias, Parisista, rue des Martyrs-kadun varrelta.

— Mitä te sitten teitte siellä metsässä? Rihkamakauppias pysyi


äänettömänä, pää painuneena suurta vatsaa vastaan, kämmenet
painettuina reisille.

Määri jatkoi kuulusteluaan:


— Väitättekö vääräksi järjestysmiehen todistusta?

— En, herra määri.

— Te siis tunnustatte.

— Kyllä, herra.

— Mitä teillä on sanottavana puolustukseksenne?

— Ei mitään, herra.

— Missä te olette tavannut rikostoverinne?

— Hyvä herra, hän on minun vaimoni.

— Teidän vaimonne?

— Niin juuri, minun vaimoni.

— Siis… siis… te ette asukaan yhdessä… Parisissa?

— Anteeksi, herrani, me elämme yhdessä!

— Mutta… siis… hyvä herra Beaurain, te olette hullu, pähkähullu,


kun olette tullut tänne pidätettäväksi tällä lailla keskellä metsää,
kello kymmenen aamulla.

Rihkamakauppias näytti valmiilta itkemään häpeästä. Hän mutisi:

— Tämä kaikki on tapahtunut vaimoni tahdosta! Minä kyllä sanoin


hänelle, että se oli mieletöntä. Mutta kun nainen saa jotakin
päähänsä… niin te tiedätte… että hän ei hellitä.

Määri, joka piti suorasukaisesta puheesta, hymyili ja vastasi:


— Tässä tapauksessa olisi pitänyt sattua aivan päinvastaista. Jos
hän olisi saanut jotakin vain päähänsä, niin te ette olisikaan nyt
täällä.

Silloin hra Beaurain joutui vihan valtaan ja kääntyen vaimonsa


puoleen:

— Jokos sinä nyt näet, mihin sinä olet johtanut meidät


runollisuudellasi? Sanoppas, missä me nyt olemme! Me joudumme
nyt oikeuden eteen siveysrikoksesta meidän iällämme! Ja meidän
täytyy sulkea liikkeemme, jättää liiketuttavamme ja muuttaa
asumaan johonkin toiseen kaupunginosaan. Siinä me nyt olemme!

Rva Beaurain nousi ja, katsahtamatta mieheensä, esitti asiansa


juurtajaksain ilman esteitä, ilman turhaa häveliäisyyttä, melkein
sujuvasti.

— Jumalani, herra määri, minä tiedän hyvinkin, että me olemme


naurettavia. Sallitteko minun puolustautua asianajajan tavoin, tai
pikemminkin onnettomana vaimo raukkana; ja minä toivon, että te
tulette päästämään meidät kotiimme ja säästämään meiltä kaiken
oikeudenkäynnistä aiheutuvan häpeän.

"Kun minä kerran olin nuori, niin minä tutustuin hra Beaurainiin
tällä paikkakunnalla, eräänä sunnuntaina. Hän oli apulaisena eräässä
rihkamatavarakaupassa, ja minä olin myyjättärenä eräässä valmiiden
vaatteiden kaupassa. Minä muistan sen vielä kuten eilispäivän. Silloin
tällöin minä tulin tänne viettämään sunnuntaita erään ystävättäreni,
Rose Levéquen seurassa, jonka kanssa minä asuin Pigallen kadulla.
Rosella oli rakastaja, mutta minulla ei ollut mitään sellaista. Se on
hän, joka toi meidät tänne. Eräänä lauantaina hän ilmoitti minulle,
nauraen, tuovansa minulle seuraavaksi päiväksi toverin. Minä käsitin
hyvin, mitä hän tarkoitti; mutta minä vastasin, että se oli
tarpeetonta. Minä olin järkevä, herrani.

"Seuraavana päivänä me kohtasimme siis junassa herra


Beaurainin. Hän oli siihen aikaan pulska mies. Mutta minä olin
päättänyt olla antautumasta, enkä minä liioin antautunutkaan.

"Me siis saavuimme Bezonsiin. Ilma oli ihana, oli niin ihana, että
sydäntä hiveli. Kun on kaunis ilma, niin minä aivan hullaannun, niin
nyt kuin muinoinkin, ja kun minä olen maalla, niin minä joudun
päästä pyörälle. Vehreys, lintujen viserrys, lainehtiva viljavainio,
pääskysten lento, nurmen tuoksu, valmut, päivänkakkarat, kaikki ne
saavat minut hulluksi! Kaikki se vaikuttaa kuin samppanja, johon ei
ole tottunut.

"Oli siis ihana ilma, lauhkea ja kirkas, mikä tunkeutui teihin


katsellessanne silmillänne ja hengittäessänne suullanne, Rose ja
Simon syleilivät toisiaan vähän päästä! Se vaikutti minuun jotakin,
sen katseleminen. Hra Beaurain ja minä kävelimme heidän jälessään,
puhumatta mitään. Kun ei olla tuttuja, niin ei keksitä mitään
puheenaihetta. Hänellä oli arka ilme, sillä nuorukaisella, ja hänen
hämilläänolonsa huvitti minua. Olimme saapuneet viidakkoon. Oli
raitista kuin kylvyssä, ja kaikki ihmiset istuutuivat ruoholle. Rose ja
hänen ystävänsä tekivät pilaa minun vakavasta ilmeestäni; te
käsitätte hyvin, että minkäänlaista muuta ilmettä minulla ei silloin
saattanut olla. Ja sitten he alkoivat syleillä toisiaan ujostelematta,
aivan kuin meitä ei olisi ollenkaan ollut siinä lähellä; ja sitten he
alkoivat kuiskutella keskenään ja sitten he nousivat ja läksivät
tiheikköön sanaakaan sanomatta. Ajatelkaas, miten hullulta minä
näytin, minä, tuon nuorukaisen silmien edessä, jonka minä näin
ensimäistä kertaa. Minä tunsin itseni siinä määrin noloksi nähdessäni
heidän sillä lailla poistuvan, että minä sain siitä rohkeutta ja aloin
puhutella häntä. Minä kysyin häneltä, mitä hän teki; hän oli
rihkamakauppiaan apulainen, kuten jo teille äsken sanoin. Me
puhelimme hetken; se rohkaisi häntä, ja hän tahtoi lähennellä, mutta
minä työnsin hänet kylmästi paikoilleen. Eikö niin, hra Beaurain?"

Hra Beaurain, joka katseli jalkojaan hämillään, ei vastannut


mitään.

Rouva jatkoi: "Silloin hän käsitti, että minä olin järkevä, tuo
nuorukainen, ja hän alkoi hakkailla minua kiltisti kunnon miehenä.
Siitä lähtien hän saapui joka sunnuntaina. Hän oli kovin rakastunut
minuun. Ja minä pidin hänestä myöskin kovasti, mutta siihen aikaan
hän olikin pulska nuorukainen!

"Lyhyesti sanottuna hän otti minut vaimokseen syyskuussa ja me


perustimme liikkeen rue des Martyrs-kadun varrella.

"Seurasi sitten kovia vuosia, herrani. Liike ei menestynyt, emmekä


me voineet tehdä matkoja maalle. Ja sitten me vähitellen
unhoitimme koko tavan. Ihmisellä on muuta mielessä; täytyy ajatella
kassaa enemmän kuin kukkasia kedolla. Me vanhenimme, vähitellen,
huomaamattamme, rauhallisina ihmisinä, jotka eivät enää ajattele
rakkautta. Silloin ei kaivata mitään, kun ei huomata, että jotakin
puuttuu. Ja sitten herrani, liike alkoi luistaa, ja me olemme
turvanneet tulevaisuutemme! Silloin, nähkääs, minä en oikein tiedä,
mikä muutos minussa tapahtui, totisesti, sitä minä en tiedä!

"Kas niin, minä aloin uneksia pienen koulutytön tavoin. Nähdessäni


kukkaiskärryjä kuletettavan kaduilla minä tunsin kyynelten kihoavan
silmiini. Orvokkien tuoksu tunkeutui aina minun tuolilleni asti, kassan
takana, ja sai minun sydämeni sykyttämään! Silloin minä nousin ja
menin kynnykselle katselemaan taivaan sineä, mikä näkyi kattojen
välistä. Jos katselee taivasta kadulta, niin se näyttää joelta, pitkältä
joelta, joka kiemurrellen laskeutuu Parisiin ja jossa pääskyset
liikkuvat kalojen tavalla. Minun iälläni tämä kaikki on hyvin
hullunkurista! Mutta minkäs sille mahtaa, herrani, kun on
työskennellyt koko ikänsä, niin tulee hetki, jolloin huomaa, että
muutakin olisi voinut tehdä, ja silloin alkaa kaduttaa, niin, silloin
alkaa kaduttaa! Ajatelkaahan, että kahdenkymmenen vuoden
kuluessa minä olisin voinut muiden tavalla, muiden naisten tavalla
mennä metsään saamaan suuteloita. Minä uneksin siitä, miten
suloista olisi olla pitkällään lehvien alla ja rakastaa jotakin! Ja sitä
minä ajattelin kaiket päivät ja kaiket yöt! Minä uneksin kuuvalosta
järvellä aina siihen asti, että minut valtasi halu hukuttautua.

"Alussa minä en uskaltanut puhua tästä mitään hra Beaurainille.


Minä tiesin hyvinkin, että hän tekisi minusta pilaa ja ajaisi minut
myymään lankoja ja neuloja! Ja sitten, totta puhuen, hra Beaurain ei
enää suuresti minua miellyttänyt; mutta katsellessani peiliin minä
käsitin myöskin, että minä en enää miellyttänyt ketään, minä! Minä
otin siis ratkaisevan askeleen ja esitin tehtäväksi matkan maalle,
sinne, missä me olimme tutustuneet toisiimme. Hän suostui ilman
epäilyjä, ja niin me saavuimme tänne tänä aamuna, kellon
lähestyessä yhdeksää.

"Mutta saavuttuani tänne vainioille minä tunsin itseni kokonaan


nuortuneeksi. Naisen sydän ei koskaan vanhetu! Ja totta puhuen
minä en nähnyt miehessäni sitä, millainen hän oli, vaan sen, mitä
hän oli muinoin ollut! Sen minä teille vannon, herrani. Toden totta,
minä olin juopunut. Minä aloin syleillä häntä; hän hämmästyi siitä
enemmän kuin siitä, jos olisin yrittänyt häntä tappaa. Hän hoki yhtä
mittaa: 'Mutta sinäpäs olet hullu. Mutta sinäpäs olet hullu, tänä
aamuna. Mikäs sinua oikein riivaa?…' Minä en kuunnellut häntä,
minä, minä en kuunnellut muuta kuin sydämeni ääntä. Ja minä
pakotin hänet lähtemään kanssani metsään… Ja tässä me nyt
olemme!… Minä olen sanonut teille totuuden, herra määri, koko
totuuden."

Määri oli henkevä ja suorasukainen mies. Hän nousi, hymyili ja


sanoi: "Menkää kotiinne, rouvani, älkääkä koskaan enää tehkö
syntiä… lehvien alla."

End of Project Gutenberg's Hätähuuto y.m. kertomuksia, by Guy


de Maupassant
*** END OF THE PROJECT GUTENBERG EBOOK HÄTÄHUUTO Y.M.
KERTOMUKSIA ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is derived


from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is posted


with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute this


electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the Project
Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or providing


access to or distributing Project Gutenberg™ electronic works
provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™


electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for


the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.

1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,


the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.

Section 2. Information about the Mission


of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.

The Foundation’s business office is located at 809 North 1500 West,


Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws regulating


charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states where


we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot make


any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.

Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.

Section 5. General Information About


Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.

You might also like