Don’t work unpaid overtime.
If you’re going to moonlight, you’re probably going to be working about 65 hours per week. Normal people can sustain 60-65 hours if they’re enjoying the work, but that’s about the limit for long-term exertion. There isn’t much slack at that point. Any unappreciated or uncompensated grunt work comes at the expense of something else. I’m not saying that you should clock out of your day job at 5 p.m. on the dot, but don’t let unreasonable deadlines or face time (management problems) cut in to your side projects. Perhaps surprisingly, you’ll get more respect from management (in many companies) that way. Saying “I have other commitments” often gets you out of the long hours grind, and the “get ‘er done” downside will be shifted to people who value their time less.
Build on your own time, learn on the clock when you can.
Don’t write production code for side projects on your work laptop or during working hours. Even if the work has nothing to do with your day job, you can very easily get screwed. Ownership disputes are costly, demoralizing, and generally best avoided. On the other hand, nothing prevents you from learning and researching at your day job during slow periods. You can even build prototype code. But anything you actually put in to production (e.g. an iOS app) has to be built on your own resources and time. You don’t want to mess this one up; most lawyers who are involved with tech have seen at least one promising project or startup get derailed by an ownership issue.
If you’re constantly available to do more work than you need to do, you’ll become a “go-to” guy. That’s good if people are “going to” you with work you enjoy and that advances your career, but it’s very common that people get loaded up with grunt work because they’ve developed a reputation for never saying “no.” That’s how you end up overcommitting at your day job and being too drained to do anything else. Instead, you should follow direct orders from your boss and do the work that directly benefits your career, but avoid any other kind of “helping out” that is orthogonal to your goals. If you don’t value your time, no one else will.
Always appear busy at work.
You can have a surprising amount of time for self-directed learning at your day job if you always look like you’re busy. Long water-cooler chats will attract grunt work. If you’re reading iOS development or machine learning (side project work) on your computer — i.e. don’t read a book at work if you can read the same material on your machine — it looks like regular work and you’ll be better off than if you’re seen flying a remote-control helicopter around the office. At work, there are fighter pilots and there’s “the pool.” If you always seem busy, you’re a fighter pilot and will be given the best “missions” and left alone when there isn’t anything interesting to do. If you goof off, you’ll be seen as part of the general “resource pool” with the others, and you’re more likely to be assigned grunt work.
Know your circadian rhythm.
If you’re a morning person, get up early and get 3 hours of work on your side projects before going to work. If you’re a night owl, then you’re best off doing the side project in the evening. Some amount of self-hacking (melatonin, caffeine) may be in order. When you’re working 65 hours a week, you need regularity. You’ll also be best to keep the same sleep schedule on weekends as weekdays, because you need for your body to cleanly separate the sleeping and wakeful states.
You need at least half an hour of physical activity per day. I’d recommend more: 45+ minutes of medium- or high-intensity exercise, and at least half an hour walking, since that clears the mind and helps you come up with the best ideas.
Make the side project work a habit.
Some evenings, you’re going to feel drained. You won’t want to work. Those are the times when you must get something done, because that’s when habits are made or broken. Observe the 45-minute rule. Commit to 45 minutes of focused and useful work (and quit, if you don’t feel like going further). You may catch a second wind; if you don’t, at least you accomplished some forward movement. If you don’t feel up to writing production code, then don’t. Refactor existing code, call potential clients, or do something else that won’t demand the parts of the brain that feel drained, but do something every day, at least 6 days a week. Sometimes, the times when you feel stupid are great for just looking at existing code, because if you can’t tell what it does when you’re stupid, then put a comment there reminding your future, smarter, self to refactor it.
Carry a book and a notepad at all times.
You’re going to have to become very efficient with time. If you’re waiting for 15 minutes for the barber, you should have something to do. It’s OK if that “something” is just thinking or zoning out (everyone needs to take breaks) but you always want to be prepared for the spirit to move you.
This question originally appeared on Quora: What are some good ways for a programmer to balance a day job and side projects?