Files
site/become-an-engineer.html
Rawley Fowler 36f10cabb6 fix meta
2023-10-12 08:20:27 -06:00

85 lines
4.6 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Become a software engineer</title>
<meta name="description" value="How to become a software engineer. The real way.">
</head>
<body style="margin: 0; padding: 0; background-color: rgb(254, 249, 232)">
<div style="margin: 48px; width: 580px;">
<a href="/">&lt;&lt; back</a>
<h1>Become an Engineer</h1>
<p>
This learning track assumes you have a computer built after 2004, with
<a href="https://debian.org">Debian Linux</a>, <a href="https://freebsd.org">FreeBSD</a> or <a href="https://openbsd.org">OpenBSD</a> installed. (Windows simply won't do.)
</p>
<h2>Start here (read both and do all of the exercises)</h2>
<ul>
<li>
<a href="https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html">Structure and Interpretation of Computer Programs by Sussman et. al</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">The C Programming Language by K&R</a>
</li>
</ul>
<h2>Getting deeper (read all 3, do all exercises)</h2>
<ul>
<li>
<a href="https://algs4.cs.princeton.edu/home/">Algorithms by Robert Sedgewick</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Types_and_Programming_Languages">Types and Programming Languages by Benjamin C. Pierce</a>
</li>
<li>
<a href="https://www.macs.hw.ac.uk/~greg/books/gjm.lambook88.pdf">An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson</a>
</li>
</ul>
<h2>Low level learning</h2>
<ul>
<li>
<a href="https://mitpress.mit.edu/9780262640688/the-elements-of-computing-systems/">The Elements of Computing Systems by Noam Nisan and Shimon Schocken</a>
</li>
</ul>
<h2>Category theory</h2>
<ul>
<li>
<a href="https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/">Category Theory for Programmers by Bartosz Milewski</a>
</li>
</ul>
<h2>High(er) Level Languages (pick at least 2)</h2>
<ul>
<li>
<a href="https://www.oreilly.com/library/view/programming-perl-4th/9781449321451/">Programming Perl by Christiansen, foy, and Orwant</a>
</li>
<li>
<a href="https://learnyousomeerlang.com/">Learn You Some Erlang for Great Good by Fred Hebert</a>
</li>
<li>
<a href="http://learnyouahaskell.com/">Learn You a Haskell for Great Good by Miran Lipovaca</a>
</li>
<li>
<a href="https://www.stroustrup.com/tour2.html">A Tour of C++ by Stroustrup</a>
</li>
<li>
<a href="http://www.cs.cmu.edu/~rwh/isml/book.pdf">Programming in Standard ML by Robert Harper</a>
</li>
<li>
<a href="https://www.oreilly.com/library/view/the-ruby-programming/9780596516178/">The Ruby Programming Language by Flanagan & Matz</a>
</li>
</ul>
<p>
This is the way to becoming a truly great software engineer. I've read all of these books, and I can say that they all manifest within
me a strong sense of confidence, and the ability to adapt to any situation that might come my way in computer science.
</p>
<p>
You may be reading this list, thinking... what about Java or JavaScript??? Now, I don't think these languages are bad per-se, but I do think
they have the ability to destroy your life. Once you've used Java or JavaScript, there is a good chance you will become closed off from
the rest of the computing world, falling into a world of patterns and objects. You may also find that languages like these have the adverse
effect of having incredibly low skill-ceilings, which compounds the idea of you becoming stuck. A low ceiling, and a low floor, is a prison, not
a tool to conjure the spirits of the computer.
</p>
<br>
<br>
</div>
</body>
</html>