Not sure how I feel about (1) since that's the maximum most people can afford to put in (they have to pay rent, etc) and I'm ambivalent about telling them "your max effort isn't enough. You have to go all in". I agree with the premise but I'm really not sure how practical it is in practice.
I strongly disagree with
1) Nights, weekends are bad
too.
Actually, I think that sometimes it is the best time to learn new skills or master old ones. And, arguably, it is the way how most of people start their adventure with coding (and probably most of good programmers).
The thing is how _serious_ you can be. If "nights and weekends" is a synonym of 2nd, 3rd or nth priority - then in may be bad. Otherwise - why not?
I understand what you're saying. I guess it's better to tell people to try and put themselves in a place where they can code full time. For me it was an internship, for others it may be a trial week or month in a different part of their current job
Did you get an internship without being in school for a CS degree?
I'm at a point somewhere between not knowing how to code and not being skilled/experienced enough for a jr developer position, and would work for next to nothing, but every internship I see requires that you be in pursuit of a BS in CS.
Just start talking to people. Forget job descriptions. Send emails to people you would be interested in working with. Let them know what your skills and goals are. A few years ago I was exactly where you are now. I had a liberal arts degree, a bit of coding experience but skills that weren't sufficient for a junior dev position. I got some interviews just hustling and chatting with anyone I could get a hold of, and eventually I got a dev internship at a startup. I've been coding fulltime ever since.
Above all else don't let yourself get discouraged. There will probably be a dozen no's and/or people who just don't respond to your query but the person that gives you that first opportunity is probably the kind of person you want to be working with anyway.
Plenty of startups will take you on as an intern with little to no experience. If you put your reputation on the line and give them a few months of your time to figure it out and build something they need, they might hire you full time as a junior engineer. Shoot me an email if you'd like to talk more about this zack@zackshapiro dot com
What about someone who has a job where they code full-time (or close to it) but they don't enjoy what they're coding or they don't feel like they're getting better in their current position? Sometimes you're not in a position where you can leave at the moment and find a better coding position or you're not yet good enough at coding to get a job where you actually learn. It's incredibly hard to code for 30-40 hours a week and then try to do it for 5-10 hours a week extra after work to get better.
I'm worn out after 40 hours of work, so creating my own projects and/or working on open source projects is difficult. However, without doing that, I don't feel that I can move on to a more challenging development position because I have no code I can show.
I totally understand the feeling. I'm currently in a low pay full time coding job without benefits. I'm in no financial situation to consider quitting (I wouldn't last a month). Only doing what I do at work advances my skillset little, so I've been forced to do extra on nights and weekends. It is never easy to coerce yourself into working extra but I've found a couple of tactics that have helped immensely.
1. Do it for money. I find working for someone else motivates me pretty well. I wanted to learn how to use JS frameworks like ember or angular so I've done a couple of simple restaurant menu CMS systems for local businesses. I did them for peanuts on the condition that I didn't have hard deadlines. Even though I have the luxury of taking as much time as I feel like, I feel some obligation to anyone paying me for work. I've also found that it effectively narrows the focus of the work in a way that might be more challenging in a more free form project. It's a lot harder for me to not start including "cool" but often-useless features in my own projects while I tend to keep my work for others limited to what was agreed upon originally.
2. My other method is to set myself up with two or three productive activities and force myself to rotate between them. I might choose learning German vocabulary, refreshing math online and writing a simple app in a new language for a night and make an effort to always be doing one of those tasks. I try to look at this time as relaxation and free time itself, so I try to set few expectations. When I get bored/frustrated, instead of turning on the TV or opening the news, I switch to the next activity and repeat until its time for bed. You can move forward on unrelated hobbies this way, something that frustrated me when I first learned how to code and overdid the focus and attention I gave it, to the point of severe frustration.
Lastly, try to relax and take it easy. If you put yourself through Hell every night you'll quit and get nowhere. Take nights off when needed and get to bed at a decent hour. You won't see immediate returns so any strategy has to be looking toward the long haul.
What about working on your projects before work. Make the job that you're not interested suffer a little bit rather than the project that you're passionate about?
Can you switch jobs? There are so many companies that need even just a passable engineer. If you're not growing and learning in your current role, maybe it's time to find a new one?
Not sure how I feel about (1) since that's the maximum most people can afford to put in (they have to pay rent, etc) and I'm ambivalent about telling them "your max effort isn't enough. You have to go all in". I agree with the premise but I'm really not sure how practical it is in practice.
That being said, love the rest of the post.