Should I give up from programming?
This is gonna be kinda of a personal mess.
My background is in film. In Bahia, Brazil.
I understand this is a very personal question with numerous factors to take in, some on which I'll absolutely not be able to convey.
I'm not looking for any definitive life advice because I know that's impossible. I just wanna hear perspectives from some smart people that might help me understand my situation. I've recently been through a (kind of a) life and death situation. I'd be dead or with severe neurological trauma without a helmet.
This made me rethink a lot of stuff about my goals and my life in general. I feel I can confide on Tildes, you people are usually caring and smart and awesome. I'm also a bit emotional, so please be gentle. Spending 24 hours on a hospital bed contemplating death and incapacitation kind does that too with you.
I won't change many details because fuck it, I don't thank there are a lot of people in the world wanting to dox me. And Google already knows everything about me anyway.
I have two very serious psychiatric diagnostics that impart my life in serious ways: bipolar disorder (type II, thankfully) and ADHD. I'm also suspected to be on the autism spectrum but I don't have the means to achieve this diagnostic. It would be useful anyway. These conditions seriously impact my ability to sustain a job for long periods and I have a hard time working with teams bigger than three (sometimes not even than).
I live for free in my mother's conformable apartment, while I she actually spends most of the time on another continent. It's a pretty good deal. But I wanted to be independent.
About two years ago I decided that work in film (my original major) would never provide me the financial independence I needed. Working in film means traveling a lot, infrequent hours, absurd exploration (its common to sleep 4 hours a day), and rampant drug use. I love film and do have a talent for it, but the environment is simply not conducive to my mental health.
Of course, now I realize that computer science may also not be conducive to mental health issues at all. The thing is, really like. When I'm lisping, the real illogical world becames more bearable, and I feel in a wonderland of logic, reason, and calming predictabilidade. This doesn't happen as much with other languages such as Python. I also suck at it. So much that's not even funny. I'm addicted to Linux, Emacs, and the command line, but that's kinda it. I became a Vim/Emacs semi specialist. I don't see myself ever doing anything complex. It this my mind, really!
I've been trying to program for almost 3 years and, beside my super awesome machine, I have nothing to show for myself. I try focusing on using things like Java or Python but I always get sidetracked trying to do some cool shit on Emacs.
Sometimes I wonder if I should just assume that I won't be able to concentrate on anything else and just learn Emacs Lisp for real. It's frowned upon by a lot of people, but Emacs is a wonderful learning environment and at least I would be doing something. Maybe an interesting package that some people would like to use.
Right now my choice seems to be between failing to study things that make me miserable (like OOP), but have clear professional possibilities, or focusing on something I actually like that might make a better programmer in the future.
An important detail: I'm 38 years old and unemployed. My region is not very economically active in that area but I'm afraid to leave it because then I would lose my support network. And the mere notion of being with other people on a daily bases causes me panic attacks.
And, as a reminder, studying programming with bipolar disorder ADHD is hard as fuck. My ADHD is so severe that I constantly forget what I'm doing withing seconds. That's probably why I like Lisp, which is more regular than other languages and I can get things more easily from context.
On the other hand, I'm super charming (and not at all modest hahaha) and interesting at parties because my scattered interests make it possible to contribute meaningfully (and sometimes witty) to pretty much any conversation. My success with women is indirectly proportional to may financial troubles.
Anyway, I know I said this was not about advice, but I kinda lied: what's your advice? Should I keep trying on something I'm not really talented at just because I like it (and it may bring financial rewards in the future).
Or should I just give up and, try my hand at some shorts and even a novel? (I'm currently on a severe writer's block though, but I do have some talent for it).
Maybe I could work from home, be some kind of sysadmin (in which case, what would be the quickest and cheapest way to do so?). I absolutely don't wanna create huge complex products, but managing thinks remotely would be awesome.
I also love philosophy and logic, and, if became suddenly rich, that's what I'd do for the rest of my life. Oh, well.
Your post is a lot to digest, so I'll try to be pragmatic:
It's ok to have a career option that doesn't make money (even though it could). We call it a hobby, right?
In programming, that's fractally true. What I mean by that is that yeah, if you want to make money, you'll definitely learn one of JS/TS, Python, Java, or even PHP. There's jobs in other languages as well in decreasing order of popularity but as it gets more niche, you'll need more experience both to find the job as well as to get it. But… a lot of programmers toy around with things just because they're fun, not because they're job prospects.
Now, I noticed this:
I think that one huge issue in my life, which I'm getting to terms with now by learning figure skating at 29, has been my tendency to jump on the idea that "I suck at X, so it's not something I enjoy". It's prejudice, almost. The thing is, we learn; so the question is more "do you enjoy learning X" than "do you enjoy doing X", because X itself might not be fun until you do some nice things with it. Do you strive to learn more?
If not, then it might not be for you indeed. But from your post here, you strike me as someone who does enjoy it and is just getting into a bit of a slump and wondering if it's "worth it". Especially if you're in a situation forcing you to reevaluate your life choices, then the outliers will come up.
So what do you want? Do you want a job? Do you want an activity that alleviates your ADHD? Do you want a fun hobby?
Asking the question "should I continue" is like asking the question "should I turn left". I dunno, should you? Where do you wanna go?
This is a lesson I have had to learn several times. Once you're aware of it though, it becomes a bit easier to persevere. I've been programming for 25+ years, but only about 6 of those professionally.
Each time I've needed to learn a new language or framework to do a job I've felt like a complete idiot all over again. Imposter syndrome whispers really discouraging things in my ear. Depression sometimes joins in. Each time though, there's a point where I've googled enough words, experimented with enough concepts, and practiced enough patterns, that I suddenly realized that I get it. My self confidence surges back and I become more productive than ever.
It's hard to keep going, especially in the beginning, but it's worth it. It's also extremely important to have coworkers and management that understand that you're learning and give you the space and time to do it. I would not be where I am without the people who helped me learn all the new languages and frameworks.
I was correct that Tildes would give me smart, insightful answers :)
I really want an activity that takes away the economical burden my health issues pose to my family. Both the doctor and the medications are crazy expensive, and cheap doctors will just dope me to no end.
At the same time, I don't think I'd be able to do a significant contribution but doing any shitty like. Sub-empregos (subjobs) are the reality in Brazil and one must way very carefully if the opportunity cost to earn something that will barely bay for their own expenses is worth it in face of investing in something more substantial.
Even with all the previous conditions, I will make an offer and take one of those subjobs after COVID ends and I recover from my accident. It's very little money, but 200 dollars are still 200 dollars.
I really wish your answer end up saying "just study lisp then! everything is transferable! hahaha. Because sometimes I think the option the studying lisp or no programming at all. And I totally get your point on learning -- I do like learning programming. A LOT. The main problem, I think, is that anxiety gets in the way. I keep thinking about how this needs to generate financial a result and this makes me crazy.
Thanks!
If your goal is money, lisp is definitely not the answer. It's extremely niche. But I don't want to discourage you; having lisp on a resume is a pretty big plus: In programming, we often hire based on skill potential rather than current skill. Current skill is a filter, but skill potential is the final key.
Here is my practical advice if you want to do small jobs and earn a side income based on your profile: Learn JavaScript and React and do some frontend. There are excellent tutorials and resources out there.
Why React? Not only is it a highly in-demand skill, it's a functional framework. Many of the concepts from Lisp are hugely popular in JS and functional programming is all the rage currently there. I quite love it myself. You can learn pretty quickly and once you get going feel free to DM me if you need more coaching, I can do a couple hours for free if you like.
I think the problem is that I'm stubborn as fuck, and I also have trouble dealing with too much complexity, too many parts working together. And that's basically with web development is. Putting together some lisp functions is easy to visualize and caters to my strengths, but when I need to put lots of peaces together my brain goes haywire. An HTML is like a Cthulhuian to make send, I kind like and need things neat (remember: possible autistic), so I was thinking if there's something I can do that caters to this propensity to order.
With React you don't deal with HTML's mess; you output JSX which is, on the surface at least, a much neater form of HTML (in fact I'd largely call it XHTML).
Furthermore, writing frontend logic in React is entirely functional so it's a lot closer to what you're describing. I'd recommend trying it for a week; if I'm wrong, the worst that could have happened is you expanded your knowledge a bit on a highly-sought-after skill.
That is very good to know thank you for that information!
A lot of people are giving you really good programming advice, but an alternative might be system administration. Try doing some cool stuff with shell scripting (Bash). If you end up liking bash, and you are already comfortable with the command line (as you seem to be), then try setting up a working server hosting nextcloud or gittea. (or any other web service, but those are the two I have experience with as a hobbyist.)
If you still enjoy that, you may want to look at linux administration as a career path.
You say:
and
It sounds like maybe you'd prefer functional programming to OOP. You can write functional programs in any language, but Lisp is definitely made for functional programming. If you can learn the syntax of Python, there's no reason you can't write functional programs in Python. If you're looking to do this as a career, there are very few jobs that use Lisp. Rust is a functional language that is growing in popularity right now, so that might also be an interesting avenue to pursue.
If you do end up continuing to pursue programming, I think the best way I've found to learn is to come up with a project and then just work on it. It doesn't have to be anything huge, and you don't even have to commit to finishing it, but there's no better way to learn a new language than to do some work with that language. If you want some web dev experience, you could make a personal website. Or if you want to combine some python and some web dev, you could set up a python server and make a text-based game that plays in a browser. There are tons of little projects I think you could come up with to get your hands dirty. When I was first learning HTML/css/js, I used to pick some of my favorite web pages and just try to remake them from scratch, or make an "updated version" of the page just for fun. Most of the time they didn't really have the same functionality, but I think it really helped me learn about layout and styling a web page and working with JavaScript a little bit. Start small, ask something like "how did they make this animated navigation bar?" or "how can I make a color change depending on what is selected in a drop down?" and then try to remake it. Google is your friend here.
Since you like lispy/functional languages, I recommend Clojure or Elixir (IMHO Python is not as much fun). They both have large enough communities and enough economic activity that you might make yourself useful, find friends and have a higher probability of sustainable income. Most importantly, don’t underestimate the importance of company, especially for the long haul.
I don’t think Emacs lisp, by itself, provides enough scope for growth, given its limitations. Also, if you like numerical programming, give Julia a shot.
Finally, you might enjoy the following article about lisp and the bipolar mind: http://marktarver.com/bipolar.html
Good luck! :-)
Some tactical-level thoughts:
Learning on the job might actually work out, if you can find an environment where you're allowed or expected to learn on the go. I find that work gives me structure that allows me to be productive in a way that I haven't been able to in my personal life. I suspect I'm on the autism spectrum too and my executive functioning being off might be contributing to my inability to actually finish personal projects. (There's also the disinterest in expressing something externally, but that's a different story.)
Writing tests can also give you structure and something fixed and reliable to hold onto. There are various *-driven development techniques (test-, behavior-, readme-) that help with breaking features down and implementing them step by step.
I think I get how the language you work in can affect your productivity: Ruby and Elixir feel all squishy and sprawled for me, Python has better rigidity to it. I second the recommendation to look into other FP languages: I know there are companies that hire for Haskell and Elm developers.
Lastly, on non-complex codebases: I can't say this with authority, as I've only been in web/mobile development myself, but I'd look into areas like various automation jobs, QA automation, visualization, research assistant roles, developer relation roles.
Better not. If you want to learn programming, keep at it.
I'm 34 and from Brazil too. I've been using Linux for so many years (since i was 17 i think) that if i started when i first used, i would be a hell of a programmer today and probably better employed (not that i'm doing bad, but i work in another field: government job).
I can spit bash scripts fast just fine. My workflow is basically a bunch of them working together, and i thought programming would not be that hard and started with Go. I wanted a more modern language.
In the beginning it was a breeze, i am almost at the end of the course, but when it starts looping through multi dimensional arrays, parsing text files and searching for words, my brain starts to melt.
I was doing something, but i couldn't understand anymore what i was doing.
I decided to take a step back and am learning Python now. Because at least with python i can write scripts to do small tasks just like with bash and put things to use. I couldn't come up with something i wanted to do with Go.
So, i'm starting to learn Python with the goal of writing a web scraper to monitor some forums i use to search for sales of a product i want, but don't really need right now. I don't want to visit the forums every day and look at the topics to find what i want. So i think i could easily do this with Python (i could do with bash, curl, etc) and feel more accomplished.
Learning programming like learning math is not very good. Having a goal project makes it better i think.
I'm happy to talk life strategy w.r.t. managing full time development with ADHD, if that's something you are interested in. I've got pretty severe ADHD, and in a former job worked on some of the most kakfaesque software that humanity has ever created (corp. financial admin. platform for one of the big four banks), and I've had to learn the hard way, multiple times, that grit and willpower alone are a failing strategy.
One thing I can recommend in general though if you haven't sworn off programming yet, is to learn JS. I know @Adys mentioned it, and there's good reason for it. It's just about the most flexible language out there when it comes to use cases, but it also allows you to write in a purely functional way, and almost completely isolate your complexity, while having more tools and libraries at your disposal than any other language could hope to provide. I not a big "one language is better than another" type, but I think it fits your use case.