I feel like I'm in the "Desert of Despair" and I'm not quite sure where to go. So far I'm self-taught in C, C++, Python, Lisp (a few of them) and some shell stuff. I have the basic syntax nailed in all of those. I don't know any of them well enough to be able to write simple programs without constantly looking up StackOverflow articles or reading references. I haven't even touched GUI programming.
It doesn't help that I always try and obsessively look for the "best" or "proper" way to do something. I know this is a good virtue to have but I also feel like it also gets in the way of getting things done.
It's such a weird place. On one hand I feel like I know a lot more than before but if any of my friends ever mention how "good" I am at coding I am quick to correct them by saying I'm really not. I could really do with some sense of direction, but I suppose that's on my shoulders since nobody else can decide for me what sort of developer I ought to be. I'm not sure what to focus on.
I initially got interested in coding just because of how interesting and fun it was in itself. I want to continue to pursue it because I feel like it's the first thing I'm really good at. I always got mediocre grades in school, I didn't learn any instruments or have any hobbies, then I started learning how to code and it just clicked with me and for the first time in my life I had an idea of what I might do for a living.
Sorry if that strayed a little too far from discussing the article, I wanted to try and write my thoughts down.
If you code at a professional level, you are likely of above average intelligence. You are able to efficiently reason about complex systems to some degree. Those two skills alone qualify you for many jobs, especially when you’re willing to learn. What those are depends entirely on your interests and further skills.
Often, looking into a completely different direction is helpful. Ask yourself what you enjoy doing, apart from programming and computers. It could be cooking, gardening, talking to people, writing, teaching, whatever. Something that is not stressful for you to do. Something your friends maybe told you at one time or the other you’re good at without having to put great effort in it. Something that doesn’t drain you if you’re doing it for extended periods of time. Often that’s where you can find what’s truly important to you and your inherent skills are. Go from there. Let yourself be inspired. Those could be technical or entirely apart from what you’re currently doing.
When you start looking into unconventional jobs, you’ll be astonished what kind of work exists within reach.
It often just looks like it isn’t because you’d have to leave your comfort zone to pursue them. That’s the issue with comfort zones: even if you feel like shit, it’s a familiar feeling. As humans, we tend to go with what we know, even if it leads to constantly feeling terrible. This way, we can at least make sense of what surrounds us. Going into the unknown is scary, sometimes it feels like mortal danger.
If you can afford it, take a sabbatical to clear your head. If you have a partner, talk to them about what you’re going through.
Hard to offer any kind of constructive advice without some indication of your personality or what you do enjoy.
I'm skeptical of the idea that you're not smart enough. In my experience, becoming a good programmer requires some relatively low-threshold capacity for logical thinking combined with a tenacity for debugging and understanding how things work. Being a genius who picks up math and CS concepts quickly is far from required.
If you struggle with patterns and applications but are bored by simple CRUD apps then it may be the case that you just don't like programming that much. That would certainly make it very difficult to learn and retain anything.
Overall though, you sound more depressed than anything. If that is the case then it colors all perception of what you enjoy or don't enjoy, and probably should be addressed directly before making any major career decisions.
I spent 20+ years as a professional software developer, yet there were always days where I felt like I didn't know anything. That's part of the business - there's always something to learn and someone with more experience in some niche.
Separate from that - it sounds like you need to decide whether this is really something you want to do professionally. Technology is a vast field, so even if you decide you don't feel good about being a software developer / programmer, that's not to say there isn't a place for you.
Finally, I'm reading between the lines that you are primarily self-taught. Perhaps what's really needed for you to reach a level of comfort is simply more education?
I have been dealing with similar issues. Never been successful at anything I have done and I began programming later than you did, with C. I did run after a lot of tech, new toys etc. Even though it is nice and many times important to know the new and emerging stuff, I accepted that it overwhelmed me and I have to narrow down a bit. So, I started learning a (only one) new language and chose Python because it seemed easier to focus of the task at hand with Python and not get drowned in gory details of the tool.
I figured that I will work on what I like rather than what is or will be 'cool' after 4 years of this struggle. There were humanitarian projects I had thought of as a junior in college that never saw the light of day. I have begun those. It makes me happy to work on things that I want to work on, rather than what can become a great business. At least that's a start. I have started thinking in terms of how can I deliver a great product to my users from the idea I have and love.
Don't get me wrong, I am still learning. I have to make a mental note every hour of the day to not compare, not get distracted. My physical therapist told me that one has to make a mental note of their posture. That is termed as "body mechanics". I think that that goes with our minds too. You have to keep training yourself to stay positive by little tricks like avoiding comparison, recognizing what you want to do and accepting reality etc.
Well, those alternate states of depression and euphoria sound like bipolar disorder, so it's probably a good idea to continue with the therapist.
Copy pasting code is a start, as long as you understand the code, but it's good that you moved past that. You're still young, so if you want to be a programmer you're in a good position to improve. You can read some books, learn best practices, design patterns, depending on your programming language of choice studying for a certification will give a solid foundation and confidence. Then you can build something with everything you've learned.
I'm sure if you ask anyone on this site they'll tell you they've failed at lots of things -- some programming related, and some not. The good news is that you're only 30, and you have plenty more time to both succeed and fail at lots of other things.
I suggest you try to disassociate your quest to learn to program from your dissatisfaction with your current job. Maybe you can learn enough about software development to change careers but you're putting an immense amount of pressure on yourself to learn, which may make it harder.
Now, for programming - I suggest you consider working through some online tutorials. Pick a free tutorial on the web or in a book which is a beginner lesson. Start with something complex enough to feel like you've achieved something, but easy enough where you won't give up. If you get stuck - ask questions on StackOverflow.com or another online support forum. If you know someone who can program, ask them for their help. The early days of learning to program are very easy to get bogged down in the tools you need to configure to get things working, or the syntax nuances where an errant symbol leave what you're working on entirely broken. This is entirely normal, and while it's frustrating -- when you eventually figure out what's wrong, you're actually learning to program.
Good luck! And if you do feel depressed, please consider talking to a professional qualified to help you navigate those feelings. Work can be challenging, no matter what you're doing, but taking the initiative to ask for help from others should be commended.
Well that's the thing. For a really long time I completely poured myself into programming. Like, my entire teenage years and most of my 20s. Now I am about to turn 27 and I don't really have many friends. I have never been in a serious romantic relationship. I have never left the country. I haven't really made much of an attempt at making money, so I am pretty much living check-to-check at a startup that I don't really care about anymore, but can't leave because I can't stand disappointing anyone. So I am kinda stuck. At this point, I think the only thing I am good at is just losing hours in code.
Started coding in 1987. Have no idea what I’m doing. Regularly panic about how little I must know. Can’t figure out if people giving advice and writing books are genuinely a lot better than me, or just more confident.
It was no fun when I REALLY learned how to program, it was pure panic. I was half way through a CS degree and got a summer job, and I just had get it done no matter what so I beat my head against the problems and solved them. After that, all the theory that I'd been learning started to make sense, and now I have a more nuanced approach to coding, and a successful career.
Just trying to say, learning is not always fun. Get a job doing something you don't know how to do. Maybe that will motivate you. :)
I have to admit I'm rather relieved reading your post because at least I'm not the only one who is rapidly developing an inferiority complex here ;)
For my part, I'm 28 with a Philosophy degree and currently in a junior role at a late stage startup. I'm not a developer, more like "guy who hacks together Perl and queries MySQL all day".
So, you at least have an edge on me - for what little that's worth! In fact, stepping back to take stock of what you do in fact have might help. I realize it's not much consolation to know you're neither homeless, politically oppressed or living in a war zone - but keeping that perspective has helped me through some moments of self-doubt and pity.
I totally know what you're saying about having no excuses with all the free and accessible information out there. Believe it or not, I find the plethora of choice a little crippling in its own way. When I spend 5 weeks debating which language to learn, and 5 days actually trying to learn a language - there's clearly something wrong!
I don't know where you are in your life, but it might be worth considering a bold leap. I've seen a few programming boot camps promoted here on HN - one in the Bay Area and the other in Chicago. If you're between jobs, this might be something to consider.
I know how incredibly difficult it is to find the time and motivation to work on a side project. In fact, if you're looking for a learning partner - I'd certainly welcome it. I'm currenly interested in the following : Python, Perl, Django, Dancer, Ruby, Groovy, Rails/Grails, JS, coffeescript, design principles, NoSQL, Big Data, Hadoop. I can be reached @ esoteric.doktrin at gmail.
I feel hopeless and stuck. I try learning a language get frustrated then move onto a new language over and over again getting tough and bored because it's hard and I can't build anything useful.
Ontop of all this I'm broke no money and I'm 25. I want to make something of myself I want a career in Web development but have no mentor or guidance on where to start. I tried applying for bootcamp but can't do the coding challenges.
What do I do? I'm tired of minimum wage jobs. I want decent money.
I was a bit like you... struggled at university, failed plenty of topics (some twice) because it never "clicked". I fluked a job at a small company and turns out I'm pretty decent with people & understanding what people want/need. I got by with my code, but it was elementary if I'm honest with myself.
For the past 14 years I've run my own web dev company but I understood my limitations and hired people who are actually good at coding and I've stuck to what I'm good at.
From what you write, there doesn't appear to be a passion for coding - avoiding assignments & now struggling with core constructs point to that. But something at some point got you into this field - perhaps there's something to the side that might suit your skills/passion more? Testing, QA, project management, client management, business analysis... there's lots of roles that benefit of understanding programming concepts that don't rely on you actually being a gun programmer.
I'm 37 , unemployed and took up 'coding' as a means to pull myself out of what by U.S. standards is poverty. No healthcare and I live basically in a hole in the wall of this ladies trailer. I don't know how you can become 'better' but if you ever want advice for dealing with sever hopelessness I can help. First be grateful that you hierarchy of needs are met. Presumably you have health insurance thus if you have say, a rotting tooth in the back of your face like I do...you could probably get it checked out before it infects the rest of your system. After being grateful, the next thing to do is realize that nobody gives a flying fuck what you do and the world is cold. This will allow you to truly realize the opportunities you have as your dispose and put your gratitude on overdrive when any anomalies of concern do seem to present themselves. Next, exploit every resource you have to 'get better'. The computational power of a mac mini is actually quite a lot in the context of the computer market over the last 20 years. Don't look at as programming, look at it as turning nothing into something. If you want to 'get better' first find out exactly what you are not good at! Are you a great programmer but are shitty at being "creative"? Are you creative but can't seem to express it through code as much as you would like? Are you bad at reading other peoples code? etc etc etc. Blatant honesty about what exactly your weak points are can force you to zero in an fix it but first you might have to conduct a self-imposed research project to even figure this info out. Anyway, don't take this post too seriously, I'm a nice guy really. I just felt being a bit brash and off the cuff for a moment. I'm sure you'll continue to achieve. bye bye
- ... (I) find that my desire is driven by fear ...
The first is a good feeling :-) Too many programmers don't have this realisation. Embrace it!
The second is something that worries me slightly. All of the programmers that I know who are driven by fear let it chase them into failure. Getting the "joy of tinkering back" is what you need. Forget the "ever changing rules". Chase what you love and forget about the rest.
Now for some specific advice. You are at a level now where you need to integrate your knowledge, not learn bits and pieces. Stop everything else you are doing and start a major project that will occupy your time for the next year or so. It doesn't matter what it is, only that it is something you love. This will help you more than anything else.
I have a passion for coding, but I don't think I'm very good at it. It's not fun to do anything if every single step results in getting massively stuck especially when those steps are considered prerequisites to being competent. At that point, it just seems like a person is barking up the wrong tree.
I got into programming for the money and because I like problem solving and concrete results. I honestly think it would be perfect match if I had +10 IQ points. As for your suggestion, I wouldn't know where to begin looking for things "on the side" as you put it.
TLDR: There are still many unsolved problems. You have to go beyond your mental comfort zone and start exploring your "unknown unknowns". I jumped out of my mental well, found my "unknown unknowns", realized that there's an ocean of problems out there, and am now swimming in it very happily!
Long version:
Same situation as you 6 years ago. Quit "safe", salaried job to work on freelance projects. But eventually realized that most freelance projects too are the CRUD type. Quit that too.
Then I found that fields like computer vision, speech recognition, space exploration and embedded systems still have many many unsolved problems, and require proficiency in theoretical subjects like linear algebra and algorithms, hands on challenges involving electronics and mechanical engineering, and practical software development problems like performance optimization. Every time I learn something in these fields, my mind bursts with new ideas and makes me explore and do more. It's an expanding spiral of unsolved problems. I don't think one lifetime is enough to solve my own ideas, let alone rest of the world's. It's a complete turnaround from how I felt 6 years ago.
Now I enjoy exploring and building my own projects and ideas, and have redeveloped my love for all kinds of programming - low level systems programming , desktop app programming, mobile app programming, even web programming.
I also learnt electronics on my own and thoroughly enjoy my hobby electronics projects.
Perhaps try writing some code and see if you like it before making a choice? Its viable if you are good but you will only be good if you actually enjoy the craft enough to continually practice.
It doesn't help that I always try and obsessively look for the "best" or "proper" way to do something. I know this is a good virtue to have but I also feel like it also gets in the way of getting things done.
It's such a weird place. On one hand I feel like I know a lot more than before but if any of my friends ever mention how "good" I am at coding I am quick to correct them by saying I'm really not. I could really do with some sense of direction, but I suppose that's on my shoulders since nobody else can decide for me what sort of developer I ought to be. I'm not sure what to focus on.
I initially got interested in coding just because of how interesting and fun it was in itself. I want to continue to pursue it because I feel like it's the first thing I'm really good at. I always got mediocre grades in school, I didn't learn any instruments or have any hobbies, then I started learning how to code and it just clicked with me and for the first time in my life I had an idea of what I might do for a living.
Sorry if that strayed a little too far from discussing the article, I wanted to try and write my thoughts down.
reply