Compiled tech career advice from comments

Roughly in order. All content plagiarized with no apologies, because that’s how we do it on the streetz. Generally drawn from these comments though:

Query
The Manichean dialectic

First, begin to absorb the general ethos of these fellas (watch a couple of videos per day for low-impact fun and profit):

https://www.youtube.com/user/jsonmez
https://www.youtube.com/user/killerphp

Also read Hacker News daily, as it’s a good way to pick up general tech lingo and developments in the tech world. Succeeding as a contract coder is also part political and you need to understand the pond you’re swimming in.

https://news.ycombinator.com/

Read this book boildown to learn how to learn, and apply it to the critical path to getting paid CASH MONEY:

  1. 12-week coding bootcamp [Ed: not viable for me at the moment, will self-teach]
  2. Create a website and blog about programming
  3. Write some simple apps, put them in the app store if possible
  4. Specialize in something and go deep
  5. Go to as many IRL geek meetups in your area as possible and network

Apply Scott Adams’ talent stack thinking to IT [Ed: but still go deep?] JS + AI + data science == superstimulus to the recruiting officer’s brain, so they will overlook juniority. [Ed: This won’t work for everybody but it’s good advice for me, I have the math background to pull that off.]

You can get a job working purely as a front end developer and those skills are highly in demand. Learn the following, in order of career significance (i.e. go deep on Javascript):

  1. Javascript (ES6 standard)
  2. AngularJS/ReactJS (the main Javascript framework these days)
  3. HTML/CSS
  4. Jquery
  5. One backend language (for ease, try NodeJS which is Javascript on the server, otherwise go with PHP or Java)
  6. Linux

For 1 and 3, at least, do FreeCodeCamp. Read the book/pdfs “Javascript: the good parts” by Crockford and “Eloquent Javascript” to go deep on that subject. Get a VPS and play with it to learn Linux backend, or at least run a virtual server. [Ed: dual-boot and play with the shell and shell programming to get used to that, maybe do Linux from Scratch to go deep on that one. Dunno about AngularJS or Jquery.] Learn the Linux file structure, the permission system and such things as systemd daemons. Also try use the terminal as much as possible and learn vi. The terminal is immensely powerful and used by most serious unix-like developers. Maybe combine all of these and run the blog on a VPS, advertising one’s resume and apps?

Avoid C, C++, PHP, and Java, and the Unix suite except as hobbies or sexual masochism.

This is basically the landscape of JS frameworks right now: Angular 1 is the king and has been for about 3 years. Backbone, Knockout, Ember are some older contenders that are still popular. React is an up and comer that is taking market share from Angular. It doesn’t provide as much structure so you basically have to learn another add-on framework (Redux, Reflux, etc). Angular 2 is on the horizon, but hasn’t really gained traction yet. Aurelia is like Angular 3 but not widely used. Learn Angular or React. The latter is more popular in the US than here, so should be fine.

Conceptually, learn basic algorithms (quick sort, binary sort, recursive search) and data structures (arrays, linked lists, trees, graphs, hash maps). [Ed: I haven’t read it, but I suspect Knuth’s classic book would be good for this, and you get to swagger around the IT department. Other possibilities are “The Manga Guide to Data Structures” and the Great Courses series for learning Python.]

You can get books on gen.lib.rus.ec, bookzz.org, sci-hub.io. There are huge torrents of programming books (presuming you are already comfortable with that software, which I understand is pretty common).

Advertisements

About Aeoli Pera

Maybe do this later?
This entry was posted in Uncategorized. Bookmark the permalink.

67 Responses to Compiled tech career advice from comments

  1. Edenist Whackjob says:

    Fantastic, Aeoli!

  2. Akuma says:

    Sololearn app for Android smartphone. You can access it through the Web browser too.

  3. More stuff off the top of my head:

    Not sure how up-to-date this info is. Angular2 (it’s actually Angular4 now) has very much caught on and AngularJS is only in legacy projects now. With modern frameworks, JQuery is no longer needed.

    Understanding the principles of object-oriented programming is important if you’re using Java and/or Angular. Concepts like classes, interfaces, inheritance, polymorphism, generics, static vs. non-static should be very familiar.

    You should have at least a basic understanding of how databases work and know basic SQL commands (most jobs won’t require you to be an expert on it).

    You should know what a REST API is and how to connect with one. This is how websites communicate with servers.

    You should understand Big-O notation and how to determine an algorithm’s running time (this is hugely important for prestigious companies, not as much for others but might still be asked).

    Most companies use the agile development process. You should know what agile development is.

  4. Throw in a good GTD type system to keep track of everything.

  5. Koanic says:

    Consensus says Javascript is the right language to learn to become a developer.
    However, I think all the advice is wrong. Because the goal is to make money by learning a language, not to become a “developer”.
    Learn Ruby, database administration and system administration, and you’ll immediately be useful to ALL businesses, instead of just “developer” jobs.
    Because you can create prototypes that accomplish business goals immediately.
    But that requires independent thought, which most people don’t have.

    • Edenist Whackjob says:

      It’s dangerous advice because it risks steering Aeoli off the proven track. Value-adding entrepreneurship via tech is great and kind of where I’m now – would not recommend as beginner, though.

      • Koanic says:

        I doubt that. SQL is proven.

        • Edenist Whackjob says:

          Learning SQL is certainly a good idea.

          • Koanic says:

            Thus the logic is that everyone needs sysadmins and DBA’s, which gets you in the door of wherever you want to go, and Ruby developers have the highest average salary, because they conceptualize and create the value instead of just fulfilling someone else’s vision, which also adds “go anywhere” flexibility.

            Plus people who learn Ruby say they loved doing it, which boosts adherence, very important when facing the hardest challenge in programming – learning your first language.

            • Edenist Whackjob says:

              You’re saying that the way to go is to aim to add business value via Ruby, SQL, and being a sysmin. And OK, to be fair I can’t speak on it, as I haven’t done it that way.

              My personal inclination would be towards fostering that mindset in oneself, yes, but to not start off with Value-Adding Engineer* as one’s main player character from the get-go, as it’s likely a harder path for a beginner.

              My prior is that Aeoli’s winning ticket would be JS, since that’s an in-demand staple of the market that is not likely to go anywhere, and a nice language with good feature set (functional programming with lambdas and lexical scoping built-in to the language) and approaching sanity these days with TypeScript et al.

              I’ll also add Data Science / AI since that’s all the rage these days and Aeoli has most of it already + can learn the rest fast since he has the mental model for it.

              I’m just approaching it from the perspective of market statistics, hiring officers, and building a good foundation that will last. Right now, Aeoli just needs to get in the door as a junior dev for 2-3 years, THEN he can start thinking about being an entrepreneur. Just my 2 eurocents, of course, and I’m sure other paths are viable as well.

              * Now, for emulation of someone who *is* all about adding business value via tech, and a fan of Ruby, this guy is the man: http://www.kalzumeus.com/

            • Koanic says:

              You are confusing the butter with the potatoes.

              Tech support -> sysop -> sysadmin is the most basic-bitch tech path available. Jumping straight to developer is harder. For one thing, you may not even know how to manage your own development environment.

              Database administration is another basic-bitch entry path. It starts with data entry, which teaches you the data model and business use case.

              Ruby just enhances your generic capabilities quickly, improving the odds that you can find something useful to do that gets you out of data-entry desktop-support hell. Or at least automates your busywork.

              A language that is “approaching sanity” is not the right tool for your first Swiss Army knife at the construction site.

              Patio11 is a good find, but not very relevant to basic entry level stuff.

            • Edenist Whackjob says:

              Oh OK, I see what you’re saying. Fair point. My guess would be that Aeoli can ace entry at junior dev level – if he applies himself. His math brain will make Data Science an appealing add-on to CV, and make him stand out a bit in a sea of frontend monkeys.

              I have personal experience underestimating my own code chops, leading to series of underqualified entry-level jobs. I would recommend aiming “high”.

              For, we can disagree. Main thing is to get Aeoli out of the building – any step is progress :)

            • Edenist Whackjob says:

              *For now

            • Koanic says:

              You mean overqualified. Your method requires a period of study before employment can result. Mine doesn’t. It’s not a question of underselling skills one has developed, but of learning IT on the job, which is the fastest way. With Ruby one can quickly begin one’s own side businesses, increasing bargaining power. Plus, doing basic glue tasks with Javascript sounds like hell. One can always learn it second for what it’s good at.

              Anyway, Aeoli has a job, and IIRC his primary pain point is data entry, which suggests either scripting (Ruby, AutoHotkey) or DBA.

            • Edenist Whackjob says:

              “Plus, doing basic glue tasks with Javascript sounds like hell”

              Yup, that is true. Cultural predilection for doing everything async-style makes it a poor choice for synchronous Swiss army knifing (although great for rapid backend development and gluing together various APIs for instance).

              “Anyway, Aeoli has a job, and IIRC his primary pain point is data entry”

              Yes, that calls for a good scripting language. Python, Ruby, Perl, PHP, would be my order of preference there.

              Aeoli, why don’t you start a thread on your current day job problems, code-wise, and we’ll see what we can recommend there?

            • Edenist Whackjob says:

              “You mean overqualified. Your method requires a period of study before employment can result.”

              Yes, true. Because I’m assuming Aeoli wants to advance to contract programmer a few years down the line. A medium-level contractor is looking at $80-100 / hour, and it’s strange at all to charge twice that.

            • Edenist Whackjob says:

              * not strange

              Alright, guys, I enjoy debating this, and Koanic makes good points. I’ll exit this conversation for now, but let’s all agree on one thing:

              Aeoli Pera must see the light of day.

            • Koanic says:

              I’m just smirking because I held my own despite knowing .1 computer languages.

              If brevity is the soul of wit, economy embodies grace.

            • Mycroft Jones says:

              See my other comment. For T-back, JavaScript and the safe proven path is more reliable. M-back can create stories on the fly, so you can overcome the deficiencies of a botch like Ruby, because Ruby has “magic” and magic fits the M-back nicely. I think EW is right, get in as junior, make some decent coin for a few years to see where the value is, then go entrepreneurial. I tried doing it your way Koanic, and have failed miserably over the years. Without M-back, you CANNOT skip the junior phase where you learn about the levers of power control and value in the software ecosystem.

              Also, who the heck hires sysops these days? Do sysop/sysadmin jobs even exist?

            • Edenist Whackjob says:

              Sysmin is coded “DevOps” these days.

            • Koanic says:

              Correction erection:

              If brevity is the soul of wit, economy embodies it.

              Maybe Mycroft’s right. I didn’t factor the T-back learning style. My idea of adding sysadmin and DBA secondary paths for more flexibility and stronger foundation is still good. Given the possibility of data science and DBA paths, plus learning ease, Aeoli should still learn Python first. One should always learn an easy general glue language for one’s first real language. (Not counting stuff like Bash, HTML/CSS, etc.)

            • Mycroft Jones says:

              They did some tests with dynamic vs statically typed languages. The people who used the statically typed languages FELT more productive, but they were objectively 30% less productive than the dynamic guys. Point being, there are languages that can keep you busy spinning in circles feeling very active and productive… then the guys with the boring languages serenely sail past you. Feeling productive isn’t the same as being productive. But if you have an M-back, you can project your feelz onto the client, and he’ll there-fore happily pay X% more than the crew using the boring technology. Without M-back to sell that sizzle in the steak, no workee.

            • Koanic says:

              Nope. Static is better for collaboration and scale; dynamic is better for learning and personal.

              https://games.greggman.com/game/dynamic-typing-static-typing/

            • Edenist Whackjob says:

              Static vs dynamic:

              Static typing is a good safety rail but if you’re advanced you won’t make those mistakes anyway (same reasoning kind of goes for TDD). A high-class chef doesn’t worry about chopping onions, that sort of thing.

              Intellisense-type code completion is nice to have, but it’s possible to get it “good enough” with dynamic.

              There’s a whole nother level of this debate, though, which gets into formal code correctness, immutability, functional purity, monads, algebraic data-types, that sort of thing.

              I’d say if you use mostly side-effect free code, and try to contain effects / state within modules, that goes a long way. Much more important than declaring your ints and crossing your trees.

              Ie find a happy medium between “1000 line imperative monofunctions with unpredictable changes to global variables” and “OCD-level functional purity which makes it hard to do anything in real world”, with preference given to the latter somewhat.

            • Mycroft Jones says:

              John Carmack, widely believed to be the best coder/programmer in the world, had some things to say about static vs dynamic. Carmack made the games Doom and Quake. He said dynamic is more productive for fast development, but static starts to shine in long term maintenance, when you have a ten year old code base. But then he said, even then, at the ten year mark, static and dynamic come out about even. The initial cost and labor of static hardly justifies itself.

              https://www.taoeffect.com/blog/2010/01/how-newlisp-took-my-breath-and-syntax-away/

            • Mycroft Jones says:

              EW: if you use mostly side-effect free code, and try to contain effects / state within modules, that goes a long way. Much more important than declaring your ints and crossing your trees.

              I agree with this 100%.

    • Mycroft Jones says:

      Ruby may be a good choice for M back. NOT a good choice for T back. Ruby drives us crazy because it is SO flipping buggy and crashy and SLOW as fuck and insecure by default, and full of magic and woo that makes it really hard to debug. There is a reason that Ruby people (if they are good) get paid so highly! Looking at how Ruby does things, it fits M-back processing style. For T back, more concrete languages like C, PHP, JavaScript, etc are good. For high IQ, eventually, learning Haskell and Lisp might do some good for a T back, but won’t benefit us the same as M backs. Ruby is for symbol processors who are good at story telling. In almost every way that I care about, it is a bad language and environment.

      Koanic, if you care to reconnect on Skype, as you learn Ruby and Rails, I’d be happy to match you point for point in Lisp or Haskell. At the end of the process we’ll have the good point of Ruby/Rails (fast development and prototyping) in an actual sane language and environment. If you are growing down this Ruby path, let’s do it together, its about time someone made a proper replacement for Ruby.

      Also, everyone has to learn SQL and regex. These two languages are mini-languages embedded and called from almost every other language. Very useful.

    • Koanic side question: Have you worked much on developing more GTD stuff recently?

  6. Boneflour says:

    Pretty damn epic post.

    I like FreeCodeCamp starting out. Javascript is huge for US right now (as far as I can tell) and FCC gets you the fundamentals and some portfolio projects.

    https://www.freecodecamp.org/

    The big benefit is it gets you to do all the things you’d probably put off. There’s a “Sign Up For GitHub” challenge, a “Sign up for LinkedIn” challenge, a portfolio website challenge, etc. Seems like everybody wants you to have a GitHub and be familiar with version control software (like GitHub).

    This guy has a bunch of roadmaps from bare minimum “job-ready” knowledge to data science to senior dev qualifications. Good starting point:

    https://github.com/P1xt/p1xt-guides/blob/master/job-ready-javascript-edition-2.0.md

    https://github.com/P1xt/p1xt-guides/blob/master/data-science.md

    https://github.com/P1xt/p1xt-guides

    • Koanic says:

      Freecodecamp is only good for javascript, which is a bad glue language. I prefer Codecademy, going for either Python or Ruby for a handy glue language first.

      • Mycroft Jones says:

        The Ruby bootcamps are shutting down, lack of demand. Python is a better bet, it has the funding of the scientific community behind it.

        • Koanic says:

          That’s an industrial move to Javascript, which doesn’t affect the reasons to learn Ruby as a first language. Python does not have Ruby’s personal prototyping capabilities. Ruby is the Swiss Army knife that you carry in your pocket. It does many small tasks easily for which larger tools are overkill. This allows the larger tools to shine in their respective competencies. Just because Python is what data scientists use does not mean you should create your first personal database with Python. You should use Ruby. You do not need a claw hammer to open your beer.

          • Mycroft Jones says:

            Opening your beer with a claw hammer can be very satisfying. :)

          • Mycroft Jones says:

            Python is more a swiss army knife than Ruby. As languages, they are about equivalent, but Python has a lot more libraries and infrastructure. Also Python is simpler, with its philosophy of “there is one right way to do it”. Compared to Ruby’s approach “let’s write a mini-language, then write the solution in that!”

            • Koanic says:

              > Python is more a swiss army knife than Ruby.
              > Python has a lot more libraries and infrastructure.

              That is the wrong metaphor. “Lots of libraries” refers to the toolchest, not the pocket knife. You are just complaining that pocket multitools are inadequate for major construction work. That is not an argument against the utility of a pocket multitool, and why it should be one’s first tool.

            • Mycroft Jones says:

              You said swiss army knife, not pocket knife. A swiss army knife is a tool chest. For basic operations, Ruby, Python, newLisp, Perl, Tcl are about equivalent in speed and utility. For learning bad habits and woo from the beginning, I’d put Ruby and Perl right up there at the top. For learning good habits, I’d put newLisp and Python at the top.

              I know you recently chose Ruby for a project. If you want Aeoli to learn it so he can join you one day, understood. But for the sake of getting him making $$ soonish, getting him to choose Ruby over JavaScript is a dick move.

    • Boneflour says:

      Oh hey, we have language wars and stuff now, just like real hackers! Ruby is great because it has gems. GEMS I tell you. That’s good marketing. My favorite language is Node.js though. Java Virtual Machine is a close second.

      By the way, Sublime 3 is the best text editor. Vim is for amateurs and Spacemacs is a big pile of hacks layered on top of each other. Closed source is the only way to live.

      GitHub is the best database, hands down. I do all my SQLs in GitHub.

      • Koanic says:

        > Spacemacs is a big pile of hacks layered on top of each other.
        True

        > Closed source is the only way to make a living.
        FIFY

        > I do all my SQLs in GitHub.
        https://gitsql.net/home

      • Edenist Whackjob says:

        Normally, language wars is a Clueless-tier activity that I stay away from (because I’m a Gervais Sociopath and have Layer 8+9 utility to harvest in the real world).

        In this case, I think it adds momentum to Aeoli’s code-quest. Also, there are some genuinely interesting things being said (by Koanic) about the design interactions of personal utility, glue languages, programmatic expressibility, that sorta things.

      • Boneflour says:

        What is this? Comments focusing on the good parts of these threads? Interesting resources like GitSQL? Mutual respect!?

        This is the comments section! Stop this madness now! xD

  7. Mycroft Jones says:

    Here is the sort of wisdom you find on hacker news (I mostly agree with it, btw) The key is for us to skip to step 10 without having to waste 20 years in between.

    Language learning apps are step 5 in the ten step process of achieving programmer hubris nirvana.
    1) I’m in college and I’m going to build an app to easily buy and sell books
    2) Off campus housing is hard, I’m going to build an app to find roommates
    3) Splitting bills with roommates is hard, I’m going to build an app for cost splitting
    4) All my previous apps sucked because they weren’t social, I’m going to build a social network app
    5) I’m bored partying with my new friends, I’m going to level up and build an app to learn a new language
    6) I’m lonely, I’m going to build a dating app to find a mate
    7) I found a mate and the whole engagement/wedding industry is a fraud, I’m going to make an app to make it easier to navigate
    8) My children are awesome, I’m going to build apps to manage their time/friends/eating/sleeping/learning
    9) Technology is a waste of time, I’m going to spend my time on other hobbies and my family
    10) I’ve been working 20 years in a boring industry and I see an opportunity to write boring software that solves boring problems that businesses will actually pay for. Jackpot.
    Edit: As others pointed out, should have included: ToDo app, Blog App, and a travel app. Travel should probably be 5 with language at 6.

    • Yeah, that describes the “ideas for money-making apps” tech-tree pretty well. As you point out, the mature thing to do is to solve a real problem that hasn’t been solved umpteen times before. It can be very niche – the global market for anything is big.

  8. What I did:
    1) Started a basic bitch as humanly possible on Treehouse
    2) Started building my LinkedIn network and posting loads of articles et cetera (now have 6500 LinkedIn connections with a good percentage of C-Level and Investment shot callers)
    3) Got a Treehouse TechDegree in JQuery, Angular 1 and Node
    4) Got some startup experience and experience getting funding (didn’t really go anywhere)
    5) Persevered with an engineering startup that is growing arms and legs now
    6) Learned basic WordPress and took loads of business and sales courses on Udemy
    7) Springboard Data Science Intensive
    8) Udacity Deep Learning Foundations ND
    9) Udacity ReactJS ND
    10) Udacity Robotics ND
    11) Between 7 and 10 I started getting offers to help market Initial Coin Offerings and have a bunch of advisory and board roles in new ventures

    If I were starting from basic tier I would learn wordpress, sales funnel stuff, Springboard Data Science Intensive, Treehouse JS TechDegree, Udacity AI ND and Udacity ReactJS ND and just network like hell. This also means learning Python.

    Back end it’s probably worth learning Django because all the Data Science, AI and Robotics stuff is written in Python. Also PHP Lumen is good.

    Be sure to write quality professional content and be part of some kind of movement to change something. That always throws up good relationships and options. Like a good church even and charity work and stuff. Make websites for that people will love you.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s