
Ask HN: How to go from zero knowledge to employable as a junior developer? - soneca
I am 37 yo, from Brazil and I made the decision of somehow radical (and late) career change, from manager to developer<p>As a summary, I graduated in Economics, worked 8 years with non-profit project management and fundraising, then about 4 years with startups (non-tech founder and marketing). Now I decided that I want to invest in being a developer. I believe I will be professionally happier as a developer.<p>I would like to ask HN your help with some doubts around the goal that I set myself:<p><i>Start from scratch and, in 4 months, be employable as a junior developer.</i><p>Is it possible at all? How is it possible? Where should I start? What path to follow? Learn from where? Bootcamps, online, self-learning, mentors, classes?<p>I am inclined to focus on front-end development, but maybe at least some back-end knowledge to be kind of a full-stack web developer.
I can go trial-and-error-and-google mode with CSS&#x2F;HTML, but JS (and everything else) I have zero knowledge.
I believe I have some affinity with the craft of programming, good logical thinking and expect to learn things fast.<p>I am open to brutally honest feedback and diversity of opinion, even questioning my decision at all if you will.
======
Jtsummers
I'm less familiar with the world you're coming from, but I'll give a variation
of the advice I've given before:

1) Maybe more than 4 months to be an employable junior developer, but
certainly under a year if you're willing to put the time into it.

2) "Front-end development" is very broad. You could work for anyone making
anything doing that. And that could easily be a feasible first step towards a
career in development, especially as it'll give you paid opportunities to
practice. But

3) You have 12 years of professional experience. Capitalize on it. Are there
applications that would help in those niches? Are there solutions that could
be provided? Maybe not an application, but the synthesis of several to create
better workflows and environments for workers in non-profit project
management/fundraising.

What were your pain points in your prior career(s)? What did you see
organizations struggling with? Create solutions or find solutions to fill
those needs, and then market them (you have a marketing background, should be
helpful, and industry connections, even more important). If you aren't
interested in doing a startup or consulting yourself, maybe look for existing
companies that are trying to fill these needs.

EDIT: Also, for anyone else reading this, particularly from technical
backgrounds in other engineering/science disciplines, I highly recommend
considering that 3rd statement. You have a great breadth of technical
knowledge, unless you just _hate_ the field or have a true passion for
something else, no reason to abandon it.

------
bjourne
> Start from scratch and, in 4 months, be employable as a junior developer.

No, not possible. I mean you can fake your way in, but you won't be employable
on pure skills alone. If you have never touched an instrument or cared for
music, you cant play in an orchestra after only four months of learning when
you are 37. Maybe some prodigy can, but not 99.999% of the population.

~~~
soneca
Well, a junior job in a company is definitely not a musician in an orchestra.
More like, in 4 months studying guitar can I tune the instrument of a
professional musician?

But anyway maybe your opinion stands. Let's see in some months. But "fake my
way in" is definitely something I will never do.

~~~
bjourne
Good luck! I hope you make it.

------
myinitialsaretk
Lets assume I am an engineer that has decided I want to transition my career
and devote my career to helping non-profits because I will be professionally
happier. What could I do to demonstrate to you my commitment and interest in
this new career path?

Maybe I could show how much I care about the cause, by volunteering at an
event. Or helping out running a fundraiser.

I'd ask yourself the same question for engineering.

I think a good answer would be something like: "I thought building cool web
frontends was a really interesting problem, so I taught myself the basics
(books, online courses, classes) and built (INSERT THING HERE) to build the
kind of thing I would love to see in the world."

~~~
soneca
Like creating a portfolio, right? Good idea, thanks!

------
p333347
Stick to your specialty and scratch the programming itch as a hobby. If you
get good at that hobby, see if you really want to be a professional dev and
look for a job. If you get nothing you like start your own thing (your
experience with startups might be handy here). I would wait at least a year to
see if this is just an infatuation or deeper love. And while you are learning,
pay special focus to algo and design, a bit more than knowing nifty things
with popular frameworks in the language of your choice.

~~~
soneca
Thanks for the consideration on your words!! Actually, I considered this idea
about 4 years ago and dismissed as "too late to such a career change, although
I'm sure if I was 20 again I would be a developer". I spent a few months
learning C#, .NET and managed to build a very small, chaotic, badly coded,
badly designed, but functional web app! And these months are still today among
the happiest of my life at work.

Now I successively quit two jobs in a 3 months period. I was starting to once
again decide if I wanted to found something or look for a job, then I realized
I actually wanted to be a developer. So it is a mature decision.

Also, I am between jobs, so not much of an impact to go full-time on this path
right now.

And thanks for the learning tips.

~~~
p333347
OK. Going by what you said, the best way is to actually build something that
works, and if possible non trivial (you can even try to clone an existing
popular app as you can focus on actually implementing it than brainstorming
ideas), and showing it at places like HN, CodeProject etc with your profile
clearly mentioning you are looking for a job (and a career change). Action
beats words. If the app you have already built is in good enough working
condition, you could use that itself. Being in between jobs is even better for
this adventure as you can dedicate full time to this with no distraction. Good
luck.

I am in a similar boat as you, except I am trying to move from C++ desktop to
web domain, and this is what I am doing - building apps (actually porting my
private desktop apps to web platform). Once I am happy with the quality, I
will leverage on them. Of course, I am looking for a position comparable to my
current one (lead dev or more) so I am being a bit more thorough etc.

> I was starting to once again decide if I wanted to found something or look
> for a job, then I realized I actually wanted to be a developer. So it is a
> mature decision.

You mean you want to work as an employee for someone as a developer and not be
a developer entrepreneur? Just want to know.

~~~
soneca
I struggle a but with this decision. But honestly, I don't thin I can afford
the risk of entrepreneurship more. And after these months without income, it
will be important to have a paycheck in the short term.

------
AvgNoogler
How do you know that you want to be a developer if you have 0 knowledge of
software development? A lot of jobs require logical thinking and learning on
the fly. That doesn't mean you'll enjoy all of them.

I'd say get your feet wet by learning Python and some basic algorithm
knowledge first to see if you're actually interested in programming. Also,
learn a lot before trying to Stack-Overflow your way to an app. That approach
is exponentially harder the less you know about software development.

~~~
fuqted
For learning Python and basic algorithmic knowledge (like the other links,
free) - [https://www.udacity.com/course/intro-to-computer-science--
cs...](https://www.udacity.com/course/intro-to-computer-science--cs101)

I'd say to get to lesson 2 and from there spend 90% of your time solving
Codewars challenges and the other 10% continuing the course. The former 90%
will make the latter 10% a breeze. Google whenever you have a specific
question and expect to search that same thing many times before you remember
it.

I challenge you not to enjoy this.

Udacity has another Python course (OOP with Python). It feels very 'on rails'
and isn't much fun. I'd skip it.

------
csallen
I've taught three people to code from scratch (my brother and two friends from
college). All were able to get junior-level jobs in the SF Bay Area within
6-12 months. All have since made significant progress in their careers.

To answer your questions:

1\. Is it possible to do in 4 months? Certainly, but you will have to work
your ass off, and also work very efficiently.

2\. How is it possible? Work 60-70 hour weeks (easy if you love programming
and can finance yourself without a job, hard otherwise), and have a super
efficient curriculum.

3\. What path should you take? I'll give you my advice below. To do so I'll
have to make lots of assumptions about your situation, but here goes anyway:

\---

\- Avoid bootcamps. Assuming you're more motivated than the average person in
your class, they will only slow you down. (One of my friends started a
bootcamp against my advice, regretted it, and quit halfway through. The pace
was too slow. Very few of the graduates got jobs afterwards.)

\- Give up on being full-stack. Four months is not long enough. You will need
to strategically cut corners, and this is a big one.

\- Buy a Mac, ideally a MacBook Pro. Get one used if you have to. Don't try
learning on a PC.

\- Right off the bat, start using the Terminal for everything: downloading
files, installing programs, opening programs, navigating the directories on
your computer, copying files, deleting files, etc. When you don't know how to
do something, Google it. It will be painful at first, but you will get good
eventually, and it will save you pain later.

\- In general, remember that learning new things (everything below) will often
involve lots of pain and frustration, but push through it. Once you start to
develop mastery in an area, it tends to get much more fun.

\- When learning, you want to "see saw" between reading and doing. Too many
people try to read and memorize everything, but that's impossible. Reading is
just to orient yourself so you can figure out where to start. _Doing_ is how
you learn and remove confusion. Then you read some more to answer specific
questions. Repeat.

\- Start with HTML/CSS. Find cool website screenshots on Dribbble.com and try
to build rough versions of them from scratch. Don't neglect to learn flexbox.
Do this regularly for a cpl weeks and you'll get good.

\- Meanwhile, learn basic programming. Use JavaScript. Remember to see saw.
Read just enough to get the just, then dive in and practice. There are lots of
algorithmic practice problems online, e.g.
[http://codingbat.com/java](http://codingbat.com/java). Do hundreds of them
until recursion, and looping, and writing functions, and solving basic
algorithmic questions you find online is easy.

\- When you are good with HTML/CSS and familiar with JS, it's time to combine
the two. Learn about the DOM and learn about jQuery. You'll see how JS can
make your pages interactive. _Work on small projects,_ the first of which
should be a portfolio that you can showcase your subsequent projects on. Use
Git and GitHub for these projects.

\- Continue reading about JavaScript. Read books on it. Learn the intermediate
and advanced parts of the language. People will tell you to learn frameworks
like Angular, Ember, React, etc. Ignore them. Even jQuery (which is much
simpler) will be a bit much for you to handle and will seem like magic at
first. You don't have time to dive too deep. This is just the price you pay
for learning in 4 months. But that's okay, you can still get a job.

\- When you do get a job, don't stop learning. Everyone I've taught stopped
(or significantly slowed) their learning after landing their first job. They
regretted it later and eventually resumed learning.

~~~
soneca
Wow! Thanks!! Incredible tips!

One important doubt though: how important is it to get a Mac? I only ask
because of $$$. It's like indispensable, strongly recommended or good idea
level of requirement?

~~~
csallen
You just need some UNIX-like machine. You can get Linux as an alternative, or
install Linux on your Windows computer.

