As you may know, I like to make up words, like Plattribution.

And now, here's another:

Ternariholic

[tur-nuh-ree-haw-lik, -hol-ik]

adjective:
1. of, pertaining to, or of the nature of ternary operations.
2. containing or using ternary operations.
3. caused by ternary operations.
4. suffering from ternariholism.

noun:
5. Pathology . a person suffering from ternariholism.
6. a person addicted to using ternary operations for shorthand notation, even at the expense of legibility.

Alternative spellings:
ternaryolic, ternaryholic, ternary-holic

examples:
1. John writes code as compact as he can. He likes to nest ternary operator assignments so much, I'm worried he might be a ternariholic.

2. This code is a ternariholic mess, which makes it really difficult to read.

3. Hi, I'm John and I'm a ternariholic. It's been 3 hours since my last ternary assignment. I'd like to apologize to anyone who has read my code and been confused.

explanation:
This term is used in computer programing, usually to describe or label an affliction many programmers suffer when they learn of the ternary operator. This affliction causes overuse of the ternary operator, which results in difficult to read and maintain code.

Typically, a ternary operation in programming is a shorthand method for condensing if/else values that result in an assignment to a variable. Example:

This tends to happen a lot in JavaScript code, where developers like to be concise for bandwidth considerations:

// standard if/else
if(a===1){
   b = true;
}else{
   b = false;
}
 
// a simple ternary
b = a===1 ? true : false;

It's easy to spot a ternariholic when you find nested ternary expressions:

// getting a little hard to follow
// Note: parenthetical enclosing is not necessary here but is added for clarity
b = a ? (a===1 ? true : false) : c;
 
// and diving into the mouth of madness, where we start to wonder two things:
// 1. is the this programmer a ternariholic?
// 2. is the intention even sane?
b = a ? (a===1 ? true : false) : (c ? (c === 1 ? true : false) : d);

A contractor goes to a construction site to report for duty. Although the financiers have been promised that the project can be delivered in one month, the plans have not been written and several members of the contractor's team have been pulled away for other projects, leaving the contractor to complete the project on his own. While the architects are still hashing out the requirements for designing the blueprints, the contractor is told that he should get started building the house.

While demolishing the existing structure in place, he spends a day or two drawing up his own blueprints on napkins at the pub. He includes three bedrooms, the optimal number for the proposed occupants, and puts the plumbing where it fits best and where it could be built fast, cheap and maintainable. With the savings he's created by optimizing design, he decides to add a nice staircase that he's been dreaming of building for a while but never got the freedom to include.

Once he feels like his plan could work, he brings it to the architects, explaining that he could build the house with his design in half the time to deadline, using the limited staff and resources available and he would be able to finish the project under cost. The architects don't respond for a few days, but eventually, one of them meets the contractor at a pub and says, "You may as well get started building it your way. With this deadline, it's going to come down to you being blame for not completing on time if we start too late. And that looks like a pretty good plan--just keep it flexible and add another bedroom."

So he gets started. Halfway into finishing the construction of the house using the contractor's plan, the architects show up with a rough draft of the blueprints. The house now has 5 rooms, 3 floors and the staircase is totally different.

So he begins to tear down half of what he's built to patch in the new requirements.

As soon as the contractor has removed the staircase and built the scaffolding for the new one, the architects agree that they liked his original version and that it could stay with a few minor tweaks. He sighs over a pint at the pub, but he rebuilds it.

Half way into implementing the new blueprints, the architects come out with a second draft. Now there are only two floors, the number of rooms have increased to 6 and there's a huge space allocated for the backyard that wasn't planned in the original laying of foundations.

The contractor immediately begins to tear down the house--the project has to start over from the beginning and now he has less that 2 weeks to deliver. As he demolishes his work, he pops down to the pub frequently to decompress. He just wanted to build a good house, in a timely manner and on budget. Instead, he's demolished more than he's built, the project deadline is looming, and with the architects consuming half the budget for the project, he's feeling totally undervalued.

Once the house is demolished, the architects meet with him one last time at the pub. "We did some user acceptance studies for the target demographic," they say, "Our plan is too costly, but we've determined that this house would sell very well with 3 bedrooms." The architects then hand the contractor a replica of his napkin blueprints, printed up on fancy architect paper. "I think this plan is really going to work," They tell him, "but we still have to hash out a few details, so be prepared for some last minute changes." The architects give the contractor a pat on the back.

He recounts his woes to a pub-mate and in the middle of explaining the process, he comes to a realization: If it weren't for the bureaucracy, he could have finished the house on time, under budget, and delivered something that everyone would have been happy with.

The moral of this story is that you should spend more time at the pub. That's where ideas are formed, agreements are made and self-discovery occurs.

Alternatively, spend time at coffee shops instead of the pub. Consume stimulating beverages that encourage you to think and say, "Wait, no, stop! This is not the right way to do things."

March 14th, 2011 | Categories: Jobs, News, Web Development | Tags: , , , , , , ,

The Story So Far...

I've been working from home for a startup company (actually two different companies) for the last 2 years. It's been awesome. I've been able to balance work and family (specifically my nearly 3 year-old daughter) with a zero commute lifestyle--a 40 hour work week is exactly 40 hours. I've done some really great focused work, which I have previously found difficult in some office environments.

Long story short: I'm ready for a new gig.

I updated my LinkedIn, Monster, portfolio status (soon to be revamped with HTML5/CSS3 hotness)--but now I'm getting phone calls and emails and I realized I've kinda jumped the gun. I need to reassess and make sure I'm prepared to interview these companies as much as they are going to be interviewing me.

Well, here's my list of questions that I would ask any tech company for any of the roles I would consider. Most of these are pretty universal for any office job--even if you aren't looking at it from a Lead Web Developer / Technical Manager perspective. And keep in mind, there are many other questions you should ask that relate to things the person will have revealed in the phone screen--but those are all particular to the company and generally end up happening in the normal flow of conversation.

Questions to Ask Potential Employers

1. Do you support telecommuting? If so, how much?
This might not be as important to some people but it's pretty big to me.

2. Do developers have uninterruptible hours in the office?
This is really, really important and horribly overlooked in a lot of office environments--and one of my biggest reasons for wanting to negotiate telecommuting time into the deal. Take 15 minutes, if you have it, and watch this TED Talk by Jason Fried on "Why Work Doesn't Happen at Work"--If you don't have 15 minutes now, email it to yourself and watch it later. This really is important:

3. What kind strategies do you have for dealing with the post-lunchtime productivity dip? Or do you think that's not an issue in your environment, and why?
Do you notice that when you get back from lunch, there's a grey haze that fills the aura of the room. Everyone is more tired, unfocused--there's an obvious loss of momentum? I've seen this happen in every office I've ever worked in. At home, I've developed many strategies and I find that I can deal with it much better. This can be as simple as a 5 minute pep scrum meeting, in which everyone just says, this is what I'm heading to my desk to do right now. Go team. Just a simple boost to get people refocused.

4. How would you describe your typical workflow methodology? Do you subscribe to Agile/Lean?
If you work in tech, this is really good to know as it will affect the style of your daily interactions as well as your long-term planning cycles.

5. What is a typical day like in your office (as far as the whole team is concerned)?
Are there 3-4 meetings a day? Does everyone typically go to lunch together? Do people order lunch in? Are there games or other activities in the office that people use to unwind? Do people come in at 8am, sit at a desk and hammer on a keyboard for 8 hours without looking up?

The key point of this question is to flush out what the people interactions are like. Focus on that--dive deeper if needed.

6. What is your philosophy regarding on-the-job growth and development?
There are a lot of sub-questions to this that boil it down to suggestions--I've worked in many places that have some or all of the following and I find they are especially needed in the tech field where technologies change every few months and you really have to spend time keeping abreast or you fall way behind: Do you have a weekly show and tell? An email group list for sharing resources and information? Do people independently get together in groups to explore new technologies? Is there required or allowed time to pursue learning new things that relate to the position?

7. What changes do you see coming for your company in the next 6-12 months?
Allowing for the possibility that you will need to sign an NDA to get access to such information, companies should have a roadmap for growth and change. Is the small company planning on staying small? Are they looking at Acquisition or IPO? Are they planning to double their staff?

8. What differentiates your company from companies like you?
Hopefully, you've done a little research and can name a few competitors.

9. How do you gather opinions and feedback on solutions for your business needs?
This gets into all kinds of things. Primarily, I want to know where in the spectrum they fall between the following two company descriptions:

1. Closed box world, in which the CEO makes business decisions and promises, passes needs to the design team, which then creates a design, having no feedback from development or anyone else and the developers end up with an external deadline to complete said design.
2. Everyone in the company (design, development, test, UX, operations, management) is involved in giving feedback on ways to address business needs, formulate design with feedback strewn throughout the process and works together to create estimates and expectations.

10. How do employees communicate with each other?
Is this a massive email shop? Do they use an internal IM? Skype? Meetings? What's the percentage on face-to-face vs. email/IM vs. group meetings?

11. If someone has had this position before, what did you especially like about his/her performance? If not, what would you most like to see accomplished in this position?
Trying to bring it up to positive reflection at this point after we've given a few potential down notes. This allows you to see what will be expected of you as a basis for comparison on the last person or what they hope to find in a new role fulfillment.

12. What's your favorite thing about working here?
This ends the interview on a positive note and gives vital insight on why the interviewer cares about the company.