Pascal's Wager and Fixing Bad Code

Objections to SOLID principles (Overheard through the years):
“Why should I have to click “Go to Declaration” on four different methods to figure out what happens?”
“I don’t see how refactoring the code adds business value.”
“We have to move faster; SOLID doesn’t let us do that.”
“All these small methods make it hard to find the code I want to change”
“It’s just a user control. It’s too much work to move the Database logic out!”
“I don’t understand the problem. Why does it matter if the ASCX is big?”
“Using Exceptions for flow control is just how it is; we can’t change it, it’s too brittle.”
“Be careful of making changes; we have customers depending on this code.”
“Fix that for new code going forward, but there’s no sense in fixing the code now.”
“Does it really matter that business logic is aware of the ASP.NET pipeline?”
“What’s an interface? I don’t see how that’s useful.”
Complaints (about the code):
“This code is hard to change.”
“I’ll work the weekend to fix this issue.”
“CODE FREEZE. Don’t check anything in for the next two weeks, so we can test everything.”
“It’d be really nice if it didn’t take so long to build the solution.”
“This code doesn’t make sense, it does too much!”
“We should put in more process to be sure code with bugs doesn’t make it into production.”
Design can be fixed. Code can be refactored. Improving the design of code is like Pascal’s wager: even if you lose, you win. If you hear complaints about improving code, listen for the complaints about the code as well: They’re intertwined.
Author’s Note: All of these objections to SOLID can be attributed to multiple people, some senior, some junior.  I’m not calling out any one company or team or individual: This is an endemic problem in our industry.
Bonus: On Hacker News today, a similar story titled “Worse is Better” is making the rounds.

Glassdoor to users: You can Delete your Account, if you can figure out how

I opened up my inbox to see the following email from Glassdoor:

Changes are left as an exercise for the reader.
Changes are left as an exercise for the reader.

Before this email, I didn’t realize I had an account with Glassdoor, so proceeding to their site (and then resetting my password), I found that I did.
I started to peruse their Terms of Service, and I noticed this line (screenshot):

12. Termination
These Terms remain in effect while you use Glassdoor and, for Members, as long as your account remains open. You may delete your account at any time. We may suspend or terminate your account or your access to parts of Glassdoor, without notice to you, if we believe that you have violated these Terms. All provisions of these Terms shall survive termination or expiration of these Terms except those granting access to or use of Glassdoor. We will have no liability whatsoever to you for any termination of your account or related deletion of your information.

I can delete my account? Great! But how?
In “Me” menu, there appears to be only one applicable option: Account Settings:
Screen Shot 2014-10-10 at 9.13.48 AM
Clicking on it, I see this screen:
Screen Shot 2014-10-10 at 9.14.51 AM
Unsurprisingly, there are no options to delete my account on that page.
I contacted Glassdoor yesterday and again today about deleting my account. Let’s see if they respond. At first blush, however, it seems like Glassdoor is Hotel California.
Bonus: Googling for Hotel California brings up that at one time, Hotel California was taken as a song about Satanism.
Update:  Deleting your account is a manual process (although they never tell you that, or how), but If you contact Glassdoor and ask them to delete your account, they will:
Screen Shot 2014-10-10 at 12.56.57 PM

Make Things. Ship them.

A developer recently skype’d me out of the blue and asked me what ‘best practices’ would make them a developer.
Make Things. Ship them.
Everything I’ve learned as a developer has come from making things and shipping them. In my professional life, I’m batting about .700 for shipping.  In my personal life? .250.
I have plenty of projects in various stages of completion, but none that are actually finished. I get to a certain point and just stop working on them. Here are just a few projects I haven’t finished:
Edit It: An editing tool for Stack Overflow that flags the most recently asked questions that need the most editing work. It uses an editing score to determine which ones need help (misspellings, grammar). It uses a spelling module and the Stack Overflow API.
Stack Stats: If your Stack Overflow profile page looked like (anyone else remember
JSTrek: A JavaScript clone of EGATrek.
OpenGrok support for TFS: (This one is actually ‘written’, just in the other 80% of programming: Debugging and testing)
Restore Gene fixes for AWS: Have you heard of Restore Gene? There are a few fixes I’ve made for that project, but haven’t shipped them.
Freelancer+: (think Uber for Tech freelancing. I know, pulling the uber card is a tiring meme, but who said I was original?)
Out of all these projects, I’ve learned a little; but I’ve always stopped before the crucial learning moment: Before shipping them. Before making them real in the eyes of the outside world.  Fear sets in. What if it sucks? What if people don’t like it? What if nobody cares?  How can I be good enough? I’m not a real programmer.
Every project that has propelled me forward has been a project I shipped.
I learned Perl through maintaining and shipping 10 websites in 10 weeks that used Perl as their backend.
I learned C# and Winforms through creating and shipping a rather crappy tracking system in college during my senior year co-op.
I learned ASP.NET MVC by shipping not one, but two versions of a CMS. One is no longer in use (the maintenance programmer decided to go a different direction), and the other I’ll probably scrap for WordPress, but they’re there. They were shipped.
I learned Python by shipping a CMS add-on for producing regularly updated content about Stocks.
I learned JavaScript and Angular by working with an awesome team to ship, a portfolio management tool written in JavaScript with AngularJS and C# with NancyFX.
I learned how to be a DBA by saying “yes”, and taking over DBA Work.  Now, in addition to programming, I’m quickly becoming a DBA (though more of an accidental DBA).
I learned how to be a dad by having kids.
Shipping teaches.  You can program all day and night, but until that magic moment arrives when you ship, you haven’t taken the next step. You haven’t really learned.