The Best of edw519 A Hacker News Top Contributor

by Ed Weissman

© 2011 by Ed Weissman. | All rights reserved. Original article is here: http://edweissman.com/53640595 and http://www.scribd.com/doc/52729281/The-Best-Of-edw519

Contents

Foreword

Who am I?

My name is Ed Weissman and I've been programming professionally for 32 years.

Back to top

Why did I write this book?

Because you asked for it.

Back to top

How did I write this book?

I built this book the way any self-respecting programmer would: with lots of shortcuts and software.

Back to top

Chapter 1

Advice to Young Programmers

1. What's it like to be a programmer?

"1. What are some qualifications of a computer programmer?"

Back to top

2. How can I get started in programming?

Oh how I wish I could share the joys of hacking with non-hackers, but that would be like describing the color blue to a blind man. You just gotta experience it yourself. There's nothing like putting something together and seeing it work the first time. Even if it isn't perfect, that first output is better than sex. Still makes make holler and jump out of my chair! (The output, not the sex.)

Back to top

3. How should I learn web programming?

"I want to code the site using PHP and a bit of Javascript, but my skills with these are not exactly up to the job yet."

Back to top

4. Should I try programming if I'm not sure?

I'm not going to try to motivate you, because only you can motivate yourself. I'm just going to share my perspective that might shed some light on your issue.

Back to top

5. How do I find passion for my work?

The reason you're not passionate about your work is because something is missing. Identifying what is missing is your first step in determining where to go from here.

Back to top

6. Is this a good way to get motivated?

"There's a way for me to make some money, but it requires that I setup a fairly complicated spreadsheet to monitor several variables."

Back to top

7. A Computer Scientist who doesn't want to Code

"Am I in the wrong major?"

Back to top

8. What should a mediocre programmer do?

"I'm really just a mediocre programmer with really good domain knowledge"

Back to top

9. Am I burnt out?

You are not burnt out and I have proof. This discussion. A truly burnt out person would not have even bothered. (Kinda like claiming you're over your ex-girlfriend but still wonder what she's doing all day long). The fact that you asked is not an admission of giving up; it is a cry for help. You still really want this.

Back to top

10. How can I find ideas?

Here's an idea: get a job. After a year, you'll have plenty of ideas, maybe even one of your own.

Back to top

11. Should a systems analyst code?

I hate to break the news to you, but "systems analyst" is a job title that's pretty much exclusive to the enterprise world. For the most part, start-ups don't really have a place for "business/system analysts". Let me explain...

Back to top

12. What's the best way to find ideas?

We are constantly hearing advice like "Scratch your own itch," "Find problems close to you," and "Code what you know," which is all good advice for finding a startup idea.

Back to top

13. How do you become a fearless programmer?

I have always been a "fearless" programmer, but never realized it until recently. Here's how:

Back to top

14. Should I still be a programmer?

"I lack the fundamentals of Computer Science, the things every programmer should know: Algo's, Data Structures, Operating Systems an understanding of compilers and being profficient with linux."

Back to top

15. What if my problem has many competitors?

Here's an idea: find "someone else" with a problem and work on that. This works especially well if the someone else is in business, very busy, and has some money. Chances are better that your solution to their problem won't have much competition: if it did, they would have already gone with it.

Back to top

16. What would you advise your younger self?

Find a customer first.

Back to top

17. What was your startup's biggest mistake?

I wrote a code generation system that put together nice tight little apps, with UI, database interface, batch processing, and a report generator. It came in really handy for the simple apps everyone seems to need every once in a while.

Back to top

18. Should I leave a job I love?

"the job happens to be my all-time favorite"

Back to top

19. Planting Seeds or Reaping Harvest?

"I took a step back and immediately saw absolutely no redeeming value of what I had just done, and this made me feel incredibly sad."

Back to top

20. Have I wasted 3 years working for someone else?

Wow! You have had what seems like an ideal first three years after college and all you see are negatives. Have you learned anything in that time? From what you've described, I would think plenty.

Back to top

Chapter 2

Education

21. How much formal education do I need?

"Would my money be better spent on a MBA or MSCS?"

Back to top

22. How important is my degree?

As smart people who deal a lot with binaryness (there "is" a right answer), we place high regard for education, as we should. But please understand that business and academia are 2 different animals with only a little overlap. I have lots of education and lots of practical work experience, and I have to be careful "when" to apply my formal education, which isn't often.

Back to top

23. What should I do in college?

Take science to discover something you're good at. Take humanities to discover something you may love. Take at least one art or music class. Take at least one advanced math class. Join a fraternity. Learn how to play bridge (and play all night sometime). Learn how to play foosball. Get drunk. Learn how to play foosball while drunk. Play an intramural team sport. Get a part time job. Eat something you never tried before at least once/month. Do original research. Take a class you think you'll hate pass/fail. Do 5 minutes at a comedy club on open mike night. Hang out with a professor you like. Do a web start-up on the side. Make a few friends for life. Go to at least one party each week. Pick a major you love whether it makes career sense or not. Get someone who has written one of your text books to sign it. Blog about your college experience. Go to Europe with nothing but a backpack for a month or two. Enter a college talent show. Meet as many interesting (and boring) people as you can. Read good books. Go without shoes for a week just for the hell of it. Get laid. Graduate.

If you don't go to college, exactly when do you expect to do all of this?

Back to top

24. What did you learn in school?

You can find plenty of important life skills to be learned in school if you only look hard enough:

kindergarden - learn how to play nicely together first grade - learn how to read and write second grade - learn how to add, subtract, multiply, & divide third grade - learn how to spell fourth grade - learn how to play a musical instrument fifth grade - learn how to appreciate great literature sixth grade - learn how we got where we are seventh grade - learn a foreign language eighth grade - learn how to type and use a computer ninth grade - learn how the world is put together tenth grade - learn about other people in the world eleventh grade - learn how to balance a job and school twelveth grade - learn how to plan for and dream about the future freshman year - learn how many other kinds of people are out there sophomore year - learn how to chug a beer, fill a bong, and get laid junior year - learn how to stand upon the shoulders of giants senior year - learn how to find your place in the world graduate school - learn how to play nicely together, all over again

Back to top

25. Should a programmer get an MBA?

I honestly can't think of any good reason today why someone who could hack would want an MBA.

Back to top

26. Why don't you think an MBA is important?

"all the things that you would need to learn in a full-time 2 year MBA program"

Back to top

27. How important is a degree in business?

"Instead of students studying Literature, Art, History, and Science they would be going through the motions of a scholar while occupying their minds with things that formerly had been learned at a desk as an apprentice in a dreary Victorian counting house."

Back to top

28. What do you best remember from your MBA?

I understand OP's sentiment. I place very high value on my MBA from the University of Pittsburgh, but for reasons one wouldn't expect.

Back to top

29. What happens at Toastmasters

My experience (other chapters may differ):

Back to top

30. Why should an MBA learn programming?

"You will NOT become an engineer, programmer, or web developer, but you will be able to put a prototype of your idea together and maybe get one or two beta users for feedback..."

Back to top

Chapter 3

Careers

31. What are employers looking for?

When I hire, I'm not looking for a person or a resource. I'm looking for a solution to my problem. Sometimes that problem is big, sometimes it's urgent. But there's always a problem needing to be solved. The more a candidate looks like a solution to my problem, the closer to the front of the pile he/she gets.

Back to top

32. How do you prepare your resume?

"Do you prefer a single page resume or multi-page? If multi, then how many pages of resume you think is good enough to sell you?"

Back to top

33. How to Write a Cover Letter

1. Write like you speak, as if told over coffee or beer.

Back to top

34. How good are most job applicants?

I was recently contacted by a head hunter for a job I thought was worth investigating. I wanted to talk to the company directly, but the head hunter made it clear that Step 1 was always a web-based programming aptitude test, no matter who you were. 20 questions. 18 correct was considered passing. They would only talk to candidates who got 19 or 20 correct.

Back to top

35. Taking an On-Line Aptitude Test

The entire test was about a fictitious language, I forget what they named it. Every question built upon the previous.

Back to top

36. I don't want to take a coding test

"As a programmer currently looking for work, I find this screening process to be draconian and insulting."

Back to top

37. What will you do for a prospective employer?

Simple. Whatever it takes without being uncomfortable about it.

- phone interview with as many people as you like - physical interview until I think you have enough information to decide - share any of my work face to face - on-line third party evaluation (code test, personality, etc.) - review any of your system with you - code for you in person - sharing on-line information (including all hn posts) - doing up to 8 hours of free sample work - provide a referral if they are a better fit

Things I strongly push:

- in depth discussion about the employer's situation - reverse interviewing employees with similar jobs

Things I will gladly do, but only "after" a job offer:

- provide references - drug test - credit check

Things I will never do:

- have a generic resume (every one is uniquely targeted) - post any resume on-line - pay a fee - physical interview with a head-hunter - provide anyone else's proprietary information - "bad mouth" anyone else

Back to top

38. Should I show my code to an interviewer?

Don't ever do this. Just a few reasons...

Back to top

39. Why's it so hard to find good programmers?

"In fact, one thing I have noticed is that the people who I consider to be good software developers barely ever apply for jobs at all."

Back to top

40. Why do coding tests?

"No, coding on the whiteboard or on paper, or even the 5 minute exercise on the laptop is not really coding."

Back to top

41. Why do a coding test on a white board?

"on a white board, no syntax errors, compilable"

Back to top

42. Why do interviewers give code tests?

Here is the dirty little secret about evaluating the code you write in the interview:

Back to top

43. What is an example of an interview test?

Here's one of my favorite examples that can work for almost any language.

Why did you name that variable that name? Why did you use a for loop? How else could you have done iteration? How would you do it with 2 loops? How would you do it with 1 loop? Which variables are global? Which are local? Why? Why did you reuse the variable "i" in the inner loop? (Oops) How can you make it faster? How could you make it clearer? How would you change it if you knew the probability of the original order? How would you refactor this? How would you extend this to do...? Which code would you put in a library for reuse?

You kinda get the picture. No 2 interviews are the same. Imagine the programmers you already know having this discussion with you and how much you'd learn about them.

Back to top

44. How can I do better on interview tests?

"My biggest pet peeve with these types of tests is this: there are a lot of companies out there, and I'm sending out resumes to each one that I can find."

Back to top

45. Should I send a Thank You note?

"...it is 100% necessary to send an email..."

Back to top

46. How can a company blow a job interview?

Top Ways for a Company to Blow a Job Interview

Back to top

47. Why doesn't anyone call me back?

1. There is no position. We're just "feeling out" the marketplace.

Back to top

48. Should I go into management?

As a former developer turned manager turned developer again, a few suggestions:

Back to top

Chapter 4

Work Habits

49. How do you achieve laser focus?

The single most important thing I do to "achieve laser focus and concentration" is to work in such a way that I don't need "laser focus and concentration" to get my work done.

Back to top

50. My Working Guidelines

1. Start with the answer, then work back. 2. Name your variables so that anyone will know what they are. 3. Name your functions so that anyone will know what they do. 4. Never write the same line of code twice. Use functions. 5. Assume the user doesn't know what they want. 6. Even if the user knows what they want, assume they can't verbalize it. 7. The user always knows what they don't like. Prototype often. 8. Be prepared to dig down as many levels of detail as needed to understand. 9. When you're stuck, turn off your computer. 10. Don't turn your computer on until you have a specific task. 11. Beauty is important, but delivery is more important. 12. No variable should be fully contained within another variable. 13. All variables should be at least 3 characters long. 14. Use the right tool for the right job. 15. Almost any tool can do the job. Some are better than others. 16. Benchmark often in order to learn what happens under the hood. 17. Try something that's never been done. It may be easier than you thought. 18. Remember the patterns you've used before. You'll use them again. 19. Keep it extremely simple at first. Complexify as you go. 20. Code every day.

Back to top

51. How to you start a new project?

How I Write Code:

Back to top

52. Why do you use such simple tools?

This question reminds me of the greatest cook ever, my grandmother. She used no technology whatsoever. All of her tools had been her mother's which were probably manufactured in the 1800s. She chopped everything by hand in a wooden bowl. If anyone else helped her with the chopping, everyone at dinner could tell. She never used pencil or paper and measured nothing. She stood in line at the farmer's market, the butcher, or the grocery store and inspected every item. And absolutely nothing I have ever eaten since, in any restaurant or home, has been remotely close to hers. It was magnificent! And I miss it so much.

Back to top

53. How fast do you work?

Very fast. Let me explain.

Back to top

54. What does your IDE look like?

+===============================+ | > | | | | | | | | | | | | | | | | | +===============================+

Back to top

55. How do you work?

BIG disclaimer: I have NO formal training.

* EnterOrders 08/31/10 edw519 * return();

I now have a working programming! You say you want more features? No problem. Let's start enhancing it.

Back to top

56. How do you stay so jazzed?

I've been doing this for 32 years and I'm more jazzed than ever.

Back to top

57. How do you make better use of your time?

"Work effective hours, not necessarily long hours..."

Back to top

58. How do you split your time up?

I'm guessing my split would be more like:

sales & marketing - 10% analysis - 15% design - 5% development - 50% implementation - 10% support - 10%

Testing is not a phase, it's included in everything. Implementation includes deployment, training, and documentation.

Back to top

59. How do you get unstuck?

Some of the things that have worked for me:

Back to top

60. What's most important about work?

I absolutely "love" what I do and can't imagine doing anything else.

Back to top

61. How do you get things done?

I like to keep it simple. My list has 1 item on it. I work on that until either it's done (often) or I struggle so much with it that I decide to change plans (rarely).

Back to top

62. How do you keep track of your thoughts?

It's really simple for me...

Back to top

63. How do you boost your creativity?

The single most important thing I do to "boost creativity and/or productivity" is to work in such a way that I don't need to "boost creativity and/or productivity" to get my work done. This has to be done the night before.

Back to top

64. How do you stay productive?

1. Do not have access to the internet on your work machine. If you don't have 2 computers, get a netbook for < $300 and connect it to the internet. They should be in 2 different workstations, ideally in 2 different rooms. The thinking is that if you have to get up, you'll only do it if it's really necessary. It works pretty well.

Back to top

65. How do you combat work overload?

My single biggest secret for continuing to get things done, often working 12 hour days and 6 day weeks, is to love what I do.

Back to top

66. Why work more hours?

"In addition to the usual work-day schedule, I expect all of the members of the group to work evenings and weekends. You will find that this is the norm here at Caltech."

Back to top

67. Why be fearless?

This reminds me of my first partner in our software/consulting service business. He was absolutely fearless.

Back to top

68. Can programming be boring?

Maybe "boring" is not the best word. Maybe we are really talking about "more fun" vs. "less fun".

Back to top

69. How do you manage your time spent?

My solution? I simply stopped worring about how much time I spent doing or not doing something.

Back to top

70. How do you capture good ideas?

You can have an interesting idea "any" time. Problem is you may not even realize that you just had an interesting idea when you had it.

Back to top

71. How do you get good at programming?

I believe that there are two ways to get good at anything, "push" and "pull".

Back to top

72. How do I rise out of the ordinary?

I have been in your situation many times and have felt the same way; welcome to the rest of the world.

Back to top

73. You're Not the Problem, the Work Is

"Despite all this every time I sit down to code my brain turns to mush, somehow, and nothing gets done. I can always give my managers an intelligent explanation of why progress is so slow..."

Back to top

74. What are the basic modules in your library

1. basic form 2. form with multi-valued lines 3. form with data set (multi-valued parent/children) 4. form with grid 5. tabbed form 6. form with skins 7. batch (loop thru something) 8. batch update selected records in a table 9. batch dump table records --> .txt or .xml file 10. batch .txt or .xml file --> update table records 11. batch file --> create & populate database table 12. cut an email 13. traverse internal tree function 14. traverse file index(es) 15. build html from parameters 16. build javascript from parameters 17. build .pdf from parameters 18. build hp esc sequences from parameters 19. benchmark a process 20. how does that syntax work? 21. which way is faster? 22. batch string parser 23. batch source code search 24. batch source code changer

I have more, but I don't have time to find them right now. OK, I think I'll add:

25. batch parse source code, identify routine for reuse

Back to top

75. Why are you a "caveman" programmer?

Tell you why I don't like syntax highlighting (or any crutch). Ever since I read the chapter about Woz in Founders at Work. The thing that he thought made him so successful designing the Apple II: he knew every single little part of it intimately, like the back of his hand. That struck me like a lightning bolt. So that's how I feel about my code now.

Back to top

76. What tools do you use for analysis?

Pen and paper.

Back to top

77. Every Task is Complete or Not Complete

This reminds me of my hero of project management, Tom DeMarco.

Me: Jim, how are we doing with getting Ansys ported? Jim: Great, I have a bunch of calls into them. Me: How are we doing on the Nastran port? Jim: Wonderful, they said they'll get back to me next month. Me: How about Dyna 3D? Jim: It's going great, we're on their list.

Now imagine how much different that conversation would be if each question started with, "Which tasks are complete and which tasks are incomplete?"

Back to top

78. Why do you love email?

I love email. Why? Because I'm a programmer and I don't want to be interrupted. I like to keep the day-to-day things simple because my work is anything but simple.

Back to top

79. Where do you like to sit in your office?

I prefer to sit with my users. As you can imagine, this concept is met with a bit of resistance in corporate America.

Back to top

80. How important is office space?

Some people advocate: 1) private offices for each programmer, 2) free, nicely catered lunch every day (everyone eats together and bonds), 3) usual internet stuff - comfortable office, dogs, flexible schedules etc.

Back to top

81. How do you pick the best language for you?

I guess this is why I never post in language threads, we can go on and on all day. No one is right or wrong. Anyway, I'll try to address your comments.

Back to top

82. What are the advantages of working at home

Advantages of working at home:

1. Equipment I pick. 2. Furniture I pick. 3. Temperature I pick. 4. Lighting I pick. 5. Music I pick (without headphones!). 6. Clothing I pick (shorts in summer, sweatsuit in winter) 7. Food & drink I pick. (It's really good.) 8. Commute time = 1 minute per day. 9. No gas/car expense. 10. Almost no interruptions. 11. 6 people have my IP phone#. 12. 12 people have my cell phone#. 13. Everyone else --> email. 14. I check email when I'm ready, not them. 15. I set my task list (but still deliver as promised). 16. Can easily run errands any time. 17. Can easily do household tasks any time. 18. Much easier to schedule exercise. 19. See SO much more often. 20. 4 legged creatures make much better office mates. 21. People respect my time much more when I do visit the office. 22. Can more easily switch tasks. 23. Much easier to focus all the time. 24. I get twice as much done.

Back to top

83. Any other advantages to working at home?

- I impose discipline upon others. Since you can't just poke your head in with an "idea", you have to think about it first (imagine that). If your email doesn't include enough data for me, I say so and hit "reply". Same for phone calls and voice mails. Signal to noise ratio increases dramatically.

Back to top

84. How do manage to enjoy working at home?

The most important is the dedicated space with a door that closes. So you still "go to work", just with a very short commute. A few other things that I have found helpful:

- When you're in your office, you're at work, working. - When you're not in your office, you're at home, not working. - Work in 48 minute bursts, then take a break. - Only check email & voice mail during your 12 minutes off. - Put internet and work on 2 different machines (if possible). - I prefer radio over pre-recorded music; it reminds me I'm not alone. - Eat lunch out with a friend several times per week. - Eat home meals away from your office. - If you're local, go in to the office once per week. - If you're not local, go to the office several days per month. - Dinner with SO every night, no matter what you're working on. - A regular schedule of sleep, meals, exercise, and work makes things easier.

Back to top

85. How do you split your programming time?

My experience:

| % of time | % of time | % of time mode | working on | cleaning up | wasted on | my own stuff | others' crap | other B.S. --------------+--------------+--------------+------------ a. 9 to 5 | 10 | 40 | 50 b. consulting | 30 | 40 | 30 c. start-up | 100 | 0 | 0

Back to top

86. Working at the Library

Maybe we're lucky in Pittsburgh, but we have the best of both worlds at the main branch of the Carnegie Library. You can take a tour of where I work 2 or 3 days per week:

Back to top

Chapter 5

The Programmer's Lifestyle

87. What got you "hooked"?

Nothing interesting about my first story: I got a boring cubicle job in a large enterprise that needed 12 programmers to do anything, blah, blah, blah. But I did do some good work for a vice president who remembered me when he moved to another company, which leads to my second story, my real story:

Back to top

88. What Matters Most to a Programmer

The longer I am a programmer, the more I realize that I love my job because of the actual work I do. Period.

Back to top

89. Is programming hard work?

""He is dead, too much hard living!". Too much hard coding would be more like it."

Back to top

90. Why I Do Not Feel Like a Fraud

There were many times when something I did seemed "too easy". So many times I'd listen to the user, understand their problem, and help them solve it with software. No big deal. Many of us have been doing that for years. Then the user would say, "Thank you, thank you, thank you!" "You're so much better than anyone else we've tried," or "This software is incredible! You should take it to market."

Back to top

91. How do I become addicted to programming?

I think that your first step in becoming "addicted to programming" is understanding what building stuff really is: intense sprints of orgasmic discovery separated by long periods of building the prerequisites. Once you understand which phase you're in, you can better understand why you feel the way you do.

Back to top

92. Why do we lose our passion?

"So why is it that as we grow up we lose all the passion, the energy, the will and the strength to keep our dreams alive."

Back to top

93. Why are languages so unimportant?

I am proficient in about a dozen languages, but only use 3. I go back to the SPS, PL1, Fortran, and COBOL days, and would rather chew razor blades than ever use them again. Today, I use javascript on the client and php on the server; I have yet to find a problem I couldn't solve with them.

Back to top

94. How does age affect programming?

Things I am worse at at 55 vs. 25: the 50 yard dash.

Back to top

95. How much does age affect ability?

I am 55 and absolutely do not care what anyone else thinks about it.

Back to top

96. My Typical Day

I am running a marathon, not a sprint, so I frame my long working hours within a "healthy schedule". My typical day:

7:00 am - immediately start coding last night's plan, then email, headlines 8 to 9 - exercise 9 - breakfast & internet 9:30 to 12 - code 12 - lunch & internet 12:30 to 6 - code 6 - dinner with family (home or restaurant) 7 to 9 - code 9 to 11 - computer off, pencil/paper, analysis, design, detail plan for tomorrow

Exceptions: one to two days per week consulting (still keep my night schedule), one day per week with family, occasional sports on TV. I could keep this up forever.

Back to top

97. Are you glad you became a programmer?

One of the best decisions I ever made.

Back to top

98. How much easier is it for an expert?

Layperson who's never seen it: "Impossible"

Back to top

99. The Introvert Factor

There's one huge factor at work, for many programmers. I'm tempted to call it the "wimp factor", but that's too negative, so I'll just call it the "introvert factor". I'm a perfect example...

Back to top

100. What athlete are you most like?

Interesting question.

Back to top

101. Do you need to "sprint" to get things done

Whenever I read a post about the sprint to launch, I think 3 things:

1. Great determination, great work ethic, great job. 2. It doesn't have to be this way. 3. It shouldn't be this way.

I feel fortunate that my DNA is blessed with some sort of internal "governor". I don't know where it came from, but I've always had it. Here's how it works: It stays out of the way when I am enthusiastic about something, allowing me work ridiculous hours and pursue almost anything that looks promising, whether it makes sense or not. But when I reach a certain point, it turns me off, completely. I don't seem to have conscious judgement of what that point is or when I reach it, but when it happens, I know.

Back to top

102. Are young programmers better?

I've been programming commercially for 32 years and in all that time, I have found very little correlation between age and ability to deliver quality software.

Back to top

103. What's the advantage of working for someone else?

I have been in this situation many times before and always struggled with it. Until I figured something out...

Back to top

104. Why is it so hard to find programmers?

"Why is it so hard to find programmers? Are people afraid of joining a start-up?"

Back to top

105. Is there anything good about my job?

What's good about it?

Back to top

106. The Performance Economy

As a young geek, I was often passed over because I didn't "look like" I could do the job. It started with little league and continued on through high school and into the work place. I even quit one of my better jobs because a slicker looking but far less talented peer was promoted into what "should have been" my job.

Back to top

107. Becoming Senior

There's a chasm you have to cross to become "senior", whatever that means. One of the biggest skills you need to learn is not technical. That skill is understanding exactly how to apply our limited resources.

Back to top

108. What should an older entrepreneur do?

Pair their work ethic, real world experience, and life lessons with the passion and technical skills of a 20 something hacker.

Back to top

109. What's hardest about programming?

What a solitary task programming is.

Back to top

110. Where did you learn what you need to know?

Where did the things I need to know to do my job come from?

Mom, Dad, & family 10% kindergarden 5% elementary school 1% middle school 1% high school 1% college (B.S. math) 1% college fraternity 5% business school (MBA) 1% my first mentor 5% my second mentor 10% my users over the years 10% my employers & customers 10% reading 5% other programmers 5% doing on my own 30% ----- 100%

Back to top

111. Why didn't you pursue mathematics?

I left math for a totally different reason and I'm almost embarrassed to talk about it. A little background...

Back to top

112. Should I keep my day job?

Yes. Here's why...

Back to top

113. How do you balance work with your SO?

If you "really love her", then you already oughta know what's most important. (Most important, not the only thing.)

Back to top

114. Have you ever been burnt out?

I have been programming continuously for 30 years and I've "never" been burnt out. In fact, I'm having more fun than ever. I can't imagine doing anything else.

Back to top

115. Why were you such a late bloomer?

"1955 was the best year for geek births"

Back to top

116. What do your parents think you do?

Dear Dad,

Back to top

117. Why are some programmers so condescending?

Condescending feedback says more about the speaker than the listener. It is almost invariably about their own insecurity. This is true is almost all fields of endeavor, not just programming.

Back to top

118. What are the biggest geek myths?

"1. Recognize that people will know you are a geek from the moment they meet you"

Back to top

Chapter 6

Philosophy

119. Who is a superstar developer?

A smart accountant once told me that the answer to "How much money did you make?" is always, "Who wants to know?" If it's an investor, the answer is "A lot." If it's a customer, the answer is "A little." If it's the IRS, the answer is "None."

Back to top

120. Do you think you have peaked?

Not even close.

Back to top

121. Why do you program?

I'm not in it for the money. The money is a barometer of something else. If someone can make money in this business (not that hard to do), then something they wrote is successful at some level.

Back to top

122. What are your hardest learned lessons?

A few of my hard earned lessons:

Back to top

123. What have you learned from mentors?

The most important lesson my mentor ever taught me:

Back to top

124. Who are the real heros of programming?

My customers.

- get the right drugs get to the right people - get the ambulance to the right address - get the right materials purchased and delivered - get the right product built, on time and budget - get the right product shipped accurately and on time - make sure the parts going into that airplane are certified - make sure your insurance claim gets processed properly - make sure they make enough $, so they can keep doing it

I can go on and on, but you kinda get the idea. I love to learn, to optimize and refactor, and to build beautiful things. But what I do pales in comparison to what they need to do. I never forget that.

Back to top

125. Relentlessness

I try to approach not to change the world, not to build cool stuff (well maybe just a little), but to genuinely help people. For a business person, this thinking is difficult and counter-intuitive.

Back to top

126. What if I'm not as good as someone else?

"If you're capable of writing the best web framework in the world in your spare time, chances are you can also create a business at the same time."

Back to top

127. It's Never Too Late

Teen years - flipped burgers & partied Age 21 - graduated college, flipped burgers, & partied Age 24 - touched my first computer Age 25 - wrote my first program Age 27 - touched my first PC Age 31 - wrote my first low level code Age 32 - started my first business Age 39 - started my second business Age 41 - accessed the internet for the first time Age 44 - wrote my first browser-based app Age 51 - found Hacker News Now - having more fun than ever

It's never too late, you're never too old, and it's not whether the glass is half full or half empty.

Back to top

128. It Can't Be Done

"And in my experience when enough people are saying that 'you can't do that' there is an opportunity waiting for you that is proportional in pay-off to the number of people asserting that it can't be done."

Manager: Shop Floor Control is impossible. Me: Why? Manager: Because the base data is so inaccurate. Me: So? Manager: It would take years to fix all the data. Me: What if we turned in on anyway? Manager: The output would be worthless. Me: Wouldn't it show where the base data was inaccurate? Manager: Yes. Me: Then you could fix the biggest culprits? Manager: I suppose. Me: So turning it on would expedite data fixing? Manager: Yes. Me: So it's not really impossible? Manager: Well... Manager: Bug free software is impossible. Me: What would it take to make is possible? Manager: Nothing. Can't be done. Me: What if we added systems testing to unit testing? Me: And then built rigorous test plans covering almost everything? Me: And then enforced User Acceptance Testing? Me: And allowed nothing into production without passing? Me: Would it be better? Manager: Yes, but we can't afford to do all of that. Me: So, bug-free software isn't impossible, just expensive? Manager: No, it's impossible. Get back to work. Me: Sigh. Manager: A web app is impossible. Me: Why? Manager: Because it depends upon data entered by regular people. Me: So? Manager: People are idiots. They enter wrong data all the time. Me: What if we trained them? Manager: Impossible. They don't work for us. Me: What if we made the software smarter? Manager: What do you mean? Me: Data validation. Me: Data reasonableness based upon rules or history. Me: Crowdsourcing data validation. Manager: The data would still be bad. Me: What would it take to make the data good? Manager: Nothing. Impossible. Me: Sigh.

Back to top

129. How perfect do you have to be?

I can attest that trying to hit a homerun and hitting only a single or double is still great.

Back to top

130. Are good programmers born or made?

Made.

Back to top

131. What's your greatest life lesson?

In the past year or two, I have learned my greatest life lesson. As a lifelong high achiever, it was extremely counter-intuitive yet it was right in front of me all along. First, a little background...

- My father died. - My aunt (and best friend) died. - My cousin (who was really like my brother) died. - My 19 year old cat died. - We had our first ever family reunion. - My mother's dimentia has turned her back into a child.

Sure we all have great memories and are busy working at building even better futures, but ultimately it all boils down to:

Back to top

132. Are programmers expensive?

"Hardware is cheap, programmers are expensive."

Back to top

133. How far from shore are you?

I have 2 signs above my desk.

Back to top

134. What is "fear of failure"?

I had a friend in college (I'll call John) who would shoot hoops, play golf, or play table tennis with anyone at any time. But he would never play anything else. He wouldn't play touch football, softball, bridge, or even shoot a game of pool. I could never understand it until I finally figured it out: he wouldn't play anything unless he knew that he would win. How sad, I thought.

135. The Code is the Star

If you want to be famous, go be an entertainer, athlete, or politician.

Back to top

136. How can I be excellent with a day job?

"...how do I get my mojo back and get that level of technical excellence back?"

Back to top

137. How do you put your skills to good?

I've always thought that the best way to put your technical skills to the greater good is through your day job, not instead of it.

- people get the right prescription medication on time - firetrucks and ambulances get to where they're supposed to be - parts that go into cars and planes are properly certified - prisoners are kept in jail - those same prisoners get proper medical care - electronic equipment gets assembled properly and on time - medical supplies get dispatched to where they're supposed to - insurance claims are processed properly - quality data is properly maintained for food items

You don't need to do charity work on the side in order to contribute to the greater good.

Back to top

138. Issues vs. Details

I have a simple guideline for real life interactions with others that carries over quite well on-line, "Deal with issues; ignore details."

Back to top

139. How is an issue different from a detail?

Examples are everywhere. In fact, almost every human interaction is an example. Here are a few off the top of my head:

Back to top

140. Living in Two Worlds

Sometimes I think I'm living in two worlds, the customer world, where everyone is scrambling to get stuff done, and the startup world, where everyone is talking about what the customer world should be like.

Back to top

141. What are the biggest programming myths?

"1.- We're always wrong."

Back to top

142. Don't Pull a Teddy Roosevelt

Five minutes after winning the presidential election of 1904, Teddy Roosevelt vowed not to seek re-election in 1908. Six minutes after, he regretted what he had just said. He tried to return in 1912, but failed and regretted his hasty decision the rest of his life.

Back to top

143. Should I learn or build first?

"My goals with programming is to create web and desktop (mac, iphone) apps if that's relevant."

Back to top

144. What's the big deal with startups?

"What's the big deal with startups anyways..."

Back to top

145. How do you find inspiration?

"Tell me about how you launched a billion dollar company from your apartment with stolen office chairs and I'm there. Tell me how you really like pointers, and I sort of lose interest."

Back to top

146. How to Never Say "No"

I never say "No".

- Projects X, Y, Z will all be pushed back 2 weeks. - Prerequisite Project will have to come first. - weeks overtime for people = $z. - Joe and Mary will have to be pulled away for 3 weeks. - Interim solution will only take 1 week, but won't work. - We will need your top supervisor full-time next week. or, best of all: - We don't know. We need a project to find out.

Note that "doing it wrong" or "doing it quick & dirty" are not options.

Back to top

147. Why I'm a Late Bloomer

My father taught me to read when I was 2 and from that point on, "everyone" encouraged my parents to "fast track" me. I was tested, examined, and prodded by psychologists, doctors, teachers, and "experts". I even passed the preschool entrance exam before my older brother (he's been paying me back ever since).

Back to top

148. How does one turn out the way they do?

The old town drunk died. His two sons, the bank president and the new town drunk were at his funeral. An onlooker, surprised at how different the two sons were, asked each one how he turned out the way he did.

Back to top

149. How important to society is your software?

"Have you found a way to write software that has a real, tangible, positive net effect on society?"

Back to top

150. What is "Intellectual Horsepower"?

I used to be awfully hasty in judging others, "She is really smart," or "He is so stupid". Then I learned alot from my first mentor. He taught that there often isn't much difference between someone who appears smart and someone who doesn't. Perhaps no one spent enough time with them. Maybe they have other challenges, like family, health, or circumstances. Maybe they're just a fish out of water, spending too much time on things that don't interest him. Or maybe they appear dumb because they actually believe that they are. They've been told so many times that they now believe it.

Back to top

151. The Disconnect Between Us and Them

I don't know about the rest of the world, but lots of us sure are in a bubble. There seems to be a real disconnect between what people want to build/invest in and what people in the real world actually need and want to pay for. Just as sample of what I've witnessed in the past few years:

Ask HN: How do you like my file sharing app? Ask HN: How do you like my social app for niche ? Ask HN: How do you like my twitter app? Ask HN: How do you like my facebook app? Ask HN: How do you like my iphone app? Ask HN: How do you like my facebook app that writes twitter apps? Ask HN: How do you like my game? Ask HN: How do you like my photo sharing app? Ask HN: How do you like my video sharing app? Ask HN: How do I monetize my free flashcard app? Ask HN: How do you like my app that helps other hackers to do ? Ask HN: How do I get traffic to my freemium app? Ask HN: How do I get angels/VCs interested? Ask HN: Look what I wrote this weekend! Ask HN: Look what I wrote in one night! Ask HN: Look what I wrote in 7 seconds! Customer 1: How can we sell through Amazon.com? Customer 2: How can we reduce inventory by $300 million? Customer 3: How can we increase conversion from 2% to 4%? Customer 4: How can we use software to reduce energy costs? Customer 5: How can we migrate one app into another? Customer 6: How can we get our phones to talk to our legacy apps? Customer 7: How can we take orders through the internet? Customer 8: How can we get our software package to do ? Customer 9: How can we reduce credit card fraud? Customer 10: How can we increase SEO effectiveness? Customer 11: How can we connect fulfillment and ecommerce? Customer 12: How can we increase revenue? Customers 13-200: How can we increase profitability?

Back to top

152. Weakness or Strength?

"Inability to absorb too many details verbally" = personal fortitude to insist that others show a modium of discipline and occasionally write down what they want

Back to top

153. Why use a framework?

Here's the dirty little secret that no one wants to talk about...

Back to top

154. The Things That Go Without Saying

"1. OO code is less performant than procedural code"

Back to top

155. How do you feel about competition?

One thing bothers me about this whole WorkHard / WorkSmart / BeProductive meme: it focuses too much on "the competition".

Back to top

156. Levels of Pissedoffedness

Level 0: You don't know that anything is wrong. You just think that's just the way it is.

Back to top

157. My Favorite Business Quotes

Attitude determines outcome. - Jim McGraw, COO of Marion Laboratories

Back to top

Chapter 7

Building Stuff

158. How do you collect requirements?

Better to ask first.

Back to top

159. How can clever software help customers?

Just a few off the top of my head:

Back to top

160. What's a minimalist coding style?

"A minimalist lifestyle does not make you a better person"

Back to top

161. How do you build something piece by piece?

I love how everything has a fancy name now. We've been doing StartInTheMiddle / MinimumViableProduct / Prototyping / GetSomethingOut / StepwiseRefinement for years:

Back to top

162. What does a programmer/analyst do?

Long gone are the days when the "system analyst" met with the users, wrote tight functional specifications and handed them to the "business programmer". In any organization that actually gets anything done, the two are now one position, the "programmer analyst", and it's been that way for 20 years now.

Back to top

163. Programming FAQ

What editor do you use?

Back to top

164. Are these things really that hard to do?

"I have not seen these things be successful, therefore they "can't" be successful".

Back to top

165. Is becoming a lazy programmer evolving?

Show me any tool and I'll show you a horrible use of that tool. That doesn't make the tool horrible.

if (m==1){Month="January")} if (m==2){Month="February")} if (m==3){Month="March")} if (m==4){Month="April")} if (m==5){Month="May")} if (m==6){Month="June")} if (m==7){Month="July")} if (m==8){Month="August")} if (m==9){Month="September")} if (m==10){Month="October")} if (m==11){Month="November")} if (m==12){Month="December")}

Senior Programmer:

switch(m) { case 1: Month = "January" break; case 2: Month = "February" break; case 3: Month = "March" break; case 4: Month = "April" break; case 5: Month = "May" break; case 6: Month = "June" break; case 7: Month = "July" break; case 8: Month = "August" break; case 9: Month = "September" break; case 10: Month = "October" break; case 11: Month = "November" break; case 12: Month = "December" break; default: Month = "unknown" }

Lazy Programmer:

MonthNames == ["","January","February","March",...] Month = MonthNames[m]

Back to top

166. How are we making this too complicated?

I have had people come to me with seemingly complex problems requiring what they thought would be complex solutions. Oddly, the elegant solution was often a gross simplification of the complex problem. Often because I just didn't understand the complexity.

Back to top

167. How Stuff Gets Done

| .. d q| where . . where e u| negative . . real v a| work . . work e n| gets . . gets l t| done . everyone . done o i| | . else . | p t| | . . | e y| v . . v r |________________________________________________________ 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 developer quality

Back to top

168. Can waterfall planning work?

If you come to the realization that work in itself isn't evil, you can stop living your life as a waterfall-planned software project too.

Back to top

169. What makes a programmer senior?

Great question. Ask it to n programmers and get n^2 responses. This could easily be the subject for another post or even a book. Just off the top of my head in no particular order:

- understands the problem at hand before writing any code - uses the right tool for the right job - follows accepted standards and protocols without sacrificing creativity - names variables & functions what they actually are for the next programmer - anticipates what could go wrong before relying on a debugger or testing - understands the underlying architecture and how to best utilitze it - never writes the same code twice - never writes in 150 lines that which could be written in 100 lines - Poor code: uncommented. Mediocre: commented. Good: doesn't need comments. - understands the entire code life cycle & writes it to last - has pity on the poor soul who has to maintain it & leaves a clue or 2 - writes flexibly enough to be easily changed before the project is done

I could go on and on, but you get the idea. In general...

Back to top

170. Why are relational databases so important?

Today's action items:

Back to top

171. Is software engineering dead?

"Software Engineering is Dead" is obviously an overly sensational title, but let's look for the deeper truths.

Back to top

172. Why is BASIC still OK?

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

Back to top

173. When should you rewrite?

When it's a house of cards.

Back to top

174. How can you clean input data?

If you're going to "diagnose the state of your data", why not clean it up. There's so much that you can do at entry time, at retrieval time, and at any time between:

- wash non-printable characters - wash illogical (depending upon context) characters - trim leading and trailing spaces - verify check digits - verify lookups - verify against standards (USPS, etc.) - add Soundex, Metaphone, levenshtein, etc. - build a context suitable hash - add Soundex, Metaphone, levenshtein, etc. to the hash - wash standard keywords

175. 10 Signs You're a Crappy Programmer

10. The exact same code is in multiple places because you didn't bother to put in into a common function.

Back to top

176. Technical Debt

Typical way that competent developers end up with technical debt:

Back to top

177. Annoyances vs. Requirements

"One of the annoyances that we have to deal when building enterprise applications is the requirement that no data shall be lost."

- IRS requirements - SEC requirements - SOX requirements - data warehousing - data auditing - delayed undo - business intelligence - trend reporting & analysis - research & development - cooperative databases - industry databases & statistics

"The usual response to that is to introduce a WasDeleted or an IsActive column in the database and implement deletes as an update that would set that flag."

Back to top

178. What can be optimized?

I've always thought there were 2 types of things that could be optimized:

Back to top

179. Why pre-develop?

"I've never seen anyone able to design something away from keyboard that doesn't change significantly once it's written"

Back to top

180. Documentation Belongs in the Code

The advice from this post is exactly what you'd expect in theory and exactly "what not to do" in practice. For one simple reason: the source code is (hopefully) the only thing pretty much guaranteed to survive.

* jeo 02/11/09 Use Ship Date, not Book Date per Sarah in Sales * jrm 04/15/09 Use Book Date to make military contracts balance * msl 08/24/09 Use Ship Date per Joe in Ops (military no longer active) * jrm 12/13/09 Use Book Date per Rick Smith to prepare for new contracts * jrm 02/14/10 Use Ship Date per Rick Smith after Ops meeting * jrm 05/25/10 Use Book Date per Rick Smith until Q3 migration

I know that this is an extreme example, but this stuff happens all the time in commercial environments. How easy do you think it would be for the programmer/analyst to provide background if these comments were not in the source code, but somewhere else?

Back to top

181. What's the best way to assign ID's?

The "Name" issue isn't that much different from the "SKU" issue. (SKU is short for Stock Keeping Unit, aka Part Number or Product Number). I have had to deal with this everywhere that has SKUs. No one does it well, but by slowing down and thinking about it, there's almost always a decent solution.

Back to top

182. Why do you hate bad design so much?

Bad design is "everywhere"...

Back to top

183. Why do you hate old code so much?

Single entry/single exit refers to ANY process, not just functions. Don't underestimate the hell who can go through with poor variable naming. Case in point:

Back to top

184. What makes code crappy?

When it comes to maintaining code, I believe there are 2 kinds of crap: subjective (I don't like it) and objective (it's crap because of these 14 specific reasons).

Back to top

185. How much software is open source?

The Software Iceberg /\ / \ / \ / open \ / source \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / \ / proprietary \ / & for sale \ / \ ---------------------- / \ / proprietary \ / & written in-house \ / \ --------------------------------

Back to top

186. How far should automation go?

"Weak human + machine + better process was superior to a strong computer alone and, more remarkably, superior to a strong human + machine + inferior process."

Back to top

Chapter 8

Software Business

187. Why start your own business?

One day you realize that you only have x days on this earth and y of them are already gone.

Back to top

188. I'm sooo confused...

Release early and often. Get eyeballs, then monetize. Bootstrap. Get basic version working, then add features. Get basic version working, then scale. Get basic version working, then license the technology. Get basic version working, then sell to enterprises. Get free version working, then upgrade them to premium. Get free version working, then sell support. Get free version working, then sell services. Get free version working, then put it on your resume. Raise money, hire wisely. Be first to market. Be second to market. Wait for market to clear, then enter with second wave. Find your niche. Have the lowest price. Have the highest price. Use technology as a barrier to competition. Win a business plan competition. Get into an incubator. Get into a seed accelerator. Find an angel. Find a mentor. Crowd source fund raising. Get press to raise money. Raise money to get press.

I think I'll just fall back on the only thing I know:

Build something people will pay for.

Back to top

189. The Investor Entrepreneur Chasm

Investor: What are you building?

Back to top

190. How can I get started?

1. A small business has problems and knows that there must be a solution, but doesn't know what's possible or where to turn.

Back to top

191. What went wrong in your first start-up?

In my first failed start-up, I did what is now considered standard advice and it was an utter failure (which might explain why I still question all advice, no matter how standard).

- We determined the customers' most critical requirements. - We built what they needed from those requirements. - We installed the hardware and software. - We got them up and running in test mode. - We adjusted, reworked, and went live.

What ended up happening:

- Critical features were invariably missed. I had to add them. - There was always some scaling issue we missed. Always. - Architecture had to be reworked with every install. - My co-founder was able to sell far faster than I could build. - My co-founder was unable to help me build. - Customers became disillusioned. - I collapsed, vowing never to go through this again.

What I now believe:

- Make sure your MVP is enough. - Beware being consumed by customer service. - The first two founders must be technical. - Your architecture must scale, even if your app doesn't. - Always be brutally honest with each other at all times. - Make sure all your failures are recoverable ones. - Plan for 40 hours/week. Stop working at 80. - Never quit. Start over, but never quit.

Back to top

192. Why are details so important?

I remember the time I took 4 enterprise vice presidents from New Jersey to visit a software vendor in Silicon Valley. They had great (multi-million dollar) software and it was perfect for this customer.

Back to top

193. Why are you writing your own software?

Because the guy who wrote this:

Back to top

194. When do you say "yes"?

"So here it is, the most plain, powerful, single word you have to know, and use when managing a project: NO"

Back to top

195. What drives development?

I guess I'm a little bit different than others.

Back to top

196. Why would you not launch?

0. You're truly not ready.

Back to top

197. Does consulting hurt a software start-up?

Consulting does NOT need to be a tradeoff when starting a software startup.

Back to top

198. What do small business owners care about?

Small business owners are always concerned about revenue. Always. They know there are 2 ways to solve almost any small business problem: (a) Work like hell on 42 different things, or (b) Add sales. Find a way to show them new orders and you will get their attention.

Back to top

199. Product/Market Strategies

Not so Good: Build it and they will come.

Back to top

200. Differentiate or Die

"Their service has more bells and whistles, but mine is much simpler and quicker to use."

Back to top

201. Are the any advantages for single founders

Top 10 Reasons for Being a Single Founder

Back to top

202. How does it feel to be a single founder?

Thank you for the great post on a subject near and dear to many of us.

Back to top

203. What should a business guy have to offer?

An overwhelming majority of the time spent on a software startup is at the terminal, coding. If you're not doing that, then you damn well better be bringing something else of value, a lot of value, to the table. Things I'd be looking for...

Back to top

204. Where can I get help starting a business?

I would ask for help from my current employer.

Back to top

205. Why should you fire bad customers?

Wanting it fast, good, and cheap is also a red flag for lots of other little bonuses, such as:

- You will constantly wait for them to make a decision. - It will be your fault they took so long to make a decision. - They will have emergencies of their own making. - It will be your fault they have emergencies. - They will commit to little or nothing on paper. - It's not their fault because they never committed to that. - You think you have specs; they think you're prototyping, so... - You will do much work 2 or 3 times. - They will constantly change priorities. - They will forget they changed priorities, so... - They will complain when a lower priority isn't done. - You won't get paid on time. - You will spend lots of time trying to get paid. - They will always find some excuse to not pay. - You may never get paid. - If it's good, it's because they thought of it. - If it's bad, it's because you suck. - You can't win.

Honestly, I wish we could tattoo these people to save the next developer all the heartache. As soon as you realize they want it fast, good, and cheap, "run" the other way.

Back to top

206. How important are ethics?

This subject comes up every month or so, and every time I give my opinion which is always in the minority. Sometimes I think I'm the only one. So once again, as I prepare to get downmodded into oblivion, here goes...

Back to top

207. Why are ethics so important?

I don't want to debate fine points of ethics, but I thought I'd share a little more background.

Back to top

208. Do you conduct business over meals?

Very interesting topic we don't see much. I'm probably in the minority, but I'd like to share what has worked best for me.

Back to top

209. What's your favorite start-up book?

_Do More Faster_ by Techstars founders Brad Feld and David Cohen

Back to top

Chapter 9

Enterprise Life

210. Willie Sutton would be an Enterprise Programmer

Enterprise software sucks.

Back to top

211. What do enterprise people need to know?

Trivial example of what people need to know in enterprises:

- How many are for one item and how many are for multiples? - Do we own what we owe those customers? - If we do own it, is it in the proper warehouse? - If it is in the proper warehouse, can we find it? - If we can find it, is it undamaged and certified? - If it's shippable, do we have enough labor to ship it? - If it isn't certified, how soon can QA certify it? - If it isn't in the right warehouse, can we move it? - If we don't own any, where can we get some? - Which vendors have it on the shelf? - Which vendors do we have blanket purchase orders with? - Which vendors do we have contracts with? - Which orders can be split to satisfy a partial? - Which orders are for customers already on credit hold? - Which customers are threatening not to renew with us? and (ironically) the most asked question of all: - Which orders must be shipped to hit our quarterly numbers?

I can go on and on; this is just off the top of my head. We like to pick on enterprises, but this is the stuff that happens all the time. So whenever you get gas in your car, bread on your table, new shoes at the mall, steamed milk in your latte, etc., rest assured that "someone", "somewhere" has asked these questions. Questions that were probably answered using some form of RDBMS, SQL, ACID technology (with really good application software on top of it).

Back to top

212. What is a typical enterprise day like?

Yesterday I was up to my earlobes implementing a business intelligence/data warehouse system in a very large SOX-compliant enterprise :-).

Back to top

213. What's is enterprise IT's biggest fear?

In enterprise IT, we have 2 kinds of vendors, those we actively embrace and those who hold us hostage.

Back to top

214. Why do excellent programmers leave enterprises?

There's an elephant in the room: your best people leave because you're not paying them enough.

Back to top

215. Where are there real problems to solve?

"Aren't There Real Problems To Solve?"

Back to top

216. How should layoffs be handled?

1. Help each laid off employee land on their feet, whatever that means for them. This must NOT be lip service, but a legitimate effort. Hire an outsourcing firm, provide resume/career counseling, provide reference letters, or find job opportunities with vendors, customers, or industry contacts.

Back to top

217. How do you test drive packaged software?

I just converted a client OFF of a major enterprise package to something 20 years OLDER and much easier to use. Frankly, I was stunned to see how difficult it was to use and how poorly it was designed.

Back to top

218. Have you ever been a hero at work?

Many times. A few of my favorites:

Back to top

219. Why is SQL so important in enterprises?

Try designing an enterprise production/distribution system where:

- set-ups must be minimized - backlog must be minimized - inventory must be minimized - trucks must be full - warehouse space is limited - deliveries must be on time, but not too early - sales people must have stock on hand - plant absorption must be maximized - bills must be paid on time - down time must be zero - working capital must be put to the best use - stockholders must be satisfied

Say what you want about enterprise programmers, but they get stuff built that handles all of these while academicians screw around with linear algebra and OO castles for years.

Back to top

220. How did ERP get so screwed up?

ERP has deep roots.

Back to top

221. Why is ERP becoming a dinosaur?

I remember leading the test drive of a popular ERP system for one of my enterprise clients. The salesman had never had a prospect force him into a "test drive". My number one rule was "Nobody touches the keyboard except me."

Back to top

222. How tough is on-line retailing?

I know lots of online retailing millionaires. Is it easy? No. Is competition fierce? Of course. Are margins slim? Usually. But if you have passion for an idea, a market, a good plan, and are willing to work your butt off, then there are fantastic opportunities.

Back to top

223. Why would we want to go faster?

I remember a project I worked on in a large enterprise years ago. All of their systems, believe it or not, were batch. Inventory, accounting, order processing - all data was entered into hold files, or worse, filled out with pencil and paper and turned into keypunch. All databases were updated in a large batch overnight. (Today, it's hard to believe anyone ever did that.)

Back to top

224. When can code review be a problem?

A customer recently asked me to look into a program that used to run in 5 minutes but now took 1 to 4 hours. It's used by thousands of people all over the world all day long.

Back to top

225. Can business software be life critical?

As a business programmer, I've worked on quite a few things where there is much more at stake than just money. Just a few of them:

- scheduling & routing of ambulances and firetrucks - scheduling & routing of trucks carrying time-sensitive medical supplies - clean-room quality control of medical devices - distribution of pharmeceutical formularies - medical claims processing & adjudication - formulas & recipes for large batch food processing - medical demographic databases of allergies - distribution of mission critical airline parts with linked certifications - certification of automotive safety devices, including airbags - building contractor specifications, including electrical & plumbing - clinic scheduling

Just because something won't hurt you immediately doesn't mean that it can't hurt you "eventually". You can see from my examples that so much we program does affect the welfare of many, even if indirectly.

Back to top

226. How risky is free software?

Here's the dirty little secret about B2B software:

- Is the website up? - Is the fulfillment system up? - Is the phone system up? - Did we get that order? - Did that order ship? - Did the customer pay? - Did the bank get the money? - Did the material get received? - Did we make payroll? - Did we get the best price? - Where are our revenues below plan? - Where are our margins below plan? - What are our numbers for the day? Week? Month? Quarter?

Then the killer question: "If we don't know the answer to any of the above because of our free software then who are you going to call?"

Back to top

227. What questions would you ask a new boss?

1. Do you enforce policies uniformly? Allowing some customers to bypass channels may seem helpful, but once everyone becomes special, no one is special.

Back to top

228. Why do enterprises stifle creativity?

Just a few enterprise axioms:

- Stuff must work consistently, regardless of who works there. - All data and programs must satisfy corporate audit requirements. - All data and programs must be backed up and restorable. - All technology must be supported, no matter what.

I've seen all kinds of creative solutions to enterprise problems that didn't satisfy these axioms. And you know what happens? Something goes wrong and no one knows what to do.

Back to top

229. Office Pet Peeves

1. Don't sit on my desk. I'm a programmer. My desk is also my dining table.

Back to top

230. User Pet Peeves

Being told "how" instead of "what". Use this API to access that database to do this process. Don't tell me how to do something. Tell me what you want. Let me figure out how. That's my job.

Back to top

231. Do bosses lie?

Just a little personal experience:

BOSS: "There will NOT be a layoff." REALITY: There was a layoff. BOSS: "There will be no more layoffs." REALITY: There were more layoffs. BOSS: "This will be the last layoff." REALITY: There were more layoffs. BOSS: "I will be the next person laid off." REALITY: He wasn't. Someone else was. BOSS: "I am instituting 35 hrs. pay for 40 hrs. work." REALITY: It lasted one pay period before the layoff. BOSS: "The corporate jet will be the next thing to go." REALITY: The corporate jet was still in place after the layoff. BOSS: "Customer XYZ will pay their bill next week." REALITY: Customer XYZ never paid their bill. Layoff instead. BOSS: "Finish this project and we're in the clear." REALITY: The project was finished. Then came the layoff. BOSS: "Indispensable employees will be spared." REALITY: No one was indispensable. BOSS: "We made our numbers. We'll be OK." REALITY: The SEC and IRS disagreed. We went out of business. BOSS: "U.S. manufacturing is solid and protected." REALITY: 400 jobs shipped to Haiti within 90 days. BOSS: "A layoff will be the last resort." REALITY: Layoff + executive auto leases still in place. BOSS: "I will promote you next week." REALITY: The company newsletter reported his girlfriend getting my job. BOSS: "Just help me get through this and I will reward you." REALITY: I helped him get through it. He didn't reward me.

Sorry to say, moral of the story:

Q: How can you tell if the boss is lying? A: His mouth is moving.

Back to top

Chapter 10

Selling

232. How important is networking?

Network, network, network, network, network! (Sorry, I cannot overemphasize this.) "You" are your own marketing department. All the time. No, you don't have to be one of those Amway pests, but don't be afraid to say what you do and to volunteer your opinion about something computer related. You're not doing it to get business; you're doing it because that's who you are. Even if nothing happens now, it could 6 months later. You never stop networking, no matter how busy you are now.

Back to top

233. How do you find customers?

How do I find customers? I just talk to people. All the time. I allow my inquisitive nature to take over. But most importantly, I really care. A mentor of mine once told me that lots of people need what we provide, so it's our responsibility to find them and see what we can do to help.

Back to top

234. What do you talk about with prospects?

Businesses in general are not looking to buy products or services. They are looking to solve their own problems. This is NOT a discussion about your product or service. It is a discovery of the thing that bites them in the ass (that they would do just about anything to get rid of).

Back to top

235. How should I handle a 1st customer meeting

First of all, remember that this is an INTRODUCTION, no more, no less. So take the following words out of your vocabulary right now: don't, but, money, donations, profit, give, bring. You are there to get to know each other, that's all. Be prepared to speak openly and honestly when asked. And be prepared to LISTEN. These are the best things you can do for him.

Back to top

236. How do you tell your story?

"It took me five years to figure out (a) I needed a story and (b) what the story was. It's hard. But one story beats a pile of AdWords A/B tests."

Back to top

237. What Makes the Top 1%?

Selling and marketing, knocking on doors, and touting your products and services "shows you as an idle developer"?

Back to top

238. Buying Cycles

"Six months later, things are still sounding great and not happening. What's going on?"

1. Who is the champion? 2. Who is the decision maker? 3. What is the process for each tier? 4. What should we do the best ensure our mutual success?

The only reason for surprises in the sales cycle is if you didn't bother to ask.

Back to top

239. The Answer is Always "Yes"

Buyers of software products, like small children, hear one word more than any other: "no". "No, it can't be done." "No we don't do that." "No, if you did that it would screw up everything else." "No, that's stupid" It doesn't matter if you're right, all that matters is that you're just another person saying "no".

Back to top

240. How do you crack the enterprise world?

I have been on both sides of the enterprise software sale many times and have concluded that a) it always sucks and b) it's rarely in "anyone's" best interest.

Back to top

241. What are the Spending Authority Cut-Offs?

The #1 question to ask when selling to the enterprise is, "What are the spending authority cut-offs?" Nothing means more.

Back to top

242. How do you close the deal?

You have to get your prospects to think that what you're offering was their idea all along.

Back to top

243. How do I close a sale?

"How to close a sale?"

Back to top

244. The One Excuse Not to Network

I have found most networking (of any kind) to be an inefficient use of my time. At most events, I always had a little voice in my head saying things like, "Instead of being here, I could be building ," or "What could possibly come out of this discussion?" I'm also frustrated because so many events don't have my prospects, but "people who know people who know people who may know a potential prospect of mine".

Back to top

Chapter 11

Just for Fun

245. What was your most creative resume?

If it worked for Leonardo da Vinci, maybe it could work for me. The next time I'm looking for a job, I'll try this:

Back to top

246. Hacker News Front Page 12/31/2019

Hacker News 12/31/2019 new | comments | leaders | jobs | submit login 1. Tell HN: Congratulations Patio11 - first to reach 1,000,000 karma 4 points by iamelgringo 1 hour ago | discuss 2. Ask HN: Any Predictions for the Year 2029? 11 points by DanielBMarkham 37 minutes ago | 8 comments 3. The Apple Tablet to Launch 1st Quarter 2020 (cnet.com) 210 points by vaksel 20 hours ago | 122 comments 4. President-Elect Graham to Appoint Sam Altman to Cabinet (msnbc.com) 14 points by muriithi 4 hours ago | 2 comments 5. Trevor Blackwell's Robot Collects Rocks on Mars (science.com) 143 points by ojbyrne 18 hours ago | 81 comments 6. Tell HN: Hacker News is getting too much like reddit 17 points by jamesjones 6 hours ago | 3 comments 7. Last Land Line Disconnected at Midnight (cnn.com) 6 points by chickamade 3 hours ago | discuss 8. Mark Zuckerman buys Portugal (worldnews.com) 51 points by larryz 14 hours ago | 16 comments 9. How Half Our Staff Telecommutes from Space (joelonsoftware.com) 45 points by jspolsky 13 hours ago | 2 comments 10. No Deadlines Needed After Singularity is Reached (wired.com) 44 points by bxgame 14 hours ago | 28 comments 11. Ask pg: Why do YC teams only get $1,000,000? 19 points by abcklm 9 hours ago | 5 comments 12. KidneyExchange.com has 10,000th successful transplant (yahoo.com) 23 points by phsr 10 hours ago | 7 comments 13. Walmart Acquires Microsoft (wallstreetjournal.com) 76 points by francis24 20 hours ago | 17 comments 14. Baby Communicates from Womb via usb23.7 (scientificamerican.com) 13 points by johnson 8 hours ago | 7 comments 15. Mark Bao Starts 1,000th Start-Up (startupnews.com) 4 points by MarySmith 3 hours ago | discuss 16. unalone accepts Pulitzer for blog (cnn.com) 20 points by bootload 10 hours ago | 11 comments 17. Ask HN: Review my app: NoMoreAds.com (nomoreads.com) 17 points by fred 10 hours ago | discuss 18. Poll: Favorite Language, Ruby 92.7 or C++++++++ 37 points by uafes 17 hours ago | 5 comments 19. Feds Force Google to Divest its Apps Business (news.com) 38 points by pete 17 hours ago | 5 comments 20. Burrito Tunnel Between Calif & NYC Finally Completed (onion.com) 50 points by jose 20 hours ago | 20 comments 21. In 2020 Belize will become the world's second-largest economy (economist.com) 30 points by pg 16 hours ago | 23 comments 22. Ask HN: What was Microsoft Office? 63 points by yahfsh 23 hours ago | 6 comments 23. Wikipedia Available on Gumwrapper (abc.com) 3 points by lapenne 3 hours ago | discuss 24. Boeing Dreamliner Delayed Until 2022 (airlinenews.com) 4 points by mitchel 5 hours ago | discuss 25. Ted Williams becomes 1st to win MVP with 2 different bodies (mlb.com) 5 points by johnson 6 hours ago | 2 comments 26. Ask HN: Review my app (virtualsex.com) 125 points by ghpoa 1 day ago | 13 comments 27. Science: Cigarettes Were Healthy After All (science.com) 43 points by woodyallen 20 hours ago | 14 comments 28. Broadband Finally Reaches Flint, Michigan (cbs.com) 133 points by johnguest 1 day ago | 20 comments 29. GO TO Added to Python, 27 Programmers Jump Out Windows (python.org) 149 points by swert 1 day ago | 20 comments 30. Wipe The Slate Clean For 2020, Commit Web 9.0 Suicide (techcrunch.com) 2 points by nreece 2 hours ago | discuss More Lists | RSS | Bookmarklet | Guidelines | FAQ | News News Feature Requests | Y Combinator | Apply | Library

Back to top

247. The Programmer's Aptitude Test

(Don't scroll down until you're done.)

1. You push your cart through the supermarket a. In a pre-defined manner b. Randomly 2. When watching football on TV, you focus on a. the quarterback b. the defensive linemen 3. You drive to work a. the same route every day b. with a different route every once in a while 4. Which card game do you prefer? a. bridge b. poker 5. To plan for tomorrow's weather a. You check the TV or internet. b. You go outside, looking for signals. 6. Who do you prefer? a. Andrew Carnegie b. Marie Curie 7. You prefer a. your keyboard b. your mouse 8. Which subject do you prefer? a. history b. literature 9. Which would you rather do? a. take a walk in the woods b. a crossword puzzle 10. Which is more important to you? a. time b. space

Answer: If you tried to figure out (game) the test as you took it, you have a programmer's aptitude. If not, you don't, and probably don't even understand this answer.

Back to top

248. If Samuel L. Jackson were a Programmer

"The path of the righteous programmer is beset on all sides by the inequities of the clueless and the tyranny of evil project managers. Blessed is he, who in the name of achievement and solid technology, shepherds the users through the valley of ineptitude, for he is truly his customer's keeper and the finder of lost solutions. And I will strike down upon thee with great vengeance and furious anger those who would attempt to deploy without testing. And you will know my name is zedshaw when I lay my software upon thee."

Back to top

249. The Thread Not Traversed

Kinda reminds me of the time Robert Frost was a technical writer for a day :-)

The Thread Not Traversed TWO threads diverged in a yellow stack, And sorry I could not traverse so And be one parser, long I stood And looped through one as long as I could To where it spawned in the overflow; Then invoked the other, as just as fair, And having perhaps the faster stats, Because it was hashed and wanted wear; Though as for that the data there Had run them into third normal form, And both that session equally lay In objects no instance had trodden class. Oh, I kept the version for another day! Yet knowing how code leads on to code, I doubted if I should ever unit test. I shall be documenting this with a sigh Somewhere many transactions hence: Two threads diverged in a stack, and I— I took the one less traversed by, And that has caused the site to fly.

Back to top

250. Programmers are Practical

A salesman, a project manager, and a programmer are kidnapped by terrorists on the way to a customer demo. The company refuses to pay ransom so they are to be executed. The kidnappers grant each a last request.

Back to top

251. What if I miss a day of Hacker News?

I got invited to an interview, what'll I do?

Back to top

252. Quality of HN Comments Over Time

Quality of Hacker News Comments Over Time | . . | . . q| . . . . u| . . . . . . a| . . . . . l| . . . . . i| . . . . . t| . . . you are here -->. . y| (that's all) |________________________________________________________ S O N D J F M A M J J A S O N D J F M A M J J A S O N D

Back to top

253. Some Things Can't be Duplicated On-Line

Girlfriend: Your wardrobe needs updating. (I love you but you look like shit.)

Back to top

254. A Time to Work and a Time to Play

edw519's thoughts about workaholism (with apologies to the original author(s)):

Back to top

255. A Programmer's Poem

My friends all think that I'm a neb Cause I spend much time here on the web The good things here I do not abuse Except lots of time on hacker news I don't read reddit I will not digg I'm not on facebook My work's too big I do not text I do not tweet I just work on Things that are neat I check email throughout the day But there are no games that I will play My phone's on vibrate I do not chat My work is really Where it's at Knuth and Turing are my big heroes I love to move Ones and zeros My head is down I'm in the mode Don't bother me I have to code Those who need me leave voicemail I'm much too busy trying not to fail I learn on-line and from my schools But I must avoid all sorts of trolls I can't believe I wrote this ode When I have so much I have to code I'm not an addict I have no drug I've got to go To fix a bug

Back to top

256. Little Known Development Methods

Garbage Perpetuation Development (GPD) - You can't believe how bad the existing code base is, but you're afraid to open a can of worms, so everything you add to it is written in the same style. For the rest of your life, you can say, "It was like that when I got here."

Back to top

Original article is here: http://edweissman.com/53640595 and http://www.scribd.com/doc/52729281/The-Best-Of-edw519



