Skip to content

Commit f52a516

Browse files
committed
work on new blog post
1 parent 225c8d7 commit f52a516

File tree

4 files changed

+163
-0
lines changed

4 files changed

+163
-0
lines changed
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
title: How to Become A Successful Self-Taught Software Developer
2+
slug: become-successful-self-taught-software-developer
3+
meta: An answer to the question of the ideal path to becoming a self-taught developer.
4+
category: post
5+
date: 2017-05-14
6+
modified: 2017-05-14
7+
headerimage: /img/170514-self-taught-developer/header.jpg
8+
headeralt: Header image for the blog post.
9+
10+
11+
I received the following question via email from someone spending
12+
significant effort learning how to code in anticipation of obtaining
13+
full-time job with those skills. The question is also frequently
14+
asked by university students and coding bootcamp graduates.
15+
16+
This post provides my current answer on how get your first full-time job
17+
as a software developer. My answer assumes that the definition
18+
of "successful path" for a self-taught developer is getting a
19+
full-time position after investing so much time learning to code.
20+
21+
Note though that as I describe in my answer below, I took
22+
[a more "traditional" route](http://www.mattmakai.com/matt-makai-resume.pdf)
23+
to become a professional software developer. Therefore my response should
24+
be only one of many that you solicit while working towards making the
25+
leap from self-taught to professional software developer.
26+
27+
28+
## (Paraphrased) Original Question
29+
30+
> I'm not sure what I should learn first to become a developer.
31+
32+
> Right now the path I am on is/was: Learn basic python fundamentals ->
33+
> git/github -> ubuntu/linux OS--> flask/jinja2 --> Bootstrap ->
34+
> SQLalchemy -> Docker -> Celery -> Redis -> AWS -> Django?!
35+
36+
> I don't know where JS / Angular2 / ECMAscript6 / HTML / CSS all fit
37+
> into this...
38+
39+
> What is the ideal path to becoming a successful self-taught developer
40+
> so I can eventually get a job as a software developer?"
41+
42+
43+
### My tl;dr answer
44+
Go very deep in one area you really enjoy working after you learn the
45+
fundamentals and get a broad overview of the language's ecosystem. Leverage
46+
your depth in your targeted expertise area when you find teams that need
47+
that skill to land your first full-time job.
48+
49+
50+
### Answer Context
51+
Figuring out what order to go in when learning is definitely one of the
52+
trickiest problems for self-guided learners. I'm not sure my answer to your
53+
question is the best one that you can get because for better or worse I
54+
took four years of computer science (CS) in high school, followed by
55+
undergrad CS & grad school CS (while working as a full-time developer).
56+
That route seems like the "traditional developer" background. However, I
57+
will do my best to give an answer. You are definitely not the only person
58+
who faces this issue.
59+
60+
61+
I typically see self-taught and developer bootcamp grads feel like to
62+
get a job they have to learn everything from the
63+
[database backend](/databases.html) up through the
64+
[web frameworks](/web-frameworks.html) to every new
65+
[JavaScript](/javascript.html) frontend framework that comes out,
66+
but that's definitely not true. When you land that first full-time
67+
developer gig it will be because a development team sees you have a
68+
particular skill that their team lacks and they need help with on their
69+
project(s).
70+
71+
72+
### Going deep
73+
If you find yourself coding front-end stuff but wishing you could get
74+
back to optimizing the database, you should focus on going much, much
75+
deeper in database optimization. Learn as much as you can about SQL,
76+
DDLs, DMLs, [ORMs](/object-relational-mappers-orms.html),
77+
[PostgreSQL](/postgresql.html), database testing and performance tuning.
78+
Constantly go deeper. Spend most of your time coding but when possible also
79+
teach others what you're learning. Some folks prefer to teach by writing blog
80+
posts. Other people enjoy giving tutorials at a meetup. You also mentor
81+
others in-person or remote on video chats who are also new to software
82+
development.
83+
84+
By teaching others you are not being purely altruistic: explaining
85+
programming and answering others' questions will reinforce in your own mind
86+
what you have learned and where your gaps remain based on the questions.
87+
Experiment with code to learn more and continue to go deeper. Create a
88+
feedback loop where you code, learn, write and find new unexplored veins
89+
to learn more in that area.
90+
91+
You should be ready to start job hunting once you have a good feedback loop
92+
where you are digging into your favorite subject area and are teaching it to
93+
others in some way.
94+
95+
96+
### Job searching
97+
When you've gone deep in your subject, search for jobs that have a bit
98+
of a full-stack flavor with an emphasis on your specialty. Reach out via
99+
email to developers on the team or the hiring managers. Ask them for advice
100+
on what skills successful developers on their teams have an what unsuccessful
101+
candidates were lacking for their positions. Use their answers as data points
102+
for what you may still need to learn when their responses are relevant to
103+
the area you're going deep in.
104+
105+
When you feel you are ready, see if you can grab lunch or video chat with
106+
developers on those teams to learn more about their work. If that goes well,
107+
ask them if they'd refer you into the interview queue. Referrals will get you
108+
much further than applying through a human resources resume collection
109+
system.
110+
111+
Look for both software development junior roles and technical support
112+
roles, if the technical support roles are at software-focused companies.
113+
For example, [Twilio's Support team](https://www.twilio.com/company/jobs)
114+
often hires folks who have limited development experience but over time they
115+
can learn how to debug coding issues based on all the support tickets they
116+
have to answer (along with continued self-paced learning).
117+
118+
119+
### Interviewing and working tips
120+
Enthusiasm is crucial for obtaining and doing well in your first few jobs.
121+
In hindsight, a lot of the enterprise software I worked on right out of
122+
college was horrible, but it was all new to me so I soaked up as much
123+
knowledge as possible while asking the tech leads and architects around
124+
me a ton of questions. Enjoy climbing steep learning curves.
125+
126+
Keep your cynicism and any "I'm better than this" attitude in check
127+
because companies have a ton of unexciting grunt work that needs to
128+
get done. The grunt work will teach you how to become a better software
129+
developer.
130+
131+
While looking for your first position, always be working on dozens of
132+
potential opportunities and do not pin your hopes up on one specific
133+
job. The goal is to get your first development gig that will help you
134+
continue to learn, not to land your dream job. The dream job comes later
135+
when you actually have enough experience to know what your dream job looks
136+
like!
137+
138+
You will eventually land your first development gig. Then you will have
139+
to constantly keep learning and the great part is that you'll get paid for
140+
it.
141+
142+
143+
### Feedback
144+
What other questions can I answer and
145+
[what additional topics](/table-of-contents.html) can I add to
146+
Full Stack Python that would be immensely helpful to new folks who are
147+
struggling to become self-taught developers?
148+
149+
Let me know via
150+
[a GitHub issue ticket on the Full Stack Python repository](https://github.com/mattmakai/fullstackpython.com/issues),
151+
on Twitter
152+
[@fullstackpython](https://twitter.com/fullstackpython)
153+
or [@mattmakai](https://twitter.com/mattmakai).
154+
155+
How should I improve this blog post? Fork
156+
[this page's source on GitHub](https://github.com/mattmakai/fullstackpython.com/blob/master/content/posts/170514-self-taught-developer-path.markdown)
157+
and submit a pull request.
158+
50 KB
Loading
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<a href="/learning-programming.html" class="list-group-item smaller-item">Learning Programming</a>
2+
<a href="/best-python-resources.html" class="list-group-item smaller-item">More Great Python Resources</a>
3+
<a href="/web-development.html" class="list-group-item smaller-item">Web Development</a>
4+
<a href="https://www.twilio.com/blog/tag/python" class="list-group-item smaller-item">More Python Tutorial Blog Posts{% include "blog/external-link.html" %}</a>

theme/templates/css/article.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,6 @@
5656
@media (max-width:767px){.logo-header-section{padding:8px 0 10px; margin:0} .logo-title a,.logo-title a:hover{font-size:34px} h1{font-size:28px} h2{font-size:24px} .logo-image{height:26px;width:26px} pre{font-size:50%}}
5757
.sans-font{font-family:"Helvetica Neue",sans-serif}
5858
img.bordered{border:1px solid #ccc}
59+
blockquote{border-left:4px solid #aaa;padding-left:10px;font-family:"Helvetica Neue"}
5960
</style>
6061
{% endraw %}

0 commit comments

Comments
 (0)