Author Topic: Programming/Coding Worth Learning for Side Hustle/Career Change or Supplement?  (Read 9923 times)

EngiNerd

  • 5 O'Clock Shadow
  • *
  • Posts: 74
The Basics:  I am a 29 year old engineer with 5 years of structural design and field engineering/construction management
experience.  I was recently exposed to life in SF and the tech scene by an old friend who is currently working on his own start
up.  I have no programming experience.  I write fairly simple excel and mathcad files for design and personal finance purposes
but never even began to learn a coding language.   

I know this community is heavily weighted with programmers/coders so I figured I would reach out for some opinions. 
Obviously there are too many variables for a “correct” answer but I just wanted to read some input from like-minded folk. 
Would committing 10-20 hours a week to learn to code in hopes of future financial compensation be more valuable than say
further specialization in my current career or learning real estate/rental markets?  I currently have a high savings rate ~55-60%,
and am inclined to put after tax savings into rentals rather than index funds but being a landlord is not very appealing to me.   

My thoughts and plan:  Learning something new is always a positive and usually enjoyable.    I should spend a few months
committed to learning the basics and see if I have a passion for it and worst case I learn some of what goes into the technology
that influences so much of our lives, both personal and professional but never monetize the knowledge.

Personal context and rambling, unnecessary to answering the subject question:  My friend is completely tech biased and
optimistic.  He thinks the net, software, and AI will prove to be a greatest of all the industrial revolutions.  There is currently a
lack of talented programmers.  Many new programmers are so lacking in eq that even if they are talented and skilled, they still
may not be effective employees.  Opportunities for earning large salaries while demanding great career freedom are plentiful
in the coding industry.  My doubts are: starting at the age of 29.5 and approaching the learning process as a hobby greatly
reduces the possibility that I will become proficient enough to earn significant money through coding.  As more people grow up
focusing on coding/programming the industry will continue to change to make the skill less valuable.  A larger labor market
and, maybe exposing my ignorance here, programming and ai may become so capable that it can reduce the skill and expertise
required by people to create useful code.  However, if coding does give me a reliable opportunity to perform remote freelance
work in my mind that significantly reduces the stache required for FIRE.   If I could just up and decided to work a couple 60
hour weeks here and there to bring in some cash I could retire much earlier. Any thoughts?

asiljoy

  • Bristles
  • ***
  • Posts: 408
Trying to learn something hurts no one and there are plenty of free resources. You can always try a coursera course and see if your eyes glaze over; if they do, programming probably isn't for you and problem solved. If you enjoy it, follow your interests, don't try to learn EVERYTHING. That'd be like trying to sip water from a fire hose and you'll get discouraged.

That said, I've only worked in corporate environments and haven't the foggiest idea how to recruit clients as an independent contractor.

EngiNerd

  • 5 O'Clock Shadow
  • *
  • Posts: 74
Thanks for the reply, that's the approach I am going to take.  So far I have enjoyed going through the exercises at learnpythonthehardway.org.  Any advice an particular free coarse or language?

asiljoy

  • Bristles
  • ***
  • Posts: 408
Python is a good place to start. It's a straightforward language that has patterns you'll be able to reuse when you pick up your next language, but the question comes back to what do you want to do? What gets you excited? Do you like stats? Then R would be a good next choice although some would argue that Python has come a long ways in that regard. Do you like design? Then focus on the front end languages (CSS, JavaScript, etc). Do you like building frameworks? Maybe then you want to look at becoming a DBA and then learning as much about databases as you can would be a good idea(SQL, Hadoop, etc).

Thinking about what kind of role you want to play too. For example, if you're interested in developing software, you don't need to be a developer to get hired; quality assurance engineers also get paid well and are in high demand, but with a different skill set. QA's spend a lot of time pouring over requirements, writing test cases, pushing logic to its limits, and developing test automation to test the thing and make sure it's what the customer ordered, whereas developers work from requirements to build the thing.




NorCal

  • Pencil Stache
  • ****
  • Posts: 896
I've worked on the finance side of silicon valley companies and pseudo tech companies (everyone calls themselves "tech" these days).  I've never done programming, so take this with a grain of salt.

I would say that if you're going to make a career out of it, you need to invest the time to learn it right.  There is a ton of demand for "good" programmers out there.  But there's a world of difference between someone who graduates with a degree in the discipline (and has experience) and someone who takes a worthless coding bootcamp.  Programming is truly a profession, and needs to be treated that way if you're going to succeed in it. 

In tech, pedigree matters too.  The people that make the money in tech are those that graduate from a top 20ish school, get a job at a Google or Facebook, then get to work anywhere they want.  Those who graduate from lesser known schools are largely excluded from the companies you'd actually want to work for.  Silicon Valley has roughly 20 crap companies for every one you'd actually want to work for.

If you do invest the time and money to learn it right, there is good money to be made.  Just be wary of anyone touting the bonuses of equity compensation.  Being on the finance side, I see the numbers.  The likelihood of employee stock options being worth real money is negligible.  This applies to the well known companies like Uber and Airbnb as well.

Feel free to PM me if you have specific questions.

trashmanz

  • Bristles
  • ***
  • Posts: 338
As someone who has a degree in Computer Engineering but has since moved on from programming here is my 2 cents.

-  What is your opportunity cost?  If you are just replacing your TV watching with learning programming, def. do it.   :)

-  To be a great programmer you do have to have a solid foundation in the various algorithms and math/logic as well as a great understanding of your particular language.  This takes time, but if you enjoy it then it can be time well spend.

-  I lean towards saying that you should have a more focused goal of how you will convert the skill to money, because it can vary a lot between writing an artificial intelligence program for a startup, or creating custom Wordpress for small business.  Typically if you are aiming for a CTO/cofounder technical lead then you need to be well skilled and also have a detailed understanding of the particular business case for the software you are creating.  Put another way, if you are learning how to re-code the linux kernel or doing low level assembly language work that is a completely different side hustle market than creating apps, or doing wordpress or buidling finance databases, etc.  There is so many niches is what I am trying to say.  Perhaps focusing on the market you want to sell your services to is good to work through...

Jack

  • Magnum Stache
  • ******
  • Posts: 4726
  • Location: Atlanta, GA
Sure, you can become a programmer if you want -- but you should leverage your existing structural engineering skills too. In other words, you want to be a "domain expert" who can help people write software for structural design. Companies like Autodesk, Bentley Systems, Trimble, Vectorworks, etc. hire people like you all the time.

Incidentally, I've done more-or-less the same thing: I got degrees in civil engineering and computer science, worked as an engineer for a while (although not long enough to get my PE), then switched to computer programming. Now I write BIM software, and it's great. (FYI: I also get paid a lot more as a software engineer than I did as a civil engineer.)

My tech lead is a PE who started out as a civil engineer, started writing plug-ins for this company's software for his own use, and eventually got hired to work on it directly. (I don't think he has formal CS credentials, but he's certainly competent and that's all that really matters.)

My advice is to take some Coursera or Udacity courses, either signing up for one of those sites' "specialization" or "nanodegree" tracks or just looking up some university's degree requirements and roughly following that. When you get past the basics and are ready to specialize, lean towards learning about graphics, low(ish)-level languages like C and C++, and parallel programming (as opposed to "web development," Ruby, etc.). If you think you want a CS degree to increase employability, Georgia Tech's online MSCS program is a good choice. (You'll need at least some programming skills before you start in order to cope with it, though -- it is legitimate grad-school difficulty, same as the on-campus master's degree.)

Once you've done all that, send me your resume!

EngiNerd

  • 5 O'Clock Shadow
  • *
  • Posts: 74
Thanks for all the input!  Sorry I didn't respond until now.  These are busy times from me.  First, I'm surprised about the suggestions of formal education.  I figured programming and freelance work was past that mentality.  More of a show us your capabilities and if we need your services we can discuss compensation type job market.  As for having a more focused goal, I agree completely.  The thing is, I am so ignorant of the industry I feel like I should at least spend a month or so learning the basics of a flexible and broadly applicable language (python?) so that I somewhat understand the trade before I decide to completely pursue it. 

Jack I really appreciate your feedback. I completely agree that I should try to leverage my engineering knowledge, degree, and experience.  It only makes sense that the more specialized and unique my experience/knowledge the more valuable I can be.  I know the pay would be greater as a skilled software engineer with civil engineering knowledge than as a civil engineer.  So do you think python is not a good place to start?  Do you ever miss the engineering to create physical objects vs software?

Still feel a little uncertainty about the big picture idea, Devoting time and energy to learn a skill so that I  can leave a career that already has me living comfortable, with job satisfaction, on the path to FIRE, but as I stated earlier there is no risk of downside here.  Also I may miss working some with my hands and seeing large scale physical objects that are a product of my work.  Thanks again for the thoughts and as I get more time and skill I will update my thoughts and progress. 

bacchi

  • Walrus Stache
  • *******
  • Posts: 5769
Thanks for all the input!  Sorry I didn't respond until now.  These are busy times from me.  First, I'm surprised about the suggestions of formal education.  I figured programming and freelance work was past that mentality.  More of a show us your capabilities and if we need your services we can discuss compensation type job market.

It is a "show me" field, to some extent. There are hierarchies in coding and getting a job in webdev or android/iOS can be done with self-learning and project work. Will Google let you work on their search engine algorithms with only some Coursera classes? Of course not. That's where the degree(s), more esoteric knowledge, and experience help.

My client is interviewing someone this week that went to bootcamp. He won't know anything about threading or db clustering but he can do the tasks required and add features to the app.

Jack

  • Magnum Stache
  • ******
  • Posts: 4726
  • Location: Atlanta, GA
First, I'm surprised about the suggestions of formal education.  I figured programming and freelance work was past that mentality.  More of a show us your capabilities and if we need your services we can discuss compensation type job market.

It depends on two things: the job market and the kind of work you want to do. Sure, during the dot-com bubble startups were (insanely) falling over themselves to hire high-school kids who "knew HTML," but the job market is not like that anymore (at least outside of Silly Valley; there might be some of that insanity going on there). Also, if you do find a company willing to hire you with no formal proof of your skills, you have to consider whether that's the kind of job you want. The jobs where they don't care tend to be the ones offering only boring, simple grunt-work (the kind that gets outsourced to India, sooner or later). In civil terms, they're draftsman or construction jobs, not engineer jobs.

Jack I really appreciate your feedback. I completely agree that I should try to leverage my engineering knowledge, degree, and experience.  It only makes sense that the more specialized and unique my experience/knowledge the more valuable I can be.  I know the pay would be greater as a skilled software engineer with civil engineering knowledge than as a civil engineer.  So do you think python is not a good place to start?  Do you ever miss the engineering to create physical objects vs software?

Python is a decent place to start, but it probably won't be the place to finish. My company's software, for example, makes Python available as a language for writing plug-ins, but the core of the program (and any non-trivial plug-ins, for that matter) is written in C++. The same or similar will be true for every other engineering software. If you're really unfortunate, you might end up somewhere where they still write in Fortran or Ada (but the latter is more of an aerospace CAD thing)...

Of course, thinking of programming in terms of which language you know is entirely the wrong mindset anyway. That's like a civil engineer asking "so should I learn the metric system or imperial?" It doesn't matter; the concepts are what are important and they can be expressed in any language. It's just that some languages are more well-suited for the task and/or more commonly used than others.

In other words, you should not ask yourself "what language should I start with?" You should ask yourself "what concepts should I start with?" and then pick a language that least gets in the way of learning those concepts. It's only for that reason that Python is a common recommendation: unlike C, you don't get bogged down in pointers and memory management, and unlike Java, you don't get bogged down in 'enterprise-y' object-oriented boilerplate. Matlab/GNU Octave or Scheme are also reasonable choices for first language, but Python is the most generalist and widely-used of the three. Later, when the answer to "what concept should I learn next" is "high-performance parallel or distributed matrix solvers" (the core of structural analysis software), the "language that least gets in the way" will no longer be Python.

And no, I don't miss creating physical objects. First of all, I spent time in operations and in design, but not in construction -- so I never actually saw anything I designed get built anyway. (I suppose some of it probably exists by now, despite the fact that lead times are really long for highway projects, but I've never visited the sites to see.) Second, one of the great things about programming is the instant gratification of writing something, hitting "run," and immediately watching it work (or fail to work...!). It's much more (virtually) "hands-on" than handing off a drawing to somebody else.