Is there any hope for the ideal bookstore?

Borders – My favorite bookstore

Recently, Borders Group Inc filed for Chapter 11 and closed a local Cincinnati store that I frequented. You can find details about the filing here. As I have explained in a previous post, I love to work at bookstores. They offer a great way to stimulate my mind while also offering the essentials (Internet and power outlets) to do actual work if I want to. We all knew that bookstores, in their current form, were going away. However, because I still love them is why I feel compelled to write about the disappointment that comes with their closing.


Borders Bookstore Closing


Photo by Mark Hillary

I remember hearing about Borders’ attempts at changing the layout and offerings of their stores with a new model. They were supposed to open one such store here in Cincinnati (the Kenwood area) about a year and a half ago. I waited with excitement to see how they attempted to approach a changing information market, but never was able to see it for myself. The construction project became a debacle and Borders, along with other companies, eventually backed out.

Borders realized that people are becoming less likely to purchase full-priced, bound books at the store. The demand is clearly not enough to warrant thousands of square footage for store space. People can both browse the information at the store for free (and then not buy anything) and find the exact piece of information needed online. It is rarely necessary to take a book home, and when it is it can usually be shipped home more cheaply.

Drastic changes must be made to save the bookstores…

Is there any hope?

Is there any way to fix the dying bookstore industry and make a brick and mortar store work? After all, there are an increasing number of people who can work without an office. Does that mean there is a growing market of people who would pay for a workplace at a bookstore?

Let’s analyze the benefits of bookstores versus other similar establishments (e.g. Libraries and Coffee Shops)…

Bookstore Pros

  • Social gatherings – bookstores are a great place to meet with friends to chat.
  • White noise – they realize conversations can get loud, so they try to please those trying to concentrate by piping music over the speaker system to generate white noise.
  • Food is served – is there any reason to leave when there are vital nutrients and caffeine within a cricket pitch from my table?
  • Research – bookstores have magazines and a wide variety of recent non-fiction books with which to perform research. When a topic can’t be found, just go online (with the free Internet service) and try to fill in the gaps.
  • People watching – for those of us who get a little more enjoyment occasionally working around people.
  • Store hours – bookstore hours are not usually as flexible as coffee shops but are much more so than libraries.

Library Cons

  • Less Noise – theoretically, loud library-goers are supposed to be shunned. At least, that’s how they were when I was growing up. Nowadays, with constant cell phone interruptions, it seems people no longer treat libraries as a quiet place for reading.
  • Food/Caffeine prohibited – I am getting sleepy, very sleepy…
  • Obsolete resources – most libraries now have free Internet, which is a savior because very few of their nonfiction books are useful anymore.

My ideal bookstore

I don’t know if it can make any money, but as I alluded to in a previous post, I have an idea for the ideal bookstore.

It would combine all the best aspects of current bookstores, coffee shops, and bars.
 

  • Books/Resources/Internet – this is a great benefit to current bookstores. If a goal is to reduce floor space, then books can be made available in electronic form but can only be accessed from within the bookstores’ provided Internet connection.
  • Coffee/Food/Alcohol – follow a similar formula to normal bookstores but provide alcohol as well. If Chipotle can serve beer, can’t a bookstore too?
  • More people watching – current bookstores are pretty good social environments as they are. However, for those people who want to be around others but not subject to their noise, there is no solution. My ideal bookstore would have social (loud) and focused (quiet) gathering areas. The quiet area would be surrounded by glass walls so as not to carry sound but to enable visibility.
  • Great location – a nice perk would be to have an outdoor seating area or a window that overlooked heavy pedestrian traffic.

As I have never been employed in the bookstore industry, I do not know if my concept could even make money, but that is not my concern. I just want someone to build it so I can live/work/play there.

 

 

Ponderous Thought: I have found that I often get “in the zone” during .NET User Group meetings and Firestarters, which leads me to believe that if my bookstores could somehow incorporate training or presentations that they could be even more valuable!

Were my Microsoft Certification Exams Worth it?

As important as it is for Software Developers to keep current with emerging technologies, it is equally important to choose wisely when it comes to learning them. Indeed, there is a finite amount of time to devote to self-improvement. This truth became evident most recently while I’ve been thinking about my personal goals for the year and trying to decide whether or not I should try to obtain the more recent Microsoft certifications on .NET 4.0, such as Web Developer or Azure Developer on Visual Studio 2010. It got me to thinking about all the time I spent at the beginning of my career getting certified and whether or not that investment has paid dividends.

As described in Contrasting 2 Job Rejections, I was scared about my job prospects after graduating college. Once I got a job, I felt that I needed to ensure I had opportunities going forward and figured getting Microsoft Certifications would be the best way to differentiate myself from the candidate pool. I took 14 tests in less than 3 years, passing 12 and failing twice. I obtained the status Microsoft Certified Systems Engineer (MCSE), Microsoft Certified Database Administrator (MCDBA), and Microsoft Certified Solution Developer (MCSD). You can see my transcript here (enter transcript ID “677424” and access code “insights”).

Some of the tests were paid for by my employer, some were not. I usually studied using the officially released self-paced training kit for each test, but I’ve also purchased expensive training videos, exam crams, used free web casts, etc. I was completely immersed in the certification process. I actually understood all the options and the Microsoft certification path, of which there are now many. Since it’s been almost 2 years since I’ve taken any, I find myself out of the loop, wondering if it makes sense for me to re-enter this world.

At the time of this writing, I have about 7 years of professional software development experience, enough to significantly reduce the amount of studying required to pass a certification test compared to earlier in my career.

Microsoft
Certifications
Expected Study time (hours) Completed Study Time (hours) Practice Tests (hours) Days Studying Hours Per Day Test Date
70-270 (Microsoft
Windows XP Professional)
45 51.00 9.50 35 1.73 February 12,2004
70-290 (Windows Server
2003 Environment)
31 28.00 3 23 1.35 March 10, 2004
70-291 (Windows 2003
Network Infrastructure)
47.5 78.00 11.5 122 0.73 July 9, 2004
Took Test on July 9th 9 4.5 12 1.13 July 21, 2004
70-293 (Windows 2003
Planning a Network)
22 12 4 15 1.07 August 5, 2004
Took Test on August 5th 30.50 8.5 64 0.61 October 8, 2004
70-294 (Windows Server
2003 Active Directory)
21 14.08 4 31 0.58 April 2, 2005
70-297 (Win2003 A.D.
& Network Infastructure)
16.5 16.92 2.5 17 1.14 April 19, 2005
70-228 (SQL 2000
Administration)
55 53.42 5.5 72 0.82 May 27, 2005
70-229 (SQL 2000
Development)
24 23.50 3 151 0.18 October 29, 2005
70-315 (Web Apps with
Visual C# .NET)
34 45.50 13.5 81 0.73 January 24, 2006
70-320 (XML Web Services
with C# .NET)
40 34.00 3 42 0.88 May 2, 2006
70-316 (Windows Apps
with Visual C# .NET)
14 15.42 3.25 22 0.85 June 6, 2006
70-300 (Solutions
Architecture & Req’ts)
12 7.58 9 47 0.35 September 28, 2006
70-553 (Upgrade MCSD to
MCPD : Part 1)
82 16.00 4 428 0.05 April 12, 2008
70-554 (Upgrade MCSD to
MCPD : Part 2)
55 0.00 5 22 0.23 May 5, 2008
Took Test on May 5th still counting 0.00 February 28, 2009?
70-502 (.NET 3.5 –
Windows Presentation Foundation)
14 14.00 6 108 0.19 December 13, 2008
70-561 (.NET 3.5 –
ADO.NET)
12.25 12.50 0.5 18 0.72 May 2, 2009

Would obtaining more certifications be valuable? Looking back, I feel that it was worth it to work towards achieving the certifications that I did. They served 2 purposes:

Milestones for Self-Motivated Learning

By deciding to get certified, I was declaring a personal goal that was tangible and had benefits other than just self-improvement. Many of the topics involved in certification were topics that I wanted to learn about anyway, especially early in my career. For example, I was assigned to my first professional web application project about the same time that I was ready to begin studying for the related certification. Since my professional life and personal interests were colliding, I found it much easier to be motivated to study and create small side projects to practice what I had learned. Better yet, knowing the milestone of passing the test would aid in job security added to the incentive to learn.

Measurable Proficiency

I have heard people in the IT industry downplay the significance of certifications, especially those from Microsoft. Some have argued that the tested topics do not accurately reflect skills that are required to perform well on the job. Others state that the proliferation of “brain dumps,” practice tests that have actual questions from real exams (and are considered cheating), marginalize what the tests represent.

My feeling is that there is a lot of truth to these points. However, employers still seemed to have placed some value on certifications. They may have asked, “If certification tests are so trivial, why doesn’t everyone have them?” I found in the years after my achievements, that it did help in my job search. I believe it exhibited measurable proficiency in topics that I claimed to have experience in. This differentiated me from others who could merely state something to the effect of: “Experience = ASP.NET – 2 years.” The achievement generated conversation in interviews. When asked about my certifications, I got to explain how I set personal goals and followed through on them, learning a great deal of relevant skills in the process. @MikeWo also reminded me on twitter that companies need certain certification requirements of their employees to keep partner status, yet another benefit to hiring someone who has them already or displays the ability to pass them quickly.

Having established that it was worthwhile to get certified in the past, does that mean I should set a goal for future certifications?

It is yet to be determined, but I don’t think so. The direction I am trying to take with my career is not to spend focused time learning the details of the next version of ASP.NET, for example. I have also already built my resume to a point where “getting my foot in the door” is not the problem it used to be. Therefore, the benefits listed above do not quite align with what I want to achieve going forward. I could always afford to learn more about Microsoft technologies, such as .NET, but I already know enough to be effective. I am more interested in learning non-Microsoft technologies these days, like jQuery, Mercurial, or anything Google, so I may be convinced to take a test for a new, interesting technology once it is released and known to have value throughout the industry. Lastly, I believe that the best way to get a great job is a great network and by establishing the ability to get things done.

Time to buckle down and get things done then…

Exam Tip: No matter how much you study before-hand, always cram: it’s important to have that info in short-term memory going into the test. It’s also highly beneficial to gauge your readiness by taking a practice test with a company like Transcender.

How to Make a Whiteboard Wall for your P90X Workout Calendar

A computer scientist is writing about health, so I know you’re thinking this must be one of those New Year’s Resolutions posts in which I talk about how I need to get myself into shape. Is that what this post is all about?

While we’re discussing it, here are my health-related New Year’s Resolutions for 2011:

– Lose weight to less than 205 lbs by end of February

– Reduce cholesterol by the end of January

– Run a half-marathon by August

– Dunk a basketball in a pickup game

 

Yes. And No.

You see, I’ve already begun to whip myself into shape since the 2nd half of 2010. Specifically, I’ve been using the P90X workout routine and have been pleased with the results. Sure, recompositioning fat into rock-solid muscle may seem like the end goal, but for analytical folk like you and me it is not the only reward. My wife allowed me to dedicate an entire wall in my workout room to track which exercises I completed, how many reps, how much weight I used, and my goals. It’s a real-life data dashboard!

If you share my excitement for tracking progress, doodling, or staring at reflective surfaces, you may want to know how I did it. p90x whiteboard wallHere’s how:

  1. Determine a wall in one of your home’s utility rooms (e.g. office, workout room, basement) which is segregated from normal clutter.
  2. Purchase Dry Erase wall paint. I used Rust-Oleum and I recommend it. The price was right and I have had 0 complaints.
  3. Follow the directions on the label of your paint to apply it to your wall. The highlights of my process were:
    1. Prepare my wall by sanding rough spots and wiping off dirt.
    2. Dry Erase paint comes with 2 separate cans of different paint mixtures. I had to mix them both together before the next step.
    3. Apply a coat of the mixture as you would with any paint. I used a roller and a brush after taping the edges of my wall.
    4. Recoat if necessary. In my case it wasn’t.
    5. Wait a few days before writing on the wall with Dry Erase markers.
  4. Next is the part where the data comes into play… Look over your P90X workout calendar and map it out on the wall. Leave space to fill in the blanks for each workout.
  5. As you go through each video, especially those involving lifting (e.g. Chest & Back, Shoulders & Arms, Legs & Back), Tony will tell you to write down your results. Take action on his advice.
  6. Each week you can look back on what you have accomplished previously as your baseline. Since we’ll be getting better and stronger every week, our baseline changes frequently. A white board is the perfect vector for storing our results!
  7. After a couple weeks of doing the exercises, I recommend setting goals for each exercise. For my whiteboard, I used blue marker to record my most recent accomplishment and red marker to set a goal for myself at the end of the 13 week schedule

    Results and Goals.

 

The only step I left out was purchasing the P90X videos if you have not yet. Otherwise, that’s it!

I’m still learning a lot about working out and eating right. Hit me up in the comments or on twitter if you want to discuss.

Looking for extra motivation? In Tim Ferriss’ 4 Hour Body, he shares a story of Richard Branson, the ridiculously successful head of Virgin Group, and how he remains productive. His short answer: “Work out.”

Many of us have a habit of lounging around when tired, especially after a long, stressful day of work. I know this can be a default activity for me at times. However, we must all acknowledge that the best way to reach our goals, both physically and mentally is to work out if there is still time in the day. I realized this on my own a couple years ago, that if I force myself to get my blood pumping, even by doing something as simple as jumping rope for 5 to 10 minutes, I will feel re-energized and ready to be productive. Keep that wisdom with you when thinking about lying on the couch and turning on the television.

Additional Links for setting up your workout room:
http://www.beachbody.com/product/fitness_gear/p90x_gear/p90x_chin_up_bar.do (But I recommend getting a cheaper option)

Contrasting 2 Job Rejections

Job interviews have 2 purposes: the 1st being the need for a company to evaluate a job candidate and the 2nd being for the candidate to evaluate the company. Far too many interviewers forget the importance of the latter.

In my experience, I have several interesting stories regarding interviews from both sides of the table (candidate versus interviewer), but 2 personal stories stand out from my job search. Both of them involve the same outcome, rejection. However, the 2 companies could not have been less similar in the process that got us to that outcome.

(Photo by bpsusf)

Job Search 1.0

After graduating college years ago, I did not have a job lined up for me. To overcome this, I admittedly began applying to jobs with brute force. My resume got fired off to any ad in the newspaper, whether I was qualified or not. Being inexperienced with the job search process, I was also fairly unorganized. I commonly received follow up phone calls from companies that I didn’t recognize. One such company was headquartered in Westlake, OH. Despite my confusion about how I applied, my lack of knowledge of the company, and general stumbling behavior, I was invited to a job interview for a technical support position.

At the time I was naïve. I had prepared for behavioral interview questions such as, “what was an example of a conflict you have resolved?” but I had not prepared for a technical interview. I did not realize that this type of interview would be a comprehensive test of everything I learned during school. As a result, the interview did not go well.

I failed to answer 70 to 90 percent of the questions delivered to me. I was in way over my head and so were the interviewers. There were 2 men on the other side of the table, firing basic undergraduate level computer science questions at me. With each of my failed attempts, they reacted with impatience. I could see them trying to hold back the disgust and frustration from such a miserable process. Near the end, I asked a canned question: “what are the next steps?” While 1 of the men tried to be professional, starting with “we’ll get back you if…” he was immediately cut off by the more senior employee with the statement “I don’t think so.” I suppose that was his idea of a rejection letter.

Clearly, I did not make a good impression with this company. Had I realized that I could not simply go into a technical interview and wing it or had I done some review of the syntax, definitions, and algorithms from my previous terms I would have passed the test. I just hope I didn’t end up on The Daily WTF. The result was demoralizing, in a good way. Just as clear as my incompatibility with the position was the unprofessionalism of the company. My embarrassment motivated me to get my act together. After I did, I knew better than to send this particular company another job application.

Job Search 2.0

Much more recently, I applied to Fog Creek Software with an excellent cover letter and resume. In case you have not heard of Fog Creek, it is an exclusive company in New York, known for hiring elite programmers. The CEO is Joel Spolsky, about whom I have referred multiple times on this blog. Perhaps I should not have been surprised, but I received a cleverly written response in the form of an email inviting me to have a technical phone interview with a Fog Creek developer. I became extremely excited and began to prepare for the interview immediately. Because Joel is so open about his interviewing techniques, I knew that I had to re-learn the C programming language, so I spent the few days I had reading as much as I could and writing some sample programs.

Despite my preparation, I struggled mightily during the interview. I fielded difficult questions designed to eliminate a high percentage of applicants that were qualified based on their resumes. The questions were not completely foreign to me, but I wasn’t able to internalize C programming to the degree I needed to in order to answer these abstract questions quickly. Consequently, I received a pleasant rejection letter about a week later.

In contrast to the 1st story, the interview with Fog Creek was a much more enjoyable experience. Throughout my struggles answering questions, the interviewer remained patient and calm. He seemed to grasp the importance of being a professional vector for the company to the outside world. When I struggled, he rephrased the question. I am pretty sure he even ended the interview early, but I have no problem with that. Why should he continue to waste either of our time? Despite ending the technical part of the interview early, he thoroughly answered all my questions about the company and sent me off with a cheerful blessing. As a result, I still speak highly of Fog Creek Software and would recommend other software developers to apply there.

Lessons Learned – Job Interview Tips

When performing job interviews, I urge you to place importance on making a good impression for your company to all job candidates. Being professional and courteous leads to positive word of mouth, which in turn leads to a better array of candidates. To remind my readers and myself of this goal, here are some tips to remaining professional during a candidate’s train wreck:

  • Be patient with failing interviewees. Let them answer questions at their own pace. At a certain point, try rephrasing the question before moving on.
  • Smile and be friendly. Think of the interview as an opportunity to have an intellectual conversation. There will likely be something you can learn from it.
  • Finish short if necessary, but do not do it abruptly. Find a good breaking point after a fair minimum amount of time (for me this is usually 15 to 20 minutes). Politely mention that your questions are finished but that you are open to fielding questions from the candidate. Field those questions as you would to any candidate.
  • Send a rejection letter to rejected candidates. Do not just remove them from candidacy without informing them.

Analyzing my Choice of Attending Ohio State

It’s that time of year

We are into the heart of college football season which means I have a date with the television every Saturday around noon to watch my Buckeyes. Can I blame the inconsistency in my blog-posting schedule on football season? I suppose so, but I made a 2010 football season resolution to not make stupid excuses.

In spending so much time thinking about the Buckeyes football team, visiting campus, and discussing school among friends I have recently begun to reflect upon The Ohio State University and whether or not it was the best choice of college for me. While in school, I generally knew that those would be the best days of my life. Ohio State meant a lot to me and I had even gone as far as referring to it as “the Greatest University in the World.” Looking back, it was definitely an excellent choice, but could I have done it better?

To properly analyze the decision means to review the benefits and drawbacks to my personal career and education situation.

The Great

Let’s start out with the obvious. Ohio State has an elite athletics department. At the time of this writing, it is one of the few universities to win a Division I championship in each Baseball, Basketball, and Football and is the reigning 5 time Big Ten Conference football champion. Although it may not seem important in supporting my career, the prestige of the program has made it convenient to connect or keep in contact with fellow alumni. I have yet to meet a fellow Ohio State graduate who did not care about the direction of the football program, providing for a useful icebreaker.

Speaking of alumni, did I mention the sheer size of Ohio State’s Undergraduate class? It is routinely ranked in the top 5 in the nation, sometimes as high as 50,000 students enrolled. Such a high number of students yields a high number of alumni, many of whom have taken jobs at leading companies or have established networks in remote locations. Fellow alumni are more likely to network and pull favors than some other successful stranger.

(OSU alumni have a tradition of taking pictures of this O-H-I-O formation in exotic locations)

(The Columbus Skyline – by voteprime)

With Ohio State being as huge as it is it must accommodate a wide range of needs. The University offers diverse majors, libraries, science & computer labs, and recreational facilities. Essentially, if you can think of a resource that should be available for students, you will be able to find it somewhere on campus. The problem is that many students do not realize what is available until it is too late. Perhaps a more specialized school would not run into this issue.

When I attended OSU, it was ranked respectably in its Computer and Information Science (CIS) department. The program provided a fundamental knowledge of theoretical computer science concepts. According to this site, Ohio State’s Engineering & IT ranking is 157 in the world.

A subtle benefit to Ohio State is the location. Although Columbus, OH does not boast many geographical advantages (it is flat with limited bodies of water), its development has been well-planned and it is of considerable size. Contrasting Ohio State with other schools, like Ohio University, which is clearly the primary attraction of its city, residing in Columbus enables students to find quality careers, co-ops, and interests without traveling a great distance.

The Disappointing

I am proud to be a Buckeye and I still live in Ohio. However, I would like to think that I am objective about the school’s educational program. In my time on campus and afterward, I have met some truly elite individuals. Unfortunately, the curriculum is not as challenging as it is at prestigious academic institutions. Therefore, the average undergraduate student is not very motivated. To draw on a previous point, students at Ohio State have incredible opportunity for success due to vast resources, but in order to take advantage of opportunities requires serious self-discipline.

During my early years at Ohio State (99-01), it was disappointing to realize that the school was more well-known for “riots” than for any of its brilliant research. It seemed as though any off-campus party involving multiple houses quickly turned into an angry mob throwing beer bottles at COPs. Going to class the next week I could hear the frustration in my professors’ voices that their hard-work had translated into negative national headlines.

My biggest regret about choosing Ohio State involves the aforementioned limited geography. Ohio State is located in Columbus, Ohio, right in the middle of the Midwest. The following big cities are within a 3 hour drive: Detroit, Indianapolis, Cincinnati, Cleveland, and Pittsburgh. While convenient for those wanting to visit 5 NFL teams within a short drive, it is not exactly close to any technology hotspots such as San Francisco, Seattle, Boston, nor even Chicago. Additionally, the region lacks exciting recreational activities. There are no beaches, mountains, nor warm days in November. If I could search for colleges again, my new strategy would be to at least research gorgeous campuses in exotic locales. I have heard Pepperdine University is one example of such a beauty as opposed to the “concrete campus” that was my destiny.

 

Having graduated and entered the workforce, I look back on my decision to attend Ohio State with satisfaction. Although there were some drawbacks, its size helped me stretch my capabilities socially and introduced me to a vast network of professional connections. I wouldn’t be the same person if I were not a Buckeye.

5 Career Lessons Learned Planning My Wedding

My wife and I were married in July two years ago (2008). We had a fairly large wedding, by our standards, which involved many nights spent planning, collaborating, and organizing. The list of tasks that needed to be completed seemed never-ending. To manage them, we used a website that listed them out month-by-month, letting us know when our progress had slipped (e.g. having not yet chosen our center-pieces 8 months prior). Little did I know that we did not have to do every little thing that the website specified…

Looking back on that wonderful night, I realized that I learned a great deal from planning such an important event. Much of what I learned will help me in my career. Below are the highlights.

1. Prioritize

Often times in America, planning of a wedding begins moments after the excitement of the engagement quells. Coming from a male perspective, this is amazing. We spend our time planning to “pop the question”, and then as soon as we do, it is as if the floodgates of wedding expectations and desires open right up. From that point forward, the giant list of preparative tasks stays at the fore-front of our minds. Ever-growing. Never shrinking.

As overwhelming as the list may be, it can be managed through prioritization, by sitting down with your fiancee and discussing those items that are the most important. This exercise leads to a plan that can save you money and time, by realizing which items can be purchased for less money, which items can be delegated, or which items can be left uncompleted.

In addition to the list of known tasks, there will be issues. For example, the color of my vest that I wore on my wedding day was incorrect. It was white when it should have been ivory. I, of course, didn’t notice until it was too late. It was not a big deal. Things like this will happen in weddings and in your career. As long as it does not affect your top priorities, do not let it stress you out. There will be a time and place to resolve such issues. That time is not during your wedding day.

Think of this scenario in the business world. You and a team are working toward a Big Hairy Audacious Goal and it feels as though processes are becoming disorganized. You feel like you have to do everything or you will be a failure. This is simply not true.

Take a step back and evaluate the most significant goals and tasks with your core group. Focus. Make sure to proceed with only those items that will bring progress to your primary goals. If you can achieve them, you will be successful even though things may not be perfect.

2. Outsource

Most people, when planning for a wedding, still have a life to live. They have a full-time job, a social life, family obligations, school… Time management becomes crucial. When wedding planning, you must realize that your time is important, because only you (and your fiancee) can make many of the important decisions. Instead of performing all the work yourself, you MUST delegate/outsource. In my case, I thought I wanted to have complete control over the DJ’s playlist. However, I soon realized that I just wasn’t going to be able to create a complete playlist and also accomplish my bigger goals. “Leave it to the DJ,” I said. “He is a professional, afterall.”

Hopefully you will find that family and friends offer to help with wedding preparations. Perhaps your initial instinct is that you do not need it. I advise you to find a way for them to help. Practice your delegation skills. Remember, your time is critical. If you can relinquish a little bit of control to allow someone else to help, you will have more time to work on the truly important aspects of your wedding. Besides, if you try to do everything yourself, it’s not going to turn out perfectly anyway, because you will run out of time. At the end of it all, make sure to let your helpers know how appreciative you are that they were able to contribute.

At the workplace, how many times have you found yourself working on a rote task because it was easier to perform yourself than to teach someone else how to do it? Please discontinue this dangerous habit! If you are working toward a tight deadline, you must have enough time to do those things that only you can do. Delegate. Outsource. Allow someone else to concentrate on those tasks that you work on just to get them out of your way. He/She may even be able to do them better than you can.

3. Overcommunicate

An important aspect of outsourcing is communication. Most likely, the biggest reason we avoid delegation of tasks is because we fear that the task will not be completed satisfactorily. This is a valid fear. Vendors, colleagues, and friendly helpers all have their own ideas and biases. Without appropriate direction, they will run with them until told to make changes (which will be too late).

Therefore, when planning a wedding or directing a project in our careers, we must overcommunicate. We cannot assume our helpers know what we want. You may not even know what you want right away either. Just make sure to follow-up with them. Express your concerns clearly and with objectivity. Explain how your tastes have changed. Remember, in most cases, you are dealing with professionals. They are skilled in taking an idea and creating something tangible. However, they cannot read your mind.

4. Disrupt Your Comfort Zone

This one is the most important.

There were many, MANY things that I had to do for my wedding that I simply did not want to do. In other words, if I could have avoided uncomfortable obligations, such as giving a speech at the Rehearsal Dinner or having to entertain during the Garter Toss, I would have. However, I would not have realized at the time how much I was missing. Looking back, the uncomfortable times created the memories and stories worth re-telling. Additionally, the uncomfortable efforts gave me experience doing things I was not used to, ultimately giving me more confidence no matter the endeavor going forward.

Ever since that night I have made a concerted effort to try and push myself outside my comfort zone. The book The Think Big Manifesto refers to this as “Getting Comfortable with Discomfort.” I admit, I have not made as many strides as I would have liked in this area. Why? Because doing things outside your comfort zone is HARD! By definition, it means doing things that are uncomfortable. Then, once you have mastered those so they are comfortable, finding new awkward things to do. Without a catalyst or a deep-rooted goal, most people will slip into a rut of comfort.

In the case of a wedding, finding that goal can be simpler. It might be to “have the best time possible,” to “show our family how much we love them,” or to “actually look half-decent while dancing.” In our career and our life, it is much more difficult to find motivation. I encourage you to do some “soul-searching”. Determine what it is you truly want from life and begin moving forward by living outside your comfort zone. If you cannot settle on a worthy goal, I recommend making a list of things that you feel like you should be able to do but have never done.

Here are a couple things on my list:

  • Sell Something
  • Talk to a Stranger in a bar (Sober)
  • Babysit
  • Medium-Sized Home Improvement Project

Perform one a week. Perhaps it will open your mind to new possibilities. I will post my progress on this blog as well.

5. Connect

There is no better time to let someone know how special they are than right now. Ok, so this isn’t necessarily career advice, but it does come into play. If you appreciate someone, let them know. Right now. In person. You will be glad you did. You will feel better about spending many hours at work knowing the people you love know you love them.

Some people find this difficult, including myself. If you are one of these people, or for some other reason you would like to say “Congrats” or “I’m Sorry” or “I Love You,” but you can’t or don’t know how, browse to my website, Viternus, which is exactly for situations like this. Create a message that can be delivered at a later date. Perhaps that will take off some of the pressure.

Conclusion

By the end of it all, we had made mistakes and left things unfinished. But guess what! I still consider the event a success. As long as our core group (i.e. my wife and I) are focused and aligned with what we want, it is possible to have success even though everything is not perfect. I will strive for this type of success throughout my life and career.

Why are there no programming books at the bookstore?

This post was written over a year ago based on frustrations of not finding good .NET materials at the bookstore. It is being published as a bonus post now after finally completing it.

A little about me:

– I live in the Midwest
– I like to program at bookstores
– My favorite band is Huey Lewis & the News

I like programming at bookstores. Armed with a laptop and earplugs, I find myself at my most creative and in flow when I am around interesting resources. Browsing a few technical or business books, my mind quickly reaches hyper-active problem solving mode. To play off the ancient proverb, when I find my hammer through reading, I immediately notice all the nails I have to pound.

In the Cincinnati area, Barnes & Noble and Borders are the most predominant bookstores with Joseph Beth coming in a distant 3rd. Bookstores are nice because they are open relatively late (compared to libraries), have coffee bars with Internet, and have seemingly infinite resources on a variety of topics (as compared to Starbucks). At least, they “had” a variety of resources. It seems over the last couple years these large scale bookstores have been phasing out the acquisition of new tech books. It used to be that I could go to the bookstore and utilize the books to do legitimate technical research. Now, it seems that only the heavily mainstream books are on the shelves.

In late 2008, when I should have been seeing books about the Entity Framework or Sync Framework soon after they came out, I did not find anything except on Amazon. The lack of books on new .NET frameworks continued when ASP.NET MVC came out and no physical copies could be found. My strategy used to be to check Amazon to see when new books were about to be released and then to travel to Borders on that day to perform the research I needed. Or sometimes I would browse the books at the store to determine if any were worthy of buying. For those that were, I then bought them on Amazon because they were much cheaper.

Unfortunately, the trend has continued. I am hard pressed to find any interesting books (or those that I have not read already) in the “Computers – Programming” category. And this used to be the key differentiator to me from the coffee shops on every street corner.

I realize that I may not be the ideal customer in the eyes of the bookstore. I have learned not to buy any books from them and commonly use the free Internet provided. However, I at least make a conscious effort to purchase an overpriced beverage every time I abuse the store’s resources.

With the above changes comes my growing disappointment. I miss having a central place to do research, skim random books, surf the Internet, energize myself with caffeine, and watch people. I don’t believe I can get that just from the Internet at home or a coffee shop. Additionally, I prefer to learn through reading books versus through the Internet, mainly because they tend to cover a wider spectrum of knowledge. Usually, a book goes through the basics to the intermediate and then the advanced. Books tend to contain straight-forward walkthroughs, executive summaries, and theoretical concepts. In contrast, the Internet tends to have very specific blog entries that solve a particular problem. When researching this way, I am forced to “jump right in” instead of following a complete tutorial targeting varying experience levels. It can be difficult to find high-level descriptions about a technology and why it is useful.

Is it useful to complain about a problem for which I am not offering a solution? I don’t know. I assume the bookstores are not making very much money by filling their inventory with programming books. Or perhaps authors are no longer producing content in the form of physical page turners. I just hope they know that the technology and programming books were a small part of the overall experience which caused me to buy their coffee. I guess attracting my “type” wasn’t worth it for them.

Perhaps when I win the lottery, I’ll unleash my solution to the dying bookstore industry. More on this in a later post…

Personal Benefits to Taking the Bus to Work

Take the Bus to WorkNot many people in Cincinnati take the bus to work. There are a couple reasons for this. For one, the city is not that big so even people who have purchased homes in the ‘burbs can drive into town in less than 30 minutes. Secondly, there are not many routes scheduled, especially outside of commuter hours, so if someone’s schedule is anything different from the standard 8 to 5, then taking the bus would be inconvenient.

Why do I do it?

When I got my job downtown I was determined to begin taking the bus. The closest stop is ridiculously convenient for me. It is less than a half mile away and I pass my mailbox and a grocery store on the way. I don’t take it every day, but about 40% of the time. There are some obvious benefits:

  • Extra exercise
  • Good people watching
  • Save money
  • Reduce stress on my car
  • Environmentally conscious
  • Learn another valuable transportation resource

The biggest benefits

I neglected to mention the 2 biggest benefits in the above list because I want to write about them in more detail.

Time

The bus is great when it is not crowded, so recently, I have shifted my work schedule to be earlier so that the bus ride is less likely to be crowded. Instead of paying attention to driving, I can zone out, sleep, read, text, get on twitter, etc. I get back my commute time.

This is important because lost time is an important issue. The concept has been analyzed many times in other sources, but as developers our time is valuable and easily monetizable. Even if we have day jobs our time outside of that could be spent freelancing, earning significant dollars per hour. Therefore, if I can save an extra hour a day by not having to drive myself to work, then I have saved X dollars, by freeing up that time to work on something else, like this blog post. Now, if it were only socially acceptable to attend work in pajamas, I wouldn’t have to spend time ironing. Wouldn’t that be nice?

Speaking of being productive, I could only imagine what more I could do with my time if the buses I took provided wireless Internet. Then I could actually do billable work. I know that other cities’public bussing systems provide this, so why can’t mine?

Flow

Another great benefit I have noticed is that by starting to exercise my mind on the bus, I am ready to work by the time I get to my desk in the morning. I do not need to “wake up” for an hour once I get there. I don’t feel the need to catch up on twitter, blogs, or emails because I have already done that on the bus. It is a way to “prime the pump.” By consuming some slightly work-related info in a relaxed manner, I am able to feel like my day is starting at my pace without wasting the time I could/should be productive at the office. By the time I am at my desk, I am able to buckle down and get into flow much more quickly.

My recommendation

Here’s my advice if you currently have a significant commute to work and have not tried the bus system enough to get comfortable with it. You can probably ease into it to see if you like it.

To get started, you can search for your local bus system online. You can usually find it by Googling “[Your City] Transit Authority.”

Find the nearest Park ‘n’ Ride, that’s what the Midwest cities call parking lots that are specifically designed for leaving your car there all day while you commute on the bus. There are 2 advantages to using the Park ‘n’ Ride rather than walking. First, you can drive to it. This way you don’t have to try and time the bus schedule as precisely because the car can get you there more quickly. Driving also allows you to be lazy and takes less effort. Second, if you miss the bus and decide you don’t want to wait for the next one, your car will be right there for you to drive into work that day. The Park ‘n’ Ride reduces risk.

Take the bus 2 times a week for a month. This should be long enough for you to decide if you like it and to understand how to utilize the system should you need it in the future. It can be nice to have the option to take the bus to work in certain cases, such as when your car is in the shop or when you will be meeting someone for happy hour who can drive you home.

 

As you read more of my blog, you’ll realize I love it when I feel like I am getting the most out of something. I feel that way with my local bus system now and I hope to share the benefits with you.

Attribution: Image by caribb

Let’s Raise the Standard of Security Knowledge

What is the best way to raise the standard of developer knowledge in the area of security best practices?

Security Skill Improvements

Photo by CarbonNYC

I ask because this is a particular pain point of mine. Personally, I must admit I am not where I should be with programming securely. However, I am definitely experienced enough to be able to spot obvious security issues in a software application. Not a month goes by, not a month, in which I do not stumble upon some basic security vulnerability in code I am maintaining or have to instruct a colleague why a particular implementation could be catastrophic. Do others feel this way about code I have produced? I hope not.

I practice some of the basics:

  • No SQL Injection Vulnerabilities
  • No Cross-Site Scripting Vulnerabilities
  • No storage of passwords in configuration files
  • No delivery of sensitive information in plain text

How can we make sure that any developer who puts new code into production knows these standards at a minimum?

I don’t want to have to teach someone again that in-line SQL is bad or that user input can’t be trusted. I don’t want to be able to look into a database and see actual user passwords strewn about. It’s not that I don’t enjoy teaching others about these things; I do very much enjoy teaching. It’s that I shouldn’t have to. There should be a minimum security skill set that any developer should have before getting paid to program.

My frustrations with this problem have been present for years, yet they have not led me to any solutions. How do we teach young developers about security? Assuming every company hiring entry-level developers had an orientation at which best practices were taught, it would still not be long before the next generation of hacks evolved and new security knowledge would be necessary. Which begs the next question, how do we all stay abreast of the most relevant security best practices?

As noted, I am not a security expert. However, I think I am often able to think about how someone could manipulate a system as I am writing code for it. Unfortunately, I tend to only notice these vulnerabilities because I am intimate with the code. My philosophy is always that if there is a vulnerability, even one that can only be known by fully understanding the code, it is just a matter of time before a motivated hacker would be able to find the exploit.

I know that I need to improve my skills. I need to be able to design software solutions to defend against security vulnerabilities. I need to innately understand secure coding tactics. I strive to be a competent developer in these areas. Where do I go to learn best practices without devoting my entire career to this expertise?

My preference would be to get regular (annual or semi-annual) training on the topics I need to improve or that most concern my industry. It would be great to be sent by my company for an uninterrupted session with security experts. Perhaps even better would be if I was able to work closely with a senior developer who was deeply experienced with security considerations. As I have said before, it is important to work in a job at which there are more experienced colleagues to learn from.

In my past experience, it seems that companies do not prioritize security enough. Sure, the boss may say that any new applications or modules must be “secure.”

The real problem, though, is that a lot of this was beyond developers’ abilities. Any reasonably sized company is going to have many developers who are good enough at writing code, but just do not have the security mindset.

From user “Dan Ellis” on StackOverflow.com

As developers, we must be pragmatic, finding the perfect balance between practicality and principles. In other words, if the boss says that an application must be secure, he or she is inherently making a tradeoff. The developer, with security as a requirement, must spend time researching what makes an application secure, how to make it secure, and then implementing the security. All this for features which are not obvious in the final application. Security features in a product usually go unnoticed (if done right) and tend to instead get deprioritized due to the pressures in the corporate world to write software on time and on budget. Additionally, developers are more likely to focus on things that they already know. Don’t you think the typical developer would be more likely to write “working software” on time with the thought that security could be added in later?

Of course this is a misguided approach, but who is going to be the catalyst for change? In my opinion, it is the responsibility of everyone involved in writing software to make sure it is secure. It is the responsibility of the company to ensure that secure practices are a part of the culture, that developers know security is a priority, and that developers are educated about best practices. It is the responsibility of the developer to ask appropriate questions about security and to raise concerns. The developer should also spend personal time learning about security vulnerabilities and how to defend against them.

I would have thought all the horror stories (e.g. here, here, or here) about software applications being hacked and security vulnerabilities causing chaos would be enough for companies to place a higher priority on security. It hasn’t worked, so I need help. What are the points of discussion to convince software development managers that this is a higher concern? Should I just tell them, “Hey, we need to pay attention to this if we don’t want to get sued?!?!”

Links:

Food for Thought:
One thing was pointed out to me from the DiscountASP.Net Knowledge Base that often times it is not a website’s security bug but instead that a developer’s machine was compromised and sites/names/passwords were scavenged allowing a hacker access to the hosted web application.

Herding Code Podcast #75: Barry Dorrans on Developer Security

The HaaHa Show: Microsoft ASP.NET MVC Security with Haack and Hanselman

Web Security Horror Stories (slideshow)

¡No Firmen!

Who remembers that famous scene at the end of The Goonies in which Rosalita finds Mikey’s marble bag full of jewels and instructs Mr. Walsh not to sign the contract? “¡No Firmen!” she commanded, which Mouth translated to “No Sign!”

My duty today is similar to that of Rosalita’s. Today I warn you about signing employment agreements and other contracts when starting a new job without using the leverage that you have. No Firmen. No sign…

10 years ago, Joel Spolsky posted “NDAs and Contracts That You Should Never Sign.” His basic advice was to never sign Non-Disclosure Agreements (NDAs) that had a non-compete or non-recruitment clause. Much of his advice is still valid.

Think about how you feel on your first day at a new job. Most people get stuck in “sponge mode.” They are absorbing every piece of information and perform every task they are told. At some point in the day, you meet with the Human Resources contact to fill out and sign a collection of paperwork. Among these is the Employment Agreement (also called other names such as Employee Contract or Company Handbook), which may contain the aforementioned clauses. You are in the habit today of following orders, so you read through the paperwork and sign it, despite your conscience telling you not to.

 

¡No Firmen!

Often times the contract you signed is harmless. You don’t plan to scavenge through your new company and recruit all the best employees for another company. You have never in your history divulged company secrets to competitors for sport. So you think you have nothing to worry about. You figure that you can just sign the document and everyone will be happy.

I have made this mistake before, and to be honest, I still survived. It has caused me some inconveniences over the years though, and I do not like the sneaky, yet fairly standard, methods that companies use to get new employees to sign.

When you are sitting there on your first day hovering over a contract, you probably do not know what you should do if there is language that you would prefer not to commit to. First of all, you should be able to take the document and consult a lawyer if you would like. A company that does not allow this is purely shady. But what if your lawyer instructs you not to sign it? Do you force your brand new company to change it or you will quit? Almost no one I know would feel strongly enough about signing a contract to threaten to quit her job. Most people fear that even making that threat would indicate to their new employer that they are planning to breach the contract, true or not. “How embarrassing would that be?” they think to themselves.

Your employee rights generally entitle you to negotiate employment contracts and agreements. An attorney will help you, if you don’t feel comfortable negotiating on your own. However, some employers might not be willing to negotiate one or more of their standard employment contracts or agreements.

Subsequently, be aware that, although it’s your right, attempting to negotiate an employer’s employment contract or agreement is effectively the same as declining the employer’s initial offer through a counteroffer. If the employer rejects your counteroffer, then the employer might not be legally obliged to again make the original offer.

from “About Employment Contracts and Agreements

As described above, if you attempt to negotiate the contract, it may void the employer’s initial offer. This is scary territory, territory that I would like all my readers to avoid where possible.

Instead, new employees must use the leverage they have before they lose it. In other words, if you wait until the day you start your new job to review any contracts you might sign, you have waited too long. Your leverage is greatest before you have accepted any offer from your prospective employer, especially if you are currently employed.

 

“If we don’t do something now, there’s going to be a golf course right where you’re standing.”

After you receive a job offer, a couple of thoughts should go through your mind. Leading the pack might be:

  • “Is this the salary I want?”
  • “How much notice should I give my current employer?”
  • “What does the benefits package include?”

Next in your mind should be “What rights do I have to sign away when starting the new job?”

When discussing your offer is a great time to ask about this. Be up-front with your contact at the new employer and ask if you can see the agreements or contracts you will have to sign when you start. You can then review the contracts and negotiate if necessary. At this point, you have not given notice to your current company, so you have little to lose (even in the worst case) if you choose not to sign the contract. Sure, the new employer could rescind its offer, but at least you can continue working your current job until you find another one. None of your current colleagues or bosses will be the wiser. It sure beats the feeling of helplessness on your first day, doesn’t it?

 

“No Pen. No Write. No Sign!”

By asking to see employment agreements up-front, you can reduce your risk of being trapped in a clause that concerns you. I see no downside to asking a company for this information. However, I do not necessarily recommend disputing any contract you might disagree with. You must weigh the benefits versus the risks of renegotiating any contract.

With that in mind, please help to spread this knowledge to friends and colleagues, especially those that have technical careers. Employees get “tricked” into signing unfavorable agreements often, yet it only takes a little preparedness and forethought to avoid them. And since you’ve already committed to reading this blog post, I need you to go ahead and sign my petition below. Don’t worry about the consequences. It’s harmless.

 

Sign Here to Remove

image by Kapungo

Update: For more information regarding employment contracts, see this great article
What Every Employee Should Know About Non-Compete Non-Solicitation Contracts.