Life: deciding that I wanted to take care of my body.
Programming: deciding that I wanted to master 1 new tool and a language every year. Last year was Python/Emacs and this year it is Rust/DTrace.
Programming: learning by doing instead of by reading. I started learning Rails when I wanted to build PicDigest and the mistakes I've made have helped me learn faster on a broader foundation.
Kudos to you for your decision. A book was written about marriage, long term monogamy, and (at least for me) showed that maybe sex shouldn't be this huge deal we currently make it out to be. It's called Sex at Dawn by Christopher Ryan and Cacilda Jetha.
You're most likely fighting your genes (or perhaps you're a mutant): maybe you'll win and maybe you won't. Here the _you_ I refer to here is that part which believes it has free will and can override the other (genetic) part.
So "fighting the genes" is sometimes not bad at all but I agree that most of the time it may be.
Apparently some other people think that they do understand what I'm saying but they don't like it and have consequently downgraded my post!
It's the old "nature vs nurture" thing: those who don't like my posting are "nurturists" and believe that we're born as tabulae rasae, empty slates that learn all behavior; I'm seen as the "naturist" who believes that we're totally gene-controlled.
But nature is terrible at defining and shaping human relationships. We confuse "love" with affinity. "Love" is more like a verb that entails sacrifice, acceptance, and patience...along with affinity in a marital relationship, of course.
As 'jaquesm points out above, publicising it could be seen as a form of "public shaming". Attempting to hide it, however, leads to people in your community speaking in hushed tones behind your back, which is annoying and possibly a greater net negative in the long term. I realise that this may be more than you care to divulge, and I don't want to focus too much on your personal situation, but is there any particular reasoning or philosophy behind your unusual (I think it's fair to call it that) approach?
It cripples the rumor mill, taking away the secretive intrigue. If it's out in the open, people have less to speculate about and less to talk about.
It makes it possible for us to help other couples going through it. Dealing with this can be an incredibly lonely experience. We want to help make it less lonely for couples.
Keeping it a secret doesn't help anyone and it's only built on the social need to keep up appearances. That's useless in a world where the only people's opinions that I care about are my family's.
Our social system could use more people like Scott and his (reformed) wife. To me, they look like leaders in personal development and growth, let alone relationships.
To put it bluntly - nudism belongs to a nudist beach.
Your comments (and the others saying this should have been anonymous) are really saying that you think scottmagdalein should feel ashamed about this part of his life -- in his replies he's telling you that he doesn't. It's worth reflecting on why you feel that way.
Programming: Not caring about trends. I've realized I can learn pretty much anything on demand. So I find interesting problems and try to solve them, rather than spend alot of time learning frameworks and languages and hope to apply them. And I've found learning on demand for real problems causes me to learn In a way that sticks better too.
I find this to be a very good approach and it applies to me as well.
This approach enabled me to have much more time to learn new stuff and learn them well enough so as to build production-ready stuff, because that's the goal at the end of day.
The downside is that I rarely have time or energy to just experiment with something new just for the fun of it. It evens out though because I have fun at work learning and doing stuff I actually need to be doing.
Which is not to say your spouse is doing all the work for you (I don't know that. Maybe they are, maybe they're not.)
But when a couple works well together as a team, that's when they can be relaxed about having kids. Unfortunately, many people don't work well together (and don't know it until they actually have to do something major together.)
Perhaps having a kid would make me stop wasting time on useless stuff though.
If I hadn't done that, I'd still be stuck in front of a game somewhere.
Those things will eat your life.
Playing videogames, I used to have thoughts like, "It'd be cool you could level up like this in the real world to become uber powerful by just training a lot like this". It turns out you can [in our industry].
I still do enjoy videogames a bit, but not with any sorts of long term thinking with it. It acts as the chill-out activity now.
Spec Ops: The Line is one of the first games I've really seen traverse from the collection of descriptors we normally use for video games (childish, immature, time waster, brainless fun, etc) into the realm of what I'll call "deep media". I'll define deep media as the collection of literary and artistic work which is created not with the primary goal of entertainment, but with conveying an outlook or a perspective of the world.
Spec Ops: The Line is not a pretty, nor particularly fun game, but by golly is it good.
That's probably a good indicator of deep media. Not whether something is entertaining, or was created for entertainment, but whether it can be considered good regardless of entertainment value (ignoring technical value, which is generally only useful to a small subgroup of consumers).
And if you like puzzles, there's spacechem.
SpaceChem is awesome, I played it a lot on PC and also now on tablet (it's more playable with mouse, though).
Also worth checking are all other games by Zachronics Industries (maker of SpaceChem) - I particularly liked "The Bureau of Steam Engineering", where the goal is to route steam via pipes, valves, etc. inside a mech to make it fight other mechs.
 - http://www.zachtronicsindustries.com/
However, there are several ways to enjoy video games these days that involve a community and are much healthier. And I am not talking about a massively multiplayer game where the "community" is really just another gameplay element pulling you in. I'm talking about an external community that draws you to actively participate, to enjoy the game for something more than what it is at face value. This comes in many different forms, and I think most people would be hard pressed to say that they are "eating the life" of anyone. Maybe I can just list a few of them and let you decide:
1. Speedrunning community. I list this first because it's my favorite. Speedrunners revitalize games old and new by practicing and playing them to almost complete technical perfection. The communities are large, positive, supportive, and full of energy. Both speedrunners and viewers get to enjoy games they already loved in a completely new way, and engage in a meta-competition that is much more tangible and community-oriented than numbers on a screen beside user IDs. There are large communities in both Japan and the US/Europe (though the two don't interact much). The Japanese community generally interacts in the form of videos posted on Nico Nico . The Western community has a forum and video site at Speed Demos Archive . To give an example of the size and positivity of SDA, in particular, they run several marathons a year like this one  that draw thousands of viewers and raise tens of thousands of dollars for charity.
2. Indie game development. I don't think I need to say a lot about this; this community interacts enough with HN for its vitality to be clear enough. Even for lone developers, the creative aspect makes this a healthy pursuit.
3. Romhacking community. This is related to the indie game development community in spirit, but on a much more casual level. Using tools built to quickly make levels for games like Sonic and Super Mario World, members of these communities make completely new games out of old engines and assets. These new games - called "romhacks" because of the way they are made - are often posted on forums or at sites like SMW Central  or Sonic Retro . It's a very unique kind of community that draws together creativity and games. This one is also related to #4:
4. "Let's Play" community, probably the youngest of these. Much like speedrunning, this community aims to revitalize games by playing them in an entertaining way and publishing the videos (which are then called "Let's Play"s or LPs). These videos were usually posted on forums like Something Awful, but increasingly these communities are centered on Youtube. Very often the games played are indie games or even romhacks.
Edit: There is also a community related to #1, the Tool-Assisted Speedrun community  that aims to play games to literal technical perfection with the benefit of tools like savestates, frame-advance, and recording provided by emulators like zsnes. Such tools are obviously frowned upon in the normal speedrunning community.
The interactive fiction community has also produced one of the strangest useful programming languages of all time, Inform 7.
Work: realising that I am not stupid and that I can make a difference, I began to apply a three-word philosophy to life: "Belief, Thought, Action." All beliefs that withstand scrutiny must be acted upon.
Best. Decision. Ever.
The reason being is that I now see the world through a different lens. For instance, when everybody blames bond markets for trashing the bonds of Greece or Argentina - I understand why it is the fault of the government and the markets are just speaking truth to power.
I also understand why populism is so dangerous.
Understanding economics & finance has liberated me. It is easy to be conspiratorial about the world and the things you see happening on the news - but once you have a solid Econ & Finance foundation it is interesting how different you look at everything.
So even though I am a hacker, I am glad I now have the glasses of 'objectivity' for world affairs - that I don't think I would have had without my MBA.
Programming: Deciding to learn to Ruby & Rails (it is the first time that I can say that I can 'program', despite having a BA in Comp Sci and learning C, C++, Java, etc.).
I hated those languages in school and while I did good in my classes, because I was always a geek and it didn't come particularly hard for me, I hated working in them. So after I graduated I gave them up, for a few years as I worked as a project manager.
The best decision I ever made was to learn it all on my own. It has been the hardest 2 years of my life, but easily some of the most rewarding.
Now I can build anything I want - that is the 2nd most liberating feel ever!
I did mine at the University of Tampa, but I don't think you need to necessarily go there to have the same experience I did.
Once you go with an open-mind, I would encourage you to take Econ, Accounting & Finance courses. You don't have to go nuts with these courses either, you can take the other management courses....but the ones that provided the most value to me are those.
Learning to think like someone on Wall Street - with respect to seeing the world as it is, not seeing it how I want it to be - is the most valuable thing I learned.
That being said, the connections are good too - but I am yet to have to draw on them.
Given that I am in the tech startup industry, I don't suppose they will help me much right now. But who knows what the future will hold.
Also, for what it's worth, understanding finance and not being intimidated by legal contracts is also very useful in a startup environment. Every dime I earn, I can visualize my financial statements in my head - which I guess is a good thing.
I guess the trick is to just want to learn these stuff, and in most reputable programs, you will.
It's easy to get into the "I just want to get an A" mindset - don't do that.
I like to see high-quality products that can command a fat margin in the marketplace, because it usually means that the company will be profitable and can continue making high-quality products (all other things being equal - like they don't commit PR suicide or they don't fumble on the production, etc.).
So that's one subtle way, another way is by evaluating public figures.
One of the most eye-opening things I have experienced is seeing "knowledgeable" people talk absolute garbage and many people listening to them without questioning what they are saying.
One such example is when Jack Welch did his rant about the jobs numbers right before the elections. I am not even talking about from a political perspective, but here you have a "world renowned" ex-CEO of a large company (one of the largest on the planet) and he is talking shit. He knows that the numbers can't be fabricated easily because of the way the system is setup, he also knows that any candidate that fudges the numbers has more to lose than to gain. As in, if Obama did fudge the numbers and the word got out, that would be the end of him. Period. No questions asked. The risk is too large for the reward.
But there are many people that would see who he is, and what he did and assume that he is speaking gospel. But because they don't understand the way the system works, and the incentives at play (Welch is going to be hit with much higher taxes, so obviously he has a vested interest in attacking Obama) they are oblivious and they believe him. Obama "must be" fudging the numbers. It doesn't quite work like that.
Yes, gov'ts do hide things and there are stuff they do that they don't want to get out - but when you understand the incentives that reporters/journalists (and more recently bloggers and every day ppl with smartphones, etc.) have to break "huge stories" you appreciate that it is harder to keep "huge" things secret.
Plus, I see startup ideas and companies differently - again...one of the most drastic changes is that I look at margins more, because they kinda tell you what type of company you have to build. In a thin margin company, there is very little room for error....because the profit you earn on each transaction is so small, so it takes you longer to build up a buffer to help you weather storms. Whereas if you have fat margins, you are more likely to be able to weather winds that will kill thinner margin companies.
One glaring example is looking at the differences in margins of two large companies. Walmart & Apple.
Walmart - $445B in revenues in the last reported year, $15.7B in profits.
Apple - $156B in revenues, $41.7B in profits.
So Apple did 1/3rd the revenues, but 3X the profits.
I would much rather run Apple than Walmart. That's just a personal preference. Many people thrive in the low-margin business....Walmart & Amazon are.
That decision, dictates the culture of the company you create. With a fat-margin business, you can invest more liberally in innovation and pay a premium for talent - it's much harder to do that (at the same scale) as with a fat-margin business.
Hope that provides some clarity, let me know if you have any other questions.
Edit 1: As for resources, I would check the finance & economics section of Khan Academy for starters. Then from there just do some reading on the various topics you have learned and start to consume quality journalism like the Financial Times or the Economist. It is staggering the garbage printed/shown elsewhere. Also, try to turn off CNN if you can.
I share the same feelings as marcamillion regarding having the "veil" lifted on world affairs. I have a BEng in Aerospace Avionics (Electrical Engineering for air and space craft) but have always worked as a Software Engineer / Developer. After a few years of working full time (big multinational then small ~20 person company) I was wondering "there has to be more to life than this."
While reading online I came across recommendations to read this weekly magazine called "The Economist". It was super hard to get through at first: I didn't know the people, some of the countries, or the financial jargon. But I persisted and each week I'd go and buy it at the newsagent. I'd systematically read each issue from cover to cover. Those first ~15 issues looked like a rainbow; multicoloured post-it notes fanning out from three sides. Whenever I came across a person, word, country, concept I didn't recognize I'd write it on a post-it and affix it to the page. Later, I'd systematically revisit the notes and resolve my ignorance using Google + Wikipedia.
A lot of the time I didn't want to read the whole thing, only the Business, Finance, and Technology sections. However, I forced myself to read about issues in Sudan, or Kyrgyzstan, or politics in South America. I am now so much more aware of the way the world works, what's happening in world politics, financial markets, business, literature. As marcamillion mentions, acquiring this knowledge was liberating.
Programming: Persisting with Haskell until it "clicked".
Over the past 5 years I've revisited Haskell a number of times. Reading tutorials and books; watching videos. I "got" Monads as a mathematical concept, but didn't have a strong grasp of how and why they should be used.
On about 6th crack at it I just sat down and read code. Thousands and thousands of lines of code. Once I'd "groked" a concept from seeing how it was used in real world code I'd go and implement it from scratch. I'd recreate Maybe, then build the Monad typeclass, and finally implement the Monad typeclass for Maybe. I'd do this for Monad transformers, Monoids, Applicative, etc. This was really hard for me. Looking back I realise I was optimizing my learning by always pushing the edge of what I could do.
Over time I gradually became competent at writing Haskell as well as reading and understanding other people code. This additional understanding of functional programming has dramatically change my programming style. I now create a lot more immutable data types. In C++ I'll liberally use const, in Python namedtuples. I get frustrated when a language prevents me from easily mapping and composing functions. I really really value algebraic data types and use them wherever I can.
tl;dr Read The Economist and went to grad school. Learned Haskell and now use immutability and pure functions much more often.
One tip is, I actually find the magazines hard to read. Something about the typeface and spacing just screams "dense" to me.
But...what I have done is get the audio version. They are hella long, like 3.5 hours total, but so well produced and VERY nice to consume. Each "article" is about 4 - 7 mins on average, then there are a handful that are 20 minute special reports.
When I think of product/market fit, I think of my addiction to The Economist. I don't think there is a price they could raise it to, that I wouldn't buy it at. And...if I couldn't afford it, I would definitely pirate it :)
On the other hand, kudos for going through the hardship of learning Haskell, I will try it at some point.
Programming: Same; in this respect, that's ignoring common wisdom about OO and TDD. These things have value, but not of the type (and not really the magnitude) that they are assumed to have. It's much more mainstream now, but 10 years ago, I was considered a crazy heretic.
Programming: I'm still 20 and in the uni, haven't had much experience to have had a best decision about this.
Programming: Having an understanding of every situation i face.
If the statement means exactly what it says, then you're correct.
Programming: The day I pulled my head out of my ass and started learning from my peers.
"The universe has absolutely no compulsion to be orderly or just."
Your life will be a mess. The world will be incredibly unjust. Billions do and will suffer. You are helpless to affect this in any meaningful way. Your task is to learn to cope with all this and find path to inner serenity.
Reading Stephen Mitchell's translation of the Tao Te Ching helped form some structure around this idea for me by fitting it into a framework for positive action and providing a number of helpful mantras: http://academic.brooklyn.cuny.edu/core9/phalsall/texts/taote...
That was the one of the greatest turning point in my life too.
Programming: Teaching myself Lisp and Emacs, dropping Agile methodologies, ditching OOP for functional, writing my code as if I'm replaceable and the next guy needs to pick up where I left without any trouble. The last point actually gives me more value in the eyes of my employer!
I'm a programmer so for me mainstream translates to Singleton<FilteredWorldEventsStream> mainStream; and that's, as Steve Yegge would say, a case of the Simpleton pattern; as a fun note, it's about the appropriate LISP to C++ translation too!
If this were the only API offered to you, you'd probably hack your unfiltered stream library on the side too; oh but it's C++ and everything useful is private under proprietary licensing, good luck. Isn't that how open-source was born in the first place? It seems to be doing pretty well compared to proprietary mainstream software nowadays.
Secondly, I believe sticking to your own world is a very good thing. This is where your imagination lives, this is where you create links between ideas to better picture them and therefore understand them. Be it for art, science or faith, this is where fresh ideas comes from to then be adopted by the mainstream, who forgot they too have this ability.
People don't participate in governance because they believe it isn't their 'job', they did vote and it ends there for them; they just had a hard day and want to spend the evening watching American Idol, the results of a consumption society. Our society is based on work for money, not work for the bettering of said society. Otherwise we wouldn't need marketing, public relations, sales, and other jobs we had to came up with to keep the illusion of it all going on.
This led me to disconnecting from the mainstream. However, you don't really disconnect from the community since the internet provides an open and free media platform to build your own filters upon; it also happens to build critical thinking. What you disconnect from is the endless stream of bullshit goods and services produced for the sole purpose of profits going through the mainstream pipes.
I've always liked to view capitalism as a dog chasing it's own tail; produce goods or services to make money, to spend on goods and services. If it does so for a while, you'll notice all the money going to the center due to the centripetal force of its circular motion. Why isn't society about collectively working to go forward instead of in circles? Mainstream.
I'm not for anarchy either, that's just as bad on the opposite end of the spectrum. But the open source model would definitely be interesting to apply to society as a whole; drop the ideas of government and corporations, structure society as an hierarchical flatland and let everyone contribute to everything they want to.
Until then, I'll be quietly hacking away since I actually learn useful things that way, which I can then use to help create a better world.
Although don't you think that by reading HN you could end up being part of a "group think" mentality since most of all of us here are involved in IT?
Life: continuous learning, whether it be a new language, a new skill, travel. Whatever I learn usually produces benefits in unexpected ways, years down the road.
Runner-up: barbell weight-lifting, three times per week. If you've never been strong, you owe it to yourself to try. You get a physical sense of capacity to match whatever mental sense of capacity you've achieved.
Work: Trying my own thing. I had no clear plan, but I had criteria to evaluate whether what I worked on was paying off.
Two years out, I've got steady monthly passive income, and am working for a startup doing work I'm passionate about (selling an online LSAT course) while continuing to pursue my own projects.
Casting off the set path of law school/a job opened my mind to new possibilities and forced me to find my own way.
Work: To work towards the 'Life' goal. To work smart, and make clever savings and investment moves.
I've read enough of the 'money is not everything' quotes. Its almost a given and keeps coming back to me from my own experiences and from what others tell, Money is definitely the most important thing in your life. Having lots of it means most of your needs, wants and requirements taken care of. You realize this more as you age, having lots of money to never work puts you in a far more better situation than getting up every day and running to work regardless sun, rain and cold. No matter what your work is, no matter how passionate it is.
Having financial security will alone change you life so drastically, you will never worry about having to take risks, failing and putting pieces together after that. You will never have to worry about getting fired, reporting to office despite your highest dislike on a day. You will never worry about 'What if' scenarios. You will never have to worry about paying your bills, sending your kids to school etc.
So the most important thing to realize in the early part of your life is to get to financial security.
And yes tool religion, micro optimization craze, technical pedantry isn't much of value while the other part of the world is building stuff and making millions with duct tape.
As a programmer your job is to worry about solving problems which people need solutions to, and then monetize it.
Also id argue, not having to worry about failing or taking risks will make you much less likely to succeed in such a scenario, from a statistical point of view.
While i agree that money is of very high importance in todays world, it still doesnt make you happy even if that sounds banal, its true.
It makes certain things in life alot easier, so everybody should strive for financial security but saying it is ultimately the most important thing in everybody's live is a very broad statement to make.
Programming: leaving a couple of fun and well-paying jobs to go to places where I wasn't the best at everything. Learning from others (and teaching others in areas where I excel) has given me more happiness/satisfaction/growth than any single language, project or other discrete event.
Programming: Deciding that I only wanted to work on open source software, Its not global to open source, but the culture of sharing, building on top of giants, and encouraging + learning from each other has been incredible.
Also for Life: Learning how to Learn. (Currently putting this to the test: http://christopherbiscardi.github.com/blog//coursera/2012/11...)
Professional: Working as an independent developer, instead of as a wage slave.
Programming: Get meta. Whether it be programming languages or frameworks or methodologies, at some meta level they are all 90% the same. They desire to the same result. That 10% is for ninjas and specialists ... which is great. But the world needs more of the meta folks. Once you "get" it, all fear of taking on something new changes, and you feel totally cool with trying it out. Immerse in anything for a while and you start to get the other 10%.
Work: Scoping out and learning new technologies. I've been iPhone programming for ages and realised I hadn't really dived into other stacks such as Rails or JS programming. Definitely need to do more of this though.
I bicycled across the US each summer for two years, and the next summer took a full year off. I rode from Seattle to Maine, down to Florida, over to California, and all the way north to Alaska. It was the classic "find yourself" adventure of a 20-something. It has grounded me in everything I have ever done since.
Facing a grizzly at four feet, alone in the middle of the Yukon, really does put everything else in perspective for the rest of your life.
Programming: Build something that people use, and start freelancing. I am not a full-time programmer, so I could have gone the rest of my life only programming for my own intellectual satisfaction. But I watched my dad pass away never having polished any of his projects, and that made me commit to releasing code. Programming has been much harder, but much more satisfying, since I made that decision.
Freelancing has let me ease into using my technical knowledge professionally, while maintaining my day job as a high school teacher.
That sounds incredible! I am going to sound incredibly stupid but that would be something to experience. Details?
I was on a flat stretch of road with grassy banks. I saw a matted-down patch on my right and thought to myself, that looks like a bear slid down on its butt right there. Then I glanced to my left and found myself face to face with a grizzly.
It's funny, I knew what I was supposed to do from reading and talking about bears. But it was my experience responding to stray dogs that had trained me in how to respond. I just stayed calm and kept pedaling, same speed. It stepped into the road and huffed in my direction, but it didn't start chasing me.
I have kept that moment in mind during every "stressful" situation in my life since then.
Programming: focusing on building a business with software and not getting so anal about every line of code. Learning to be lean in all ways possible really helped here.
What effects have you noticed?
Programming: Be very aggressive with learning. Set a goal of books to read, programming languages to learn, per half a year. Read a TON of code in the process.
Life: having a family, emigration, travel, stop caring about money beyond what I need for day to day living
programming: read more code instead of writing more code
Programming: Committing to the idea that ideas must, must, must be expressed cleanly.
It felt like I was already given unemployment.
In addition to that, other people surely needed the funds, which seemed limited at the time, more than I did.
Until you reach that point, please don't make such concrete declarations.
Programming: Diving farther into photoshop. I know thats not programming, but I really like to play around in photoshop during long code sessions. It helps my brain relax.
Maybe you're talking about losing body fat. I'm not sure why you're preaching about that, though, since the parent/GP didn't mention weight loss being a goal.
Programming: (1) Getting into the functional programming mindset. I am not going to completely ditch OOp but there are times when I find functional programming much more intuitive. (2) Getting the basics of algorithms and data structures. This was a long time ago but I remember it affecting my whole perspective of what programming was about. (3) Implementing non-intuitive algorithms to solve hard problems, mostly still considered as research areas. For once the solutions were not "obvious" and a mechanical approach, however complex, was not enough. I started with game theory, and am now trying to get into machine learning and overall I'm finding this experience a very pleasant. (4) Tools wise, discovering the free software "ecosystem", especially GNU/Linux, vim, tmux, tiling wms, learning to use the shell and utilities productively...etc I still have a long way to go but these tools are already paying off.
Also, like the OP, taking good care of my body which means quitting cigarettes, 2-mile runs every day and watching what I eat.
I'm lucky enough at this point of my life to be able to choose the projects that I take on. These few years have thought me never again will I compromise on my promise to deliver quality projects to people. It really stresses me out when bosses change deadlines on a whim and expect you to meet it. Now that I'm older, I would tell them respectfully to get someone else if they really need to meet that target that bad.
In my experience, 90% of the time, nothing good ever came out of imposing stupid/unrealistic deadline. All you get are burnt out programmers, code which resembles a travesty rather than a working application and a mountain of technical debt.
At the end of the day, some people measure themselves from the car they drive, the houses they live in, how much money they make and to me, that's perfectly fine(whatever motivates you, man).
For me, just being able to help people with projects that are meaningful to me, and not having to stay at a job because I needed the money is to me, the best thing in the world right now.
Programming: ignoring fads and applying engineering discipline to problems.
Programming: writing an Atari ST emulator (it landed me a job offer by a prestigious game company)
I'm currently working on a project which is set to become my master's thesis (I'm writing my final undergrad exams this month). I started it a few weeks ago; before that I never thought I would go to grad school and I had a severe distaste for academia.
Now I'm feeling academia suck me in. It's hard to describe, but I'm "good" at the aspects of academia that I hate--the bizarre politics of it, for one. I also really enjoy having the freedom to work on hard problems without any immediate paths to monetisation.
Do I get out now? Is it okay to do this for a while? I am obviously not asking strangers on a message board to make my life decisions for me, but I'm very curious to hear your thoughts.
You can probably go a long way just by programming by the specifications with some literature on designing interpreters, but good assembly language skills on the emulated system will be extremely useful, because that's what you'll be looking at all the time while debugging.
Programming: Focussing on the end product at least as much as technical elegance.
Programming: Common Lisp. And... not being overzealous about it.
Second-order results were an awesome new job doing something more fun; a huge increase in my day-to-day happiness and satisfaction; getting married; and an even more awesome job, and a move to California.
Programming : Working for myself and not for a monthly pay-check. To do work that I enjoy doing while earning enough for day to day living.
Programming: Quitting my permy job, then starting my own consultancy has given me so much more autonomy. It's scary, but fun. And while I'm still selling my time for money, I am transitioning to doing my own thing. Still blown away that people pay me money to do something I love so much...
Programming: Learning Node. It got me excited about development again, which caused me to get out and meet other developers in my community. I was so enamored with it that I quit my day job in order to have more time to learn Node and many other new web technologies. As a bonus, I used the stuff I learned in that time to get a new job that I like more and make nearly twice the income at.
Programming: When I decided to stop focus on being a "Programmer" and focus on being a business owner. My code isn't what gets me paid. I still do all the programming at my company, but now I do the minimum that needs to be done that will still allow me to make changes. I'm in the business of making money, not pull requests.
Another commenter wrote something very similar to mine.
There are three things that I consider to have had the largest impact on my life:
1. Learning to Learn - sounds obvious and simple but it truly isn't. There's a lot of un-learning that generally happens first before you can truly become someone that loves to learn on their own or with a partenaire dans le crime.
2. Crossfit - which introduced me to powerlifting and olympic lifting - the combination of diet (keto, paleo, zone), metabolic conditioning, and strength is basically hacking your body. My quality of life in a very physical existence has improved tremendously by becoming more athletic and much stronger.
3. Co-founding a technology company. This one most people here should relate to the most.
To elaborate a teensy bit on these points; none of these convictions/events/understandings happened at once, it was a gradual aggregation of different experiences and micro-choices along the way that ultimately culminated in these distinct three "pieces".
I also find it mildly interesting that I've after the fact identified these "three". What happens to be the most stable configuration in our physical environment? THREE! The tripod, three perceivable dimensions, blablabla; I might write about this now.
I love lifting but I'm curious how it has affected you when starting company, something (from what I've read here) is notoriously time consuming.
Programming: attempting to build an MMO each year and getting further each time. The problems are hard and very interesting to me, so I love to learn in this area
Programming: Two for the price of one:
1) Really understanding locality of concerns. I.e., creating and using granite-like abstractions so that when I use them I don't have to think at all about what is under the hood. So, when I need to reason through a given piece of code, I have a local and finite amount of the rest of the system that I have to load into my finite brain. I can inductively assume that the abstractions I am viewing as primitives are themselves reliable.
2) Beginning programmers write simple code. Intermediate programmers write complex code. Master programmers write simple code.
Second biggest choice probably was to leave said acquiring company, to venture out again. I can't say I found my next big project yet and leaving the new comfort zone definitely took away some comfort, but I felt it was the right choice. Like Steve said: Never settle ;-)
Programming: Taking a week-long course by BNR to learn iOS programming. Following an intense week-long program is very different from working through a book in your own pace, learning alone. Having a neighbour asking you things, or to ask things, makes learning incredibly more effective.
Programming: Discovering Lisp 3 years ago. It turned my programming upside-down, gave me a job in Erlang (that I had since quitted) and seriously expanded my thinking. Also led me to pg's essays, HackerNews and LessWrong, all of which transformed my way of thinking and - I feel - made me much more rational person than I was.
Programming: Finally deciding to just dive into a project rather than continually reading books. I'm not a very good programmer by any means though so take that as you will.
programming: going to college
Programming: A worry of mine was how much was I thinking about things, that needed a deeper/rigorous computer science understanding. Coursera and some other courses have been a life saver here (in my case). Have been taking courses that I felt I needed to understand better conceptually. This seems like being in a maze that leads all the way to very basic fundamentals that I have forgotten; So adding math skills now (Calculus, linear algebra etc). I hope connect the dots.
Programming: Reading research papers and the academic basics, and learning functional programming. Gave me the ability to go far beyond simple apps on frameworks, and tackle problems I thought out of my league.
Programming: Working on side projects that use technology I want to work with. It gets out that urge to do your own thing and employers love to see your side projects.
- Reflecting myself constantly. (Looking at things from another perspective often allows you to learn not only from your own, but also from other peoples mistakes)
- Completely turning off TV and other mainstream media for several years.
- Starting to leave my comfort zone occasionally to extend it constantly.
Programming / Profession:
- Accepting the fact that, although being good as a programmer, I'm even better in managing things and mentoring/coaching. (accepting this was hard: i love doing programming)
- Focussing on the big picture and final results instead of wasting time with unimportant details.
- Reading/Reviewing/Discussing more code than you write actually results in writing better code and being more productive.
Programmimg: I wasn't offered computer science in college(my country has a bad system). Rather I was offered math. I didn't see myself good enough in math so I decided to give up on programming for a while. I later read the quote "never stop doing what you love doing best". It really told me I made a fool out of my self. Now, I'm back to the keyboard.
Programming: Joining the local meetup groups, attending both areas where I am very knowledgeable and areas I want to know more about. I've learned a lot and I've met hundreds of inspiring people. Giving talks at the meetup groups is also very rewarding and highly recommended.
I found a lot more support online for other stacks.
For example, I wanted to do a tiny webpage, and host it online cheap or for free. The cheapest options were Google App Engine and AWS.
I looked into Azure pricing and ran away. I'm probably ignorant of the best solutions (Rackspace seems to have a startup program, there was a .NET hosting I liked, there's also BizSpark), but most .NET hosting was a lot more expensive than I wanted, and not supportive of "weekend project" types.
Programming: quitting permie jobs and going for a contract in London.
7 years later, leaving Google was the best choice I've ever made.
Programming: hmm, not sure. but the worse choices are 1) not blogging more, and 2) not learning a full stack backend language.
Programming: I remember thinking "I mean I guess it's neat I can draw snowflakes with computer code, but isn't this a waste of time?" when I was around 11 or 12. I'm glad I stuck with it. There was a simple enjoyment and feeling of achievement even though I was just drawing simple shapes with QBASIC - I didn't really know why. But it felt good, so I kept doing it. I learned a lot, and it's gotten me to some pretty interesting places.
Programming: Realizing I'm not so great at it, moving towards programming as a hobby.
Life: Deciding to stay with my girlfriend through a long-distance relationship. It's hard, but definitely worth it. We've not seen it all the way through yet, though, so it's hard to say yet if it really is a good decision.
Programming: Getting into game programming. That's where I started six years ago, and although I've moved on, if it weren't for the joy of making my own 3D games, I would have never dug deeper.
Programming: Building stuff and learning by doing rather than reading text books.
But programming - definitely the decision (back in college) to actively commit my hobby and professional life to the linux (and concomitant open source) ecosystem. I can still look around today and marvel at how much it has enriched not just my overall career, but the day-to-day experience of being at work.
No wonder Humanity is not property of family relatives only.
A family friend gave me a copy of photoshop 4, and I kind of got addicted to it. From there I grew a love for art and design, which I did as a hobby for quite some time. After I graduated college with a CS degree, I had a ton of design experience and a solid programming background. The two together have really done well for me, for obvious reasons.
Programming: switching back into programming from management
Didn't work out but allowed to filter life and actually figure myself out. This allowed me to restructure my degree/education/learning to support the rest of my life and not just my next startup.
You'll ask this again in 5 years and hopefully my answer wouldn't have changed much.
Programming: never saying no. Biting off more than I thought I could chew.
Programming: The 2½ years I spent at a small startup as the only full time developer
It was scary at the time. But worth it.
Programming: The realisation that once you understand the same basic structures (declarations, loops, recursion, data types) and the underlying paradigm in one programming language, you can easily learn any other programming language.
Programming: learning C++, even though at work we use Java and Ruby, I feel the more I learn C++ the better I become at higher level languages
Life: Believing Jesus actually said "I am the way, and the truth, and the life. No one comes to the Father except through me." http://esv.to/john+14
Programming: Leaving a Megacorp to work for a small development shop to do Python work.
Code: listened to The Dip from Seth Godin and followed his advice. Dropping everything I wasn't the best at and focusing on just what I was.
Programming: Putting aside spending all my time learning best practices and paradigms and just creating something I have in my head.
A book was also written by Matthew Collings: http://www.amazon.com/This-Modern-Art-Matthew-Collings/dp/18...
Programming: Getting a degree in hardware even though I was pretty sure I wanted to write code.
Programming: switching to Linux at ~16 and recently making the move to a Macbook
Life: Deciding that I want to make a difference in the world.
Programming: To start programming.
programming: learning ruby in 2001. Not the language per se, but the community at the time was full of smart people (lispers, smalltalkers, random PL geeks) and dumber people like me would learn a lot.
Programming: Embracing the cloud
Programming: Learn python
Programming: Stopped being scared.
coding / professionally: just say yes, you cant fail - and if you fail its much much better than having said no from the get go. (oh, and know your pricetag)
Programming: Saying no.
Programming: Learn how to program.
Programming: Programmed what I wanted.