Having a github full of side projects is helpful when pursuing a job, but I find it difficult to go hard at work and put 100% in and then come home and work on side projects. Usually, I'd rather spend time with friends and family.
This seems to disqualify me from a lot of job postings.
Then pursue it with a passion.
"I find it difficult to go hard at work and put 100% in and then come home and work on side projects."
Then don't.
"Usually, I'd rather spend time with friends and family."
Then do.
"This seems to disqualify me from a lot of job postings."
If getting the job requires a large time commitment to side-projects, then they're not side-projects. If you're only doing something to count towards some job or other, then that is a cost of that job. If you work X hours per week in an office and Y hours a week at home on side-projects you don't want to do, then you're working an (X+Y) hour week. If that's too much, then screw the job because it's clearly not worth it.
With that said, my hobby is programming. I have a few programming side-projects, but they exist for me because I really enjoy them. When I'm not programming I'm usually reading CompSci papers. That's what I get off on. The moment any of this becomes a chore, I leave it to rot. There are a number of dead projects in my wake, but they fulfilled their purpose; I enjoyed creating them and learned from the experience.
There is no single template to improving as a programmer while staying both mentally and physically healthy.
Define your goals and align your life to meet them; do NOT align your life to meet goals defined by others.
The fact of the matter is that I have a job where I work on different things and am encouraged to learn. It's not a dream job, I don't "love" what I do, but I like it. The fact of the matter when I get home from my 8 (ok, often 7) hour day, I really don't feel like programming anymore. I feel like curling up on the couch with my girlfriend and watching a movie. Or hanging out with friends, or going for a motorcycle ride. You know, those things that keep you from burning out?
So, at this point I've decided that if someone doesn't want to hire me because my Github profile isn't cool enough, well OK. That tells me that the culture there values work over work/life balance, and I don't want to work there anyway.
I work on side projects when I have to urge to, and rarely does anything worthwhile to anyone but me come out of it. But I'm done feeling guilty about it.
I was able to spend time with her, while also building something that lead to my first real gig as a developer.
One of the best ways to get to know your friends and family at a really close level is by working with them on a project that you both care about.
Pro tip: many people work on side-projects for exactly those reasons. They just cut out the middle man (money).
If you don't want to do it fine but calling it insane seems a little overboard. People have hobbies. They do them outside of work. Some one might work on websites at work but have a hobby of making 3d graphics programs at home, or arduino projects, or games, or whatever.
Sure if you don't personally find it fun then don't do it but I guess I read into your message you couldn't see how people could do side projects at home. How are those any different than any other hobbies?
My grandfather was chief of maintenance at some factory meaning he worked with tools all day long fixing machines. He'd then come home and use more tools to make things. It doesn't seem that out of the ordinary.
Many organizations hire programmers as technical roles, but they are generally creatives. A lot of them are night owls, who ebb and flow between long productive stints and proverbial 'writers block'.
Many of the best developers I know have a creative desire and just writing code for 10 hours a day doesn't satiate it.
I think we need to start treating developers as creatives and giving them the processes they need to be successful and not be stressed, overworked, stretched thin, etc.
The business side has been entrusted with a lot of money, its own or someone else's. Success has already been achieved. As such, it approaches things from a mindset of risk reduction. And the absolute worst thing possible, from a risk-reduction standpoint, is creative work. It's unpredictable, you don't know when you've got an end product, and it involves dealing with workers who have egos, who often work on things you don't understand. It is unmanageable, which obviously troubles those whose job it is to manage.
The most common approach, so far, has been to ignore this scary possibility: Keep projects as low-level as possible, spread responsibility far and wide (to reduce risk, not for optimal efficiency), and keep everyone wearing business casual.
Developers are (often) in the weird position of Ozzy Osbourne and other rock stars: potheads whose potheadery became valuable. What the developers know, however, is that businesses don't really want what they have to offer. They don't want to see the full effect of a bad trip. For every Bieber who turns crappy branding to gold in the teen girl demographic, there's Joe Concept Artist who's experimenting with some new grooves, but will never catch on. For every Zuckerberg who can bang out a social network in PHP, there's some dedicated open-source hacker whose dream is to make Lisp accessible to the common man.
And yet: the money guys are offering money. Just swallow your pride, play "Stairway to Heaven"[1] at the wedding, and pretend you've never had crazy eyes when talking about homoiconicity, and the rent will be paid.
[1]Nothing against the song.
But, I have a bit of a different philosophy.
I think that if you really love something, you'll not only do it for free, but pay to be able to do it.
There are some people who love coding so much that you can't get them to stop. I am not one of those people. I love it enough that I can stand being at my job for 40 hours a week, and I enjoy the time I spend there.
What I really love is Rock & Roll. When I was in high school, I footed the bill for all the tickets my band couldn't sell just for the chance to play on the same stage in Hollywood that a bunch of my idols had played on.
Now I play in a band that plays 90's prog metal covers, something that someone from an 80s/90s pop cover band said no one would ever care about and that we could never get paid for.
He was wrong. People actually love us because instead of just settling for doing what paid, we did what we love, and it just so happens that there was a need for what we love. We're doing our first paid gig in a few weeks.
The problem for programmers are that their talent is extremely difficult to evaluate. The best programmers will build a system that avoided so many problems which management will never even have a clue could have happened. Meanwhile, a "rock star" might come in and bang out a prototype that looks so slick and is complete in such a short time that management thinks he is god's gift to programming even if under the hood the code is unintelligible and unmaintainable; when phase two modifications are a disaster, the blame could fall to the new programmer who is objectively much better but is saddled with a terrible technical debt that no one knew about.
It's a classic market for lemons. So management is constantly worried that they have lemons. Giving space for creativity would be much more of a possibility if it was easier to identify the programmers who deserved it.
But pretend we do. And when everything goes contrary to the expected we make sure that blame is equally distributed so that no party has a right to complain.
How does she go about structuring it to take this into account?
What are things which are inherently a problem and what things creating problems because it is business as usual.
Also: T shaped people: http://zurb.com/article/11/the-t-in-team
We need to distinguish between creators and people who just implement, because there is a lot of work that doesn't involve new ideas. Complicating this is the fuzziness between the titles 'engineer' and 'programmer' and 'developer'.
Much of this just seems like growing pains for a field that's relatively new to humanity.
To paraphrase, many of the best X (X being developers, managers, accountants, salesmen etc.) have a creative desire and just doing their job for 10 hours a day doesn't satiate it. That's why they indulge in create activities in their free time.
If you're just churning out cookie cutter patterns you need to get a new job or side project and rediscover the magic.
I suppose that you could leave the creativity in engineering to other people (designers, product managers, etc), but my experience has been that you end up a far better product when you engage developers early on in the brainstorming and product planning process and let them help decide what the product should be.
I hate being treated as a code monkey.
Show me a world-class writer who doesn't obsess about his writing with every waking moment.
Show me a master painter who doesn't paint every single chance she gets.
And show me a music prodigy who hasn't slogged through 15 years of mind-numbing practice every single day.
Only then will I believe that these artists are just getting more "efficient with their tools".
In creative fields, it's even more important that you put in a huge volume of work. That's the only way to connect the dots and create something truly unique.
http://dailyroutines.typepad.com/daily_routines/2007/07/haru...
I could give you more examples of writers, Joyce Carol Oates , Michael Crichton but same thing basically. Also note that Murakami didn't start writing until 29 and loafed around at the public library chill in' and reading' and at Japanese jazz cafes. As far as I'm concerned, I'm a prodigy and workaholic at 27 for starting so early.
Also in regards to music, others can comment as I'm not an expert. But I've wasted 2 years of my life doodling around scales, ear training and music theory focusing on speed, dexterity and memorization, attempting to learn how to improvise like the greats. That I never taken the time to listen to the groove of the great pieces, sounds wonky but I decided that if I never can become a good musician, at least I could slow down and learn to enjoy the music as opposed to the idea. And I enjoy listening and playing much more now and don't give two-shits about how my solo's sound and just keep playing. And in the small moments of self-delusion inspired by bluesy turns, my own playing gives my deluded mind a self-congratulatory chill to the spine.
And in regards to programming, let's be real. CRUD or iOS apps are not going to change the world. We are like the capitalist work-bees, shoveling digital snow around like escorts shoveling sensual snow. If we are really secure enough to want to dive into our craft, then learn Linux kernel, compilers, advanced algorithms and contribute to the bottom of the stack for a change instead of fluffing snow at the top.
<sarcasm> Picasso really should have stopped faffing about with his silly brushes and gone to work in a canvas factory instead. The world really didn't need another bloody painter. </sarcasm>
However, most guitarists get paid to provide pleasant background music at weddings. Making money writing and playing Purple Haze is a (boom-and-bust, drug-induced) outlier. Master artists aren't employees of Paint-o-Corp who get paid salary in exchange for the rights to their creative output (even if it's side-projects).
If we want a sustainable population of healthy, balanced engineers, we need to adjust our expectations for the typical coder.
Minimum 5 years experience in Rust, Go and ClojureScript.
Slogging through 15 years of practice every day is a technical endeavor. If you need to learn how to do something or to master a technical skill, then yes, volume of work will get you there. Code is a tool that is used to create, and I think the quote you selected just serves to underline the difference between learning how to be an effective engineer vs learning how to become an effective technician.
Edit: constant practice is definitely important, but relentlessly working is not.
Can you really be called a prodigy if you've been practicing every day for 15 years?
When programmers get beyond a critical daily/weekly threshold, putting in more hours hurts more than it helps. The brain gets tired of solving problems, and when that happens, pushing yourself further is not the answer. The answer is to do something else, especially something involving physical activity, to allow your brain time to recover.
I believe that many programmers fundamentally do not understand this concept, thus they drive themselves crazy trying to push harder and harder. Yes, you may write more lines of code that way, but at what cost?
That said, I have no sympathy for a company that expects to hire a Yo-Yo Ma for the salary of an amateur band member.
[1] http://www.npr.org/2012/10/19/123385170/eubie-blake-on-piano...
OP could be wired to be very productive if he doesn't have side projects and instead focuses on hobbies.
yangez's examples (parent of your comment) could be wired to only be very productive if they do nothing but become immersed in their work.
What if some of us can only thrive with imbalance by nature?
> Show me a master painter who doesn't paint every single chance she gets.
Well, there's Dante Gabriel Rosetti, who decided one day to give up painting and become a poet. While he is remembered more for his paintings than poetry, his poetry carries with it the essence and soul of his paintings as well as the imagery. He decided to paint with words. I don't think he obsessed about writing all the time. As he put it, though, "A sonnet is a moment's monument."[1]
This gets at what I think is an important point though. All of these creative endeavors require real-world knowledge. Hemmingway went out on adventures. For Tolkein, writing fiction was not his day job (teaching about medieval literature and linguistics, however, was). You can see their respective works that the live of the writer and the other obsessions beyond writing are what make the author.
Similarly with programming, yes, it is a technical endeavor and yes it is a creative one. However just like writing the great works of fiction, these don't come out of nothing. They require a context grounded in other knowledge and experience.
[1] http://web.ics.purdue.edu/~felluga/medievalism/areading.html Note that this was the introductory sonnet to "The House of Life" which chronicals Rosetti falling in love, getting married, coping with his wife's death, and finally finding solace in his religious worldview. The poem, despite its abstract nature is full of classical Greek imagery and something one could probably write volumes about. At the same time, it is an exposition on why he wrote poetry, and it provides the framework for fully understanding the hundred or so sonnets in The House of Life in that way. There are love sonnets, and sonnets which, as he puts it "in Charon's palm it pays the toll to Death" (i.e. allowing the dead and the living to begin to move on).
More than putting in a huge volume of work, you have to work hard and deliberately at improving every day. That doesn't take (and can't be sustained) for more than a few hours a day, and all other activity is nowhere near as important for development.
At the same time, to create something great you do have to stop practicing and go back to what you know best and what inspires you.
I think you'll find most music prodigies spend hours lost in playing beautiful music. Very different from mind-numbing.
If I ask for decent private office and 3x32" screens I just get blank faces and bullshit excuses. Since I started working for myself remotely, I can sustain 10 hours of uninterrupted concentration. Before in office it was more like 30 minutes of concentration per day.
I use screens in portrait mode, so it fits more code.
I usually keep left screen for navigation (file managers, terminals), center screen for IDE and right for documentation, notes and communication. I also use virtual desktops to switch window layout for various tasks. For example I consume twitter and rss feeds in separate configuration.
I am not saying everyone would benefit from this setup. I analyze large heap dumps and do lot of concurrent debugging. But quiet office, decent screen and chair should be a starter for any self respecting programmer.
Perfection in the big projects doesn't matter. The world is full of crap software. Perfection in the little pieces however really matters, and this makes it possible to build better software.
I still have stressful days, usually involving bug reports and unhappy users. However, for the most part that realization meant that rather than the stress being an ongoing thing, sometimes lasting days or weeks, it became an occasional thing usually lasting only hours, and the sense of beauty in seeing successful things come together has become more common. That doesn't mean you spend time chasing perfection on every little detail because a lot of things are legitimate tradeoffs and you won't know some deficiencies until it is actually used.
To me that is craftsmanship.
So, when I was growing up, where the family had to drive 50 miles to visit other Asians, I started to realize there was a pattern to how bumf#cks would come circling in for what was in their minds the justified pleasure of humiliating a non-white person. Most people were decent, but I and my family members stuck out.
I notice the same sort of circling at some programmer meet-ups here in the bay area, though I don't think it's my race that prompts it. Programmers make good money, are highly sought after, and in many companies are positively coddled. Just about every group that found itself in such a position has developed some small sub population of arrogant, entitled jerks. In retrospect, I may have been guilty of being a little bit of that myself.
One might like to think that good programmers are also good at thinking rationally in general. That's not how it works. Being good at programming just trains us to think rationally in a very specific context. The rest of the time, we're primates vying for a place in the social hierarchy. The best we can hope for are social structures and patterns that co-opt such tendencies for the uncovering of truth and the good of the group. Seeking social contexts that humanely succeed at this should underly one's seeking for a place of work.
It's hard to do this, and most of the time, people find a situation that achieves group cohesion and effectiveness through an "us vs them" dynamic.
Yeah, like writers, painters and musicians aren't also crazy...
I am feeling like this (burnout/mental sickness of programmers) is becoming a successful theme on HN lately. Many-many posts are popping up to front page.
Not like it's a bad thing, being myself a victim it feels good to read experience of fellow coders who has seen what I am about to see or how to avoid seeing it, but still, it is becoming a theme. I am imagining hordes of posts on this topic coming up. Or may be we already have 'em, just the good ones are popping up to front page.
There are actually more than one pattern emerging. I think I gotta hint of for writing posts more likely to hit front page.
However in the long run it has been and always will be a means to an end.
I think the advice to look afield is good. Gerald Sussman seems to agree as he often looks to biology for new ideas. Ideas are not born in a vacuum after all. They need to form hunches and meet other hunches and be given time to cook. That's a number of metaphors... but I think you get where I'm going with this. I hope.
Spend time learning the fundamentals for sure but branch out as soon as you can.
What we do would be highly dimensional (i.e. specialized) if we weren't a colonized people. But we'd be able to come to peace with it. We wouldn't fret others knowing more than us (which happens to everyone) if we weren't constantly watching our backs. We are constantly meeting people who know more about certain topics than we do (and, reciprocally, so are they). It wouldn't be an issue if we had more career and income security.
It's not something about programming that makes people sick. It's not an intrinsically stressful activity. It's far less demanding (speaking of the work itself, not context and social dynamics) than over 75% of paid labor. What's hurting us is that we're a lost, conquered, and scatterd tribe. We think we're elite specialists, but we've done such an obnoxiously bad job of fighting for ourselves and our own value as to let ourselves be typecast to business subordinates, and it's horrible.
It would actually be a win for the more progressive business people (as well as us) if we could get ourselves out of this. Would you want to be operated on by a doctor with the pay and social status of an average programmer? Of course not. Well, similarly, we'd make better products if we got ourselves out of the "business subordinate" trap, and pretty much everyone would win.
I don't care about the social status of my medical providers, I care about their competence.
The last few times I've been to a clinic, I've been seen by nurse practitioners instead of MDs. They've been very capable, and noticeably less expensive than an MD visit. Lots of the rules around medical practice are nothing more than the AMA acting as a guild system to artificially restrict supply and inflate salaries.