Creator of StackOverflow and Discourse.
As you do things, you talk about those things: https://youtu.be/5jurlnqqWKA?t=2149
At 50, Jeff has achieved more than most. His work led to sites you likely frequent including Stack Overflow, Discourse.
He was podcasting back in 2008 before most people even knew what podcasting was.
He's a published author and has been writing at CodingHorror.com since 2004.
He's been featured in Wired Magazine and launched a hardware company to produce a keyboard for coders.
In the web world he's one of the most familiar names you will see and has amassed a huge following.
I'm deeply honored to bring Jeff to you at our next TechBrew on Zoom.
"In the art of software development, studying code isn't enough; you have to study the people behind the software, too."
You've been writing on CodingHorror.com since 2004, which are your most popular post(s).
What are some of the keys to building a successful community at the beginning?
What are some of the ways developers sabotage their own success?
What else do you want people to know about you and what would it say on your tombstone?
Way more than 90% of code is crap. ~ Al Viro
Q: Why do we suck?
A:Because we’re software, too. “The main reason we tend to focus on the technical rather than the human side of the work is not because its more crucial, but because its easier todo.”
The common thread in all my failed projects is… The First Rule of Programming: It’s Always Your Fault. 1. Embrace the Suck We make shitty software… with bugs! Dave Winer 1995
“Software is a process, its never finished, it's always evolving. Thats its nature. We know our software sucks. But its shipping! Next time well do better, but even then it will be shitty. The only software thats perfect is one you're dreaming about. Real software crashes, loses data, is hard to learn and hard to use. But its a process. Well make it less shitty. Just watch!”
Version 1 Sucks, But Ship It Anyway.
3 months in development vs. 3 months of user feedback
• better side visibility• hydraulic flight controls• climbs faster• turns faster• better distance visibility
Boyd’s Law of Iteration: speed of iteration always beats quality of iteration Where you are today doesn’t matter so much, compared to where you’re going tomorrow. My goal is to suck less every year.
One of my favorite business model suggestions for [web] entrepreneurs is to find an old UNIX command that hasnt yet been implemented on the web, and fix that.
What are you doing right now? Is it going to somehow result in one of those three things getting done today? Will this you get you to where you need to be by the end of the day?
I'm not asking you to admonish yourself or to make any changes to your routine. Just keep it simple, focus on the important things, and add a little layer of awareness.
3 Rules:
Mostly, I think it's the fear that gets us, in all its forms. Fear of not achieving. Fear of not keeping up. Fear of looking dumb. Fear of being inadequate. Fear of being exposed. Fear of failure. The only thing preventing us from being awesome is our own fear of sucking.
(Edit in process)
What lessons have you learned building StackOverflow?
exercise the rule of three to see if you've built something reusable or not
listen to your community, but don't let them tell you want to do
practice complaint driven development
What was your biggest mistake and how did you learn from it?
I had a very "fight club" attitude toward Stack Overflow. The first rule of SO is, don't talk about SO.
That's bad because all your most engaged users, your leaders, your moderators, your most avid members really want to talk about the site and how it works. By pushing them away, you are pushing away your best users!
I finally caved in when someone set up a phpbb to talk about Stack Overflow.. that was the nuclear option. That's when we created http://meta.stackoverflow.com and every Stack Exchange since then has had its own meta site from day zero.
Please confirm that you are fantastically wealthy and profoundly self-satisfied at having revolutionized the practices of an entire industry.
I'd be really depressed if not. I'm set for money, but as it turns out, above a certain point more money doesn't make you any happier. (The book 59 seconds I referenced above covers this!) http://www.cnbc.com/id/50027184
The question is, what do you wake up to do every morning? What's your goal at that point? Being more rich and famous? Just "be happy"?
I think what drives me is, first of all, my family -- the real future -- and the idea that I get to wake up and work on projects that I feel improve our little area of the world. We're all gardeners, tending to our gardens. Some might be in our backyard, some might be Central Park, or an industrial farm in Kansas.
That's how we feed ourselves, both literally and figuratively, by working in our gardens. It's healthy!
I find, as I get older, I'm less likely to chase after newer shinier technologies. I'm more interested in doing the job right, leaving maintainable code and getting the job done on time. Often, I see a lot of job postings that ask for 3 years of brandnewcuttingedgetechnology, or some such. Or, worse yet, the dreaded rock-star developer who can do it all.
Is this industry built for developers long term? What should we focus on for long-term success as a programmer? Also, how do you handle programming when you're just simply burnt out? How do you get the fire back?
Experience is always weighted in our industry, so more experience -- to a point -- is a huge benefit. I'd personally say after about 3 years in a role, you are as good as you are ever going to be. From then on it is just more battle scars.
There is the old saw -- "does that programmer have 10 years of experience, or 1 year of experience 10 times?"
To be honest, for long term success as a programmer.. you have to stop calling yourself a programmer: http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/
What do you do to stay informed as a programmer? With so much out there to to learn it can be difficult to decide what is worth your time.
I'm a big fan of "Just in Time" learning:
http://blog.codinghorror.com/keeping-up-and-just-in-time-learning/
Build stuff. In the process of building something, if you need a new tool, learn it then. Don't do a lot of speculative learning because Y (probably) AGNI.
Definitely try to avoid being the next shiny thing programmer, it's exhausting:
http://blog.codinghorror.com/the-magpie-developer/
26 points-4 years ago
if you were building a webapp today, like stackoverflow - what technologies would you use, and why?
21 points-4 years ago
You should pick a set of tools that has a good fit to the job you're attempting to take on.
I knew in Stack Overflow I wanted to build a very fast, simple project using a toolchain I knew very well, and was unlikely to ever be open source. While .NET is great for server speed and devs who are already familiar with Windows, it's terrible for open source projects. Microsoft has improved that situation somewhat in the last few years.
I knew in Discourse I wanted to build an open source tool on an aspirational "programmers will want to work with this stuff, but not totally bleeding edge" stack, so it was a choice between Ruby and Python. And most of Discourse is really JavaScript via the Ember.JS framework.
10 more replies
13 points-4 years ago
What do you think a universities place is when it comes to education about software development? What are your thoughts about providing a more practical degree, that focuses on application development and software management over theory.
Do they do a good enough job in your opinion prepping a person for a career as a developer?
Would you recommend going to university for computer science to some one who is already a competent developer?
I think apprenticeship is the better model:
http://blog.codinghorror.com/software-apprenticeship/
I am also a big fan of learning on the battlefield
http://blog.codinghorror.com/learning-on-the-battlefield/
As for the education, it should include practical stuff like "build a real project using real source control"
http://blog.codinghorror.com/how-should-we-teach-computer-science/
What do you think about Microsoft's recent change of mindset regarding Open Source? (since you've been openly advocate of Microsoft technologies over the years)
I think it's great! Look at how the PowerShell team is now able to implement SSH after "the third time they've tried" (can you believe it? their direct words!) Detente is always good in any cold war.
Ultimately, we're all programmers and want the same basic stuff, regardless of OS or language.
I occasionally see Atwood hatesnark in r/programming.
How do you deal with the anonymous negativity that you see about your writing, etc?
If nobody bothers to hate what you're doing, it probably isn't very interesting.
Anything "good" by any objective measure is pushing boundaries at least a little. There should be some friction if you're doing it right. (And all friction if you're doing it... wrong.)
Not terribly different, but much more JavaScript ;)
What are your views on the necessity of formal education regarding programming? And, well, software-related professions in general.
I don't think it's necessary, but, I would worry about a programmer who was totally home schooled -- so much of programming is learning how to get along with other human beings (who are Always Right), and that's one of the main things you get out of a college education. College is the place where you learn to work with others, and ideally take on some great internships where you get valuable real world work experience too.
Depends on the programmer, but on the whole, I would be nervous about a completely self-taught programmer who had no college education whatsoever.
How did you figure out what to work on after SO -- Discourse? How do you identify the problems that you want to work on?
I see parts of the Internet that embarrass me, parts that I love, and I want to fix them.
I am happy I was able to move on to the more flexible, open source tool of Discourse since it applies to so many more internet communities. If Stack Exchange was a scalpel, super sharp, super powerful, but kind of dangerous in the wrong hands -- Discourse is a table knife that works in any household, restauraunt, or bar.
Of course according to some VCs the internet is dead, and everything is now smartphone apps. ;) I don't agree.
How is CommonMark going? Do you regret any of the initial blunders back when CommonMark was "Standard Markdown"? Would you have handled it differently? How?
Fine, we should have a 1.0 release this summer. It's on an academic timescale, it takes the time it takes. Really looking forward to a spec and a well-defined iteration of Markdown.
It's impossible not to have "blunders" on any project involving John Gruber. ;)
Do you have any books you would recommend that aren't technical?
Definitely recommend 59 seconds
http://blog.codinghorror.com/nobodys-going-to-help-you-and-thats-awesome/
And whether you plan to have kids or not, this book is revelatory:
http://blog.codinghorror.com/how-to-talk-to-human-beings/
Started in 2004, became a "big deal" by 2007. My advice is ..
http://blog.codinghorror.com/how-to-achieve-ultimate-blog-success-in-one-easy-step/
basically, do the work, and commit to a regimen.
Hi Jeff, I'm actually a mod on one of the .SE sites...and my question:
So first you decided to overhaul Internet Q&A with StackOverflow, and then you formed babby (x 3?) and then you decided to overhaul Forums with Discourse - have you already decided what kind of half-wonky internet thing you're going to tackle after Discourse, or at least narrowed it down to a few things? Is Discourse far enough along now that you're preparing another exit strategy or are you still happy being in the thick of it with Discourse?
Discourse is going to take a long while, I originally thought of it as a 5 year project but it's more like a 10 year project. I haven't thought about it much beyond that because we're 2 years into the first 10!
The journey can change... we may end up taking on some chat stuff along the way, earlier than I thought. Chat and Forums are definitely very different beasts, but they have a surprising amount of shared DNA.
Who is the best programmer you've ever worked with and why is it Robin Ward?
I don't think I've ever worked with any Canadian programmers who were any good.
Sorry.
What programming blogs do you read now?
Gosh, hardly any. I spend so much time reading words written by other people, just rarely in a "blog" format. I enjoy the ones I discover linked from Hacker News / social media and other aggregators though!
How do you manage to get stuff done - how do you know what's important, or what should be done first? Do you keep a daily routine, a todo list (I believe you said you hated them), juggle it in your mind, ...?
I follow the "top 3" rule. What 3 things should I be working on today:
http://blog.codinghorror.com/three-things/
Today this AMA was one of those things!
I just finished school. I am now a programmer. What do I do to keep the learning curve going, to stay relevant ?
Get a job that challenges you with good people that are smarter than you. Endeavor to be the dumbest guy/gal in the room.
And read these 5 books! They are essential! http://blog.codinghorror.com/programmers-dont-read-books-but-you-should/
Over the past few years, as programming has arguably become a more 'mainstream' profession, what sort of changes have you noticed, if any, in the way you work and the type of code you see on a regular basis? Also, are there any habits that you've had to force yourself out of recently due to the changing technological landscape? Thanks!
I think there's a lot more women online. Just 5 or 8 years ago I don't recall seeing anything at all about women in tech and the issues they face. So industry diversity has become more of a concern.
I'm graduating soon. Besides the obvious factors like salary and city, what factors and trade-offs are most important to consider when choosing a company to develop software at?
culture, and "be the dumbest guy in the room". Work with other people who are better than you.
Where do you see Rails headed in the future with the announcements made on Rails 5, and if you had the opportunity to go back and start Discourse over would you still choose a Rails/Ember stack as the foundation?
Sam from the Discourse team is much more on top of this than I am. We set up http://rubybench.org/ with support from Sam and Discourse to help make sure Ruby stays fast (or gets even faster, ideally) as it grows.
I will say that one disappointment with Rails is that ease of deployment is a fifth-class citizen in their ecosystem. Because so many Rails teams are businesses selling hosted solutions (including Basecamp nee 37 Signals), they don't see simplicity of deployment as a problem they care about. But we do, since we're 100% open source..
6 points-4 years ago
Do you sit or stand at your desk? Also, what is your favorite productivity hack?
11 points-4 years ago
I sit, I used to be a Safeway Cashier during college and man I got sick of standing up for hours when ringing up people's groceries.
My favorite productivity hack is a clipboard manager -- remember last (n) clipboard entries, have some default pastes you use a lot, and so on. I wish this was built into every OS! Because as everyone knows, coding is just copying and pasting anyway.
7 points-4 years ago
I've noticed many help sites that simply scrape content from Stack and serve it as their own. It must not be a huge priority over there. Why is that?
10 points-4 years ago
it is a priority, report it at meta.stackexchange.com with URLs and it will get handled.
1 more reply
11 points-4 years ago
How do you handle stress during development?
when alcohol is not an option
10 points-4 years ago
I don't have stress during development. I only have stress when our hosted solutions are down!
There can be mild disagreements about direction, but we all realize that Just Deciding Something and moving forward is a hell of a lot more useful than endlessly arguing about it.
6 points-4 years ago
You've made many, iterative improvements to how people can share what they know on the web. Yet education -- both in schools and outside it -- don't leverage the power of this type of software to teach. What's the barrier? Seems like a powerful, untapped opportunity!
6 points-4 years ago
I think schools have their own systems that adapt on their own timelines. It takes decades to change that stuff. Many decades.
Comment removed by moderator4 years ago
3 points-4 years ago
I don't think there's much to worry about -- a person with 10 years of experience as an expert Java coder will be every bit as in demand in 2040 as they are today. Now if you are a ColdFusion expert..
If you want to be extra-safe, become a polyglot and be expert level in at least two languages that have a good chance of not just surviving but thriving in the next 30 years.
1 more reply
5 points-4 years ago-edited 4 years ago
Have you had to work with developers that don't test their code well(particularly with ui's). If you have, Do you know of ways to make developers care more about code quality?
6 points-4 years ago
sell it as a way to make future changes easier. And start with the easy stuff, testing APIs, before doing difficult GUI testing.
4 points-4 years ago
What was the transition like, going from man to horse?
No further questions, I would just like to take a moment to thank you so much for Coding Horror and Stack Overflow. The world would be a very different place without your thoughts and creations in it. I'm excited to see what Discourse brings to the Internet.
8 points-4 years ago
6 points-4 years ago
You've got a new office space to setup, any way you want except for private cabins. How would you set it up? Small team, has devs, designers and sales.
4 points-4 years ago
buy the best chairs you can afford
http://blog.codinghorror.com/a-developers-second-most-important-asset/
5 points-4 years ago
Loved listening to you on the SO podcast. Any plans to start a new podcast?
5 points-4 years ago
Thanks! Not at the moment, but I do occasional speaking gigs, perhaps you will enjoy this one?
http://www.heavybit.com/library/video/2015-03-10-jeff-atwood
6 points-4 years ago
If you had to start a new website from scratch, and expecting to have high traffic, what would be the stack? (language, platform, frameworks, infrastructure provider, anything worth mentioning)
19 points-4 years ago
So many good choices today but...
(obligatory)
anything but PHP, or as I like to call it, Server Herpes.
5 points-4 years ago
At any point did you ever think Stack Overflow would fail; do you recall the moment when you realised it reached critical mass, that you were "on to something"?
14 points-4 years ago
when people were comparing Stack Overflow to Wikipedia with a straight face, that shocked me.
4 points-4 years ago
How did you come up with the myriad of algorithms/tweaks that you built into several parts of SO (and Discourse)? Was it brainstorming, studying existing ones or by trial and error?
Also, are all of them documented anywhere? (I gleaned some from the podcasts)
5 points-4 years ago
To me it's mostly all tweaks -- the really complex algorithms, when we needed them, were usaually built by members of the team much smarter than I! Team members like Marc Gravell, Jarrod Dixon, Kevin Montrose and so many more.
9 points-4 years ago
You've revolutionized the Q&A world and are currently working on the forum world. What's next?
9 points-4 years ago
Forums is a 10 year job, so we have 8 years left. Not thinking much beyond that.
(And according to some VCs, The Web Is Dead, people only use smartphone apps. Plenty left to fight for over here on the sinking web ship!)
6 points-4 years ago
What's your take on the declining question quality on Stack Overflow and Mathematics Stack Exchange?
10 points-4 years ago
follow up with specifics on meta.stackoverflow and meta.math
8 points-4 years ago
If Discourse is the next generation of forums, what do you think needs to be pushed further to compete against traditional forums?
6 points-4 years ago
Not much, to be honest, because traditional forums are so godawfully bad.
Remember how expert-sex-change was the moustache twirling villian for Stack Overflow? That makes your life easier not harder:
http://blog.codinghorror.com/whos-your-arch-enemy/
So yeah, having a clearly defined enemy (and I have never met anyone who actually said "I love forums") is a great way to define what it is you do.
6 points-4 years ago
What happened to the final (original) retired server for Stack? Is it mounted in your study like a trophy?
5 points-4 years ago
I think Geoff Dalgas (Stack #003) has it! Last I heard he was keeping it around as a memento.
4 points-4 years ago
How's currently distributed the monetization of stackoverflow? (with careers, ads, etc). How did you come up with careers? Is it an example of a big pivot?
6 points-4 years ago
Not sure, you'd have to ask other people at Stack about that; I have not been a part of day to day there since 2012. You're right that Careers and Ads are the two big pillars of income, though!
6 points-4 years ago
Have you ever worked with people who resist change, and how did you handle it? Do you have any advice for young developers (like me) who find themselves fighting the "we've always done it this way" mentality?
6 points-4 years ago
Sure, change from within:
http://blog.codinghorror.com/changing-your-organization-for-peons/
And learn to be persuasive by being interesting and useful, not annoying or naggy
http://blog.codinghorror.com/but-you-did-not-persuade-me/
4 points-4 years ago
Do you think you'd be a better or worse programmer today (and by how much) if you hadn't gotten married and started a family? And why?
16 points-4 years ago
Everyone should start a family. It makes you a better person, and I'd take that any day over being a better programmer.
2 points-4 years ago
Are there specific forum topics/subject matters that you would especially love to see transformed and improved by Discourse? Like you look at forums for XYZ topic, and think, damn it would really be meaningful to me to see the quality of online discussion in that area drastically improved?
3 points-4 years ago
essentially all of them. There's a handful of forum software that's "OK", but the vast majority of it is 2003 era awfulness. But this is change that takes a long time because ..
https://twitter.com/codinghorror/status/477542224637353984
2 points-4 years ago
What do you think about VC-funding? Does the extra influx of money compensate the (sometimes negotiable) restrictions on the direction you want your product to go or would you rather tighten your belt and never hear that The Web is Dead again?
3 points-4 years ago
There is a lot of seed funding out there now which I think is great! It means more ideas get tested, more entrepreneurs get a shot at building something amazing!
There is only one downside: http://firstround.com/review/what-the-seed-funding-boom-means-for-raising-a-series-a/
1 point-4 years ago
are you gaming these days?
9 points-4 years ago
Just finished Dying Light which was great and GTA5 which was probably one of the 10 best games I've ever played. Strongly recommended. On PC of course. http://www.reddit.com/r/pcmasterrace/
3 points-4 years ago
Are you still bullish on ruby/rails' future?
7 points-4 years ago
Yes, ruby/rails has worked great for us and the 2.0, 2.1, 2.2 releases of Ruby show strong positive evolution. We push fixes upstream into both. We also launched http://rubybench.org/ to help.
2 more replies
2 points-4 years ago
What would you do to make the transition between coding, when you want features and design, when you try to envision the best product you can? Or in other words, how do you deal with shitty firsts commits fear.
5 points-4 years ago
All my commits are shitty. That's how I think about it. But each one is slightly less shitty than the last one.
I am frankly embarrassed at what we shipped in Discourse 1.0. But that's OK because we just shipped Discourse 1.3 and it's a LOT better!
http://blog.codinghorror.com/we-make-shitty-software-with-bugs/
4 points-4 years ago
Is an ergonomic model of CODE keyboard planned? Something ala Microsoft Natural, or better with two parts?
3 points-4 years ago
Not for a long time, unfortunately the time to build such things is measured in years :(
2 points-4 years ago
Hi Jeff,
As you know, I am a big fan of Discourse, and I am using it for XPRIZE, Bad Voltage, and the Community Leadership Forum.
Question: you have taken on two key collaboration challenges - support and now communication. What do you think is the next major challenge that could benefit from getting Atwooded?
3 points-4 years ago
The main targets for Discourse are
Mailing Lists
Existing Forums
Real Time Chat
Still a fair bit of work to do on 1 and 2 there, and there are many aspects of real time in Discourse right now, but I can see us getting into chat pretty heavily as it is complimentary.
2 points-4 years ago
How do you stay organized, focused, have good clean code, when working on your personal projects (assuming you're the only one working on it)?
2 points-4 years ago
always have at least one other pair of eyes looking at it. That's the only way. The buddy system!!
http://blog.codinghorror.com/whos-your-coding-buddy/
3 points-4 years ago
SO derives its power from the huge community involved with it. How did you (or what did) first attract people to join SO, answer or ask questions?
2 points-4 years ago
Initially seeded with Joel Spolsky (my co founder) audience and mine. But people stuck around because the incentive systems were there to do the right thing (voting, badges, reputation, strict Q&A)
3 points-4 years ago
How did you remain diligent with your blogging pre-stackoverflow. Any recommendations to be on schedule?
3 points-4 years ago
Just set a reasonable schedule -- operative word being "reasonable" -- and try to stick to it!
1 more reply
2 points-4 years ago
What would you say to newer programmers looking for more experience, or simply seeking to become better programmers?
2 points-4 years ago
Read these books:\ http://blog.codinghorror.com/programmers-dont-read-books-but-you-should/
And get out there and Do The Work. Ideally surrounded by people smarter than you. Be the dumbest guy in the room!
4 points-4 years ago
How has becoming a father affected your professional life?
3 points-4 years ago
I have a lot less time to work than I used to.
Being a parent is so SO much harder than anything related to startups or my previous job -- but it's also rewarding in incredibly deep ways. I tried to cover that here:
http://blog.codinghorror.com/on-parenthood/
1 point-4 years ago
Thank you for doing this AMA. Thank you for Codding Horror blog. Thank you for StackExchange. :)
Question: What has been the biggest challenge while creating and maintaining a social network as StackOverflow? Trolls? Lack of participation? Too fast grow?
for Stack, it's all about quality, and everything that word means.. discipline and rules.
I don't know if you noticed, but some people don't like "rules". ;)
The CODE Keyboard is so good. What switches do you use on yours?
2 points-4 years ago
clear and green originally (the ones with strong springs)
see http://superuser.com/questions/366221/differences-between-cherry-mechanical-keyboard-switches
Are you typing this on a WASD Code? What key caps are you rocking?
I was an early user of stackoverflow and I saw it grow. Even when it had considerable size I saw you often editing here and there, fixing little things, typos even sometimes, improving questions and so on. I often wondered if there was any question or answer that didn't go through your head.
How long do you think you read everything that was posted?
Probably at least two years of reading "a lot" of the content on the site, though I took months off. It was much smaller then!
Here's a summary report based on the transcript using the OBT framework:
This report summarizes Jeff Atwood's talk "How To Stop Sucking And Be Awesome Instead" from Atlassian Summit 2012, offering insights on personal growth and software development.
The overarching theme of Atwood's talk is embracing imperfection and continuous improvement in both personal and professional contexts. He emphasizes the importance of public learning, rapid iteration, and focusing on solving problems that matter to others. Atwood argues that by acknowledging our limitations and actively working to overcome them, we can achieve better results and make meaningful contributions to the world.
* Accept that failure is the default state * View mistakes as learning opportunities * Release software early to gather user feedback
* Prioritize rapid improvement over initial perfection * Focus on how quickly you can adapt and change * Seek feedback and adjust accordingly
* Share your work and learning process openly * Contribute to public knowledge bases (e.g., Stack Overflow, GitHub) * Use public platforms to improve the quality of your work
* Ask yourself "So what?" when sharing work * Prioritize tasks that help others get things done * Seek out niche audiences for your specific interests
* Believe strongly in your mission * Approach tasks with genuine excitement * Focus on creating value for others
* Take advantage of online learning platforms * Study open-source code and contribute to projects * Collaborate with others to overcome challenges
* Don't let fear of failure hold you back * Prioritize trying and potentially failing over playing it safe * Learn from both successes and failures
By implementing these tactics, individuals can work towards continuous improvement, make meaningful contributions to their field, and ultimately "stop sucking and be awesome instead."