Interesting Stuff: December 2018

I generally read quite a bit… Not this month though. I started a lot of books but finished few. I’ll get back to it in the new year.

Noteworthy books:

  • Nothing 😦

Noteworthy videos:

Interesting Stuff: November 2018

I read quite a bit. Sometimes I like what I read and sometimes I don’t. I generally do not talk about what I dislike but the interesting stuff is worth mentioning.

Noteworthy books:

Noteworthy videos:

Can you teach an old dog new tricks?

I graduated from software engineering (specialization: AI and robotics) a long time ago. The AI specialization was a big deciding factor for me. I was an avid science fiction reader (dreamer?) and had ideas of building the first “positronic” brain (please don’t laugh, I’m still uncomfortable as to how naive I was).

When I finally got to the AI courses (after three years of engineering), I was a bit disappointed. The courses were less about Neural Networks (NNs) and a lot more about “general” Machine Learning (ML) (e.g. linear regression and the like). The little we learned about NNs was theoretical and very very basic (e.g. perceptrons).

Fast forward a couple of decades and things are different. First, data sets are much larger and more readily available. CPUs are more powerful. This makes the analysis of these data sets feasible and relatively cheap. Finally, you also have a rich eco-system of languages (e.g. Python, R) and frameworks (TensorFlow, Pytorch) that make the NNs accessible for laymen.

Given all of this, I decided to take a couple of months off to get back to AI. I’m unsure if this is a career move or will just be a hobby. My younger self’s interest in AI and NNs might have faded and been replaced by other things but since I don’t want to live with past regrets, I’ll give it a go.

I’ve built myself a study plan. I have time-boxed this experiment until January. After that, I’ll make a decision as to what to do next.

So my approach to learning AI is as follows:

Learning Python

First, most frameworks and tools use Python as their “preferred” language. I have no experience with Python. My first goal is to first become knowledgeable about Python. The ideal would be for me to be able to say I’m an intermediate Python programmer. Here, I’m hoping that my experience with other languages, Java, Ruby, Javascript will help. The resources I will use are:

I like the Jose Portilla courses, there’s a lot of exercises which are a must to learn a new language. I probably also need to think about a project or two to learn the language better.

Learning Machine Learning Techniques

Next, I want to get a broad overview of the current state of machine learning. The following resources will be used:

The second resource is a university course book, I’m unsure that this is the level where I should take this but since I haven’t looked the AI in many years, I’ll at least take a quick look at it as a refresher.

Learning Neural Networks

So there’s a decision that I’ll need to make here. Should I select PyTorch or TensorFlow? Are these two frameworks so dissimilar that I really need to select one? I’m not sure. For the moment though, I’ll focus on TensorFlow as online courses are more readily available. By the time I get to this section of my curriculum, things might be different though. We’ll see. For the moment though, the resources I’ll use are:

I’ll try to blog a little bit about what I find out during this experiment.

A note on diagrams

I’ve been writing object oriented software most of my life. First with C++ and then with Java. You can do OO with other languages of course but these two are compiled. With compiled languages, there’s a tendency to define classes and class relationships quite early in the development. You also tend to refine your OO models in much finer details than with dynamic languages (e.g. Ruby). I’m not saying it’s a good thing, by the way…

I’ve been doing this for close to 25 years. Initially with Booch and Rumbaugh and later on with UML. I’ve done it so much over the years that I tend to disassemble most books (be they science, software and even novels using a bastardized, simplified version of UML). I’ve even done a Game of Thrones taxonomy using UML at the time.

So for the sake people looking at my web site, here is a very VERY small example that gives you an inkling of the diagramming method that may be found here.

In the following diagram:

you’ll find the following relationships and concepts:

  • Any rectangle in a diagram represents a “class”. A class is usually an abstraction of a concept associated with the topic I am talking about. So if I want to talk about the car and the car fabrication process, “Car” would definitively be something that I would want to model.
  • Sometimes (most times?) I will leave the rectangle as is (like the “SUV” or “Sedan” class). Other times, I will model some attributes of the car (for example, its make and model) or some of its operations (“start” and “stop”). When that happens, I will split the rectangle in up to three sections:
    • top: name of the class
    • middle: attributes of the class
    • lower: operations of the class.
  • An arrow linking two classes represent a “generalization” (aka an “is-a” relationship). You can read the relationship following the arrow… so an “SUV is a Car” or a “Sedan is a Car”.
  • Diamonds (empty or full) represent containment. There are two types of containment (aggregation or composition). Composition (full, black) implies that the two classes “life spans” are tied together. The aggregation (empty, white) implies that the two classes’ lifespan are independent. In the diagram, I’ve represented the driver with an aggregation, meaning that their lifespan are not tied while the wheels are tied (basically, they don’t have meaning outside of the concept of a car).
  • Containment relationships may have a multiplicity. For example, a car has 4 wheels.

In any case, UML can get quite complex. What I just showed is a small portion of the class diagramming aspect of UML. It is a much larger spec that also covers sequence and state diagramming. That being said, I find that it’s usually an 80-20 proposition where you can get most of the value of the specification with the first 20% of the language. (Though what I just described is probably less than 2% of the whole thing).

If I write anything that requires more detailed UML or more detail about my “bastardized” version of it, I will attempt to document it in that blog entry or I might just spawn a new page just for notation.

P.S. I’m using a StarUML for the diagram.

Leaving Facebook for a short time

I’m getting out of Facebook for a month. I’ll see how things go but if things go as I think they will, I will not go back. I’ve been thinking about doing this for a while but the trigger for it is the following video:

It’s an interesting video. In it, Tristan Harris lays a claim that the goal of Facebook (and of the other content providers, e.g. YouTube, Netflix, etc) is to get as much of your attention as possible. There are 24 hours in a day, you sleep 8, the 16 other are up for grabs. These companies are ruthlessly competing with one another to steal as much of your attention as possible. They create algorithms to ensure that you spend as much time as possible on their website(s) and they constantly tune them so that you are less and less likely to leave.

In the video (minute 6:45), Tristan comments on how this problem can be fixed:

  1. Accept that you are persuadable
    You have to accept the fact that you are no match for a bunch of neuroscientists, psychologists, computer scientists whose job it is to keep you addicted to their website.
  2. Need new models for accountability systems in these organizations
    The accounting models used are totally geared to maximize profits. These companies will appeal to the lowest common denominator, they will hit your lizard brain, put you in an echo chamber for your political views, anything to keep you hooked. You should be clear about your goal when you use a website, does it do what it’s supposed to do? Or are you simply getting a dopamine hit?
  3. Design Renaissance
    The UX of these websites should protect against the timelines you don’t want and empower the timelines that you prefer.

I agree with 1 (I have no doubt that I am persuadable) but do not believe that 2 (transparency in accountability system) will happen. As to 3, as it implies a change in the accountability model (which I already don’t accept), I don’t believe it will happen.

Facebook is particularly insidious compared to sites like Netflix. There are two reasons for this:

  1. Facebook is “non directed” in its very nature, you don’t have a “strong and clear” goal when visiting it. Netflix is less pernicious because you direct it. You go to the website and you decide to watch a given tv show. The fact that it plays the next one is more in your control and is certainly more in tune with your initial interest.
  2. Facebook is solely ad-driven. Netflix is not. At the end of each month, you pay around 10$ to Netflix. At that time you usually think about the value that was brought to you over the last month. Facebook is “free”. You only give away your time….

So how would the accountability system of Facebook change from valuing the capture of the user’s time to providing real value provided to the user (e.g. improving relationships with connections)? It will only change if Facebook migrates away from an ad-driven model to a paid subscription model. Can this happen? I don’t think so. It’s more likely that a competitor comes in with a totally different business model.

In any case, my goal is to be the best person I can be and there is simply no way Facebook is presently helping me achieve this. Yes, I can see updates from friends but most of them are trivial. I would do much better writing these friends or even better spend time with them. A lot of people I have on my Facebook are also “connections”, not true friends. What do I care, what Person X ate last week? This is totally useless information. There can be serendipity in some of the information provided but it seems to me that there a deficit if you do the difference between the value obtained from time spend (a formula for this would be great!).

P.S. On a totally different note, if you want to read about alignment of concerns, take a look at David Swensen’s “Unconventional Success: A Fundamental Approach to Personal Investment”. At the time, it changed my life.

Book Review: “Building a StoryBrand: Clarify Your Message So Customers Will Listen”

This is a short and to the point book on marketing. It defines a process to help you craft an engaging brand message. The approach is based on scripting your message according to the general pattern of what a story is:

A hero has a problem and meets a guide that gives them a plan and calls them to action that helps them avoid failure and end in a success.

Note that in this story, your company is NOT the hero, you are the GUIDE.

Movies (the good ones) follow this pattern. (Try it out on movies you like, it works!). According to the author, using this approach gets customers engaged and excited about your company.

The book deconstructs the formula and breaks it down in seven steps:

  • A hero
  • has a problem
  • And meets a guide
  • That gives them a plan
  • And calls them to action
  • That helps them avoid failure
  • And ends in success

Each step gets its own chapter, and at the end of the chapter, you should have clear actionable outputs that ultimately allow you to craft a meaningful brand story. Note that this is not a silver bullet. You need to put in time and effort and probably should see it as an ongoing process of constant improvements.

Ultimately, the story that comes out should allow you to review your mission statement, your website, your business literature, pretty much everything associated with your company.

For me, it was well worth time and effort. I’m unsure if it’s going to improve my sales or allow me to grow my client base but it certainly allowed me to better understand what is lacking in my message. It also gave me an inkling as to what I should do to fix things.

Course Review: Review of “Seth Godin’s Freelancer course”

If you are a freelancer, you already probably know Seth Godin. If you are planning on being a freelancer, I recommend that you read some of his books (“Linchpin” is a good book to start with). You can also check his blog, also very interesting. Seth has a three-hour online course available on Udemy (Seth Godin’s Freelancer course). The course is definitively worth the money. It covers a lot of topics associated with freelancing:

Why do freelancing:

  • Types of freelancing
  • Managing clients
  • How to deal with pricing
  • Building a reputation
  • Promoting
  • Selling
  • Etc.

All of the information is great and maybe eye-opening to you. It is delivered by Seth himself, looking straight at the camera, no PowerPoint slides, no diagrams, or fancy animation, just him talking about the business… in his very engaging and personable style.

The course clarified my thinking on how I run my own freelancing business. I’ve been at this for almost 15 years and even though I make a good living, it could be better. The course made me realize that I am too much of a generalist and that I really don’t invest enough in marketing.

My one problem with the course is that I feel that it doesn’t go far enough. I need a plan on how to fix things. Can a course help with this? or is it something too personal? Maybe, I need a mentor, somebody who’s done this before?  I really don’t know. At least, it’s a start.

Course Notes

This is a very partial list of the course notes I have. Again, I recommend you follow the course, it’s well worth the price. (My personal comments are usually italicized).

Why be a freelancer

Here are the 5 reasons why some people drift towards becoming freelancers.

  1. A chance to do great work
  2. A chance to make our own choices
  3. Responsible for the work we do
  4. Make a living by making a difference
  5. A chance to become a professional

You are weaving a braid

You need to understand that as a freelancer, you are building assets. Ask yourself the following questions:

  • What do you want to do?
  • Who do you want to change?
  • How much risk?
  • How much work?
  • Does it matter?
  • Is it possible?

I’m not sure about the analogy that Seth uses (i.e. weaving a braid). That being said, I totally agree that you are building assets. Your freelancing business is all about assets (your brand, your connections, even your knowledge… those are all assets). There’s a questionnaire offered through the course.  I recommend you try it out. In my case, the answers were quite easy. I know what I want to do… but at the same time, I realize that I am NOT doing it! !@#!@##!@ Back to the drawing board.

Types of freelancing

There are 5 types of freelancing:

  • Mechanical Turk
    • Not differentiated
    • Cog in the machine
    • Generic
    • Example, translation service, Uber driver
  • Handyman
    • Usually, your services are convenient, e.g. you are close by.
    • Example, wedding photographer within the region
  • Craftsman
    • You offer something demonstrably better
  • Unique
    • You are asked by name
    • There’s only one of you
  • Remarkable
    • Work done stands out, recognizable
    • You are a brand.

Obviously, you want to be “remarkable”, but can you? Ask yourself, which type of freelancing you are truly doing? Seriously. Are you a software consultant, like me? If so, which level are you? Do your customers really really want you… and are they willing to pay for those services? I know that we are paid decently, but if your rate is 10$ per hour more than your competitors, will they still pick you? The world is not fair, you are not entitled to be “remarkable”. You are entitled to doing the best job you can, you are entitled to try… but not everybody succeeds. The course made me realize that presently, I am probably a “handyman” at best… People that deal with me are happy about the results, but how unique am I?

You think you’re remarkable? Ask yourself the following questions:

  • If you outsourced your work and didn’t tell me, would I be able to tell?
  • If someone else saw the work, would they know you did it?
  • Is there something about my interaction with you that’s bigger than the work?

You have to find a way of not being generic!

Finding customers

How do you select customers:

  1. Find a customer who has money (Professionals don’t work for customers who don’t have money).
  2. Find a customer who has a problem and knows she has a problem.
  3. Find a solution that only you can provide
  4. (Bonus) Do it in a way that makes people eager to tell others.

Firing a client

  • You need to have a deep understanding of the story the client tells themselves about you. If the story is that you are not to be trusted, or you are not going to deliver, you are not going to change that story. It’s better to move on. That being said you need to be good at interaction because this might just be that you are bad with people interactions.
  • The easiest customer to reach is almost always the worst customers.
  • You need to be clear with your client about what the story is going to be.
  • Seth says that if somebody already has a story in their mind about them paying the least amount, you are not going to change it. You basically need to find customers that are willing to pay to obtain quality work.

This is so true. You need to understand the story that the customer tells himself prior to accepting a contract. If they are attempting to get you at the cheapest possible rate, they might not care about the quality of your work, just the cost. In which case, let other people do the work, find clients that care, they exist.

How to increase demand

There are three ways to get more business

  1. Remind people of their needs
  2. Satisfy existing needs
  3. Initiate a need

Initiating a need is very difficult as you have to convince somebody that they have a problem… How do you convince somebody that doesn’t know they have a problem. It can’t be through a website. They won’t look for you. Maybe a newsletter about the domain?

When a client disagrees with your vision as to position brand

If you are a brand then you don’t have a problem, the client expects you to provide the vision. If you are NOT a brand, you can attempt to tell the client a story that will make them change their mind but it’s their decision. With this second approach, you might do work that is not acceptable to your standards.

Seth talks about St Luke’s Ad Agency… awesome model!!


Are you charging on what it costs or on what it’s worth? Professionals charge on what it’s worth.

This is so interesting a statement. I have no doubt that a graphics designer may charge this way if they are remarkable… but what about software designers? I haven’t seen this approach in the market. Some of us make good money consulting but it’s usually associated with a time-based rate. I don’t know any software designers who do it this way. It doesn’t mean that it doesn’t exist. I just haven’t seen it being done. I think the fact that we don’t “sign” our work is the issue.

Don’t do spec work for free, except if they allow you to sign your work.

Book Review: Don’t make me think

When I picked this book up, I thought it would be a silver bullet for some of the UX problems I was facing at the time. It wasn’t… but what it is is a very high-level set of rules and principles that can help you when developing a UX.

Most of the stuff in this book is common sense but sometimes it’s nice to be reminded of the guiding principles.

I particularly enjoyed reading the chapter on testing… which describes an approach to testing on a budget.

Here are some of my notes:

Chapter 1

  • The most important thing you can do is to understand the basic principle of eliminating question marks.
  • the main reason why it’s important not to make me think is that most people are going to spend far less time looking at the pages we design that we’d like to imagine. As a result, if Web pages are going to be effective, they have to work most of their magic at a glance. And the best way to do this is to create pages that are self-evident, or at least self-explanatory.

Chapter 3

  • If you’re not going to use an existing Web convention, you need to be sure that what you’re replacing it with either (a) is so clear and self-explanatory that there’s no learning curve—so it’s as good as the convention, or (b) adds so much value that it’s worth a small learning curve.
  • A good visual hierarchy saves us work by preprocessing the page for us, organizing and prioritizing its contents in a way that we can grasp almost instantly.

Chapter 4

  • When you can’t avoid giving me a difficult choice, you need to go out of your way to give me as much guidance as I need—but no more. This guidance works best when it’s Brief: The smallest amount of information that will help me Timely: Placed so I encounter it exactly when I need it Unavoidable: Formatted in a way that ensures that I’ll notice it

Chapter 5

  • Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts.
  • Getting rid of all those words that no one is going to read has several beneficial effects: It reduces the noise level of the page. It makes the useful content more prominent. It makes the pages shorter, allowing users to see more of each page at a glance without scrolling.
  • Your objective should always be to eliminate instructions entirely by making everything self-explanatory, or as close to it as possible. When instructions are absolutely necessary, cut them back to the bare minimum.

Chapter 6

  • Too-subtle visual cues are actually a very common problem. Designers love subtle cues because subtlety is one of the traits of sophisticated design. But Web users are generally in such a hurry that they routinely miss subtle cues. In general, if you’re a designer and you think a visual cue is sticking out like a sore thumb, it probably means you need to make it twice as prominent.

Chapter 7

  • The one thing you can’t afford to lose in the shuffle—and the thing that most often gets lost—is conveying the big picture.
  • Don’t use a mission statement as a Welcome blurb.
  • Taglines are a very efficient way to get your message across because they’re the one place on the page where users most expect to find a concise statement of the site’s purpose.
  • tagline conveys a value proposition.
  • Good taglines are personable, lively, and sometimes clever.

Chapter 9

  • Testing one user is 100 percent better than testing none.
  • Testing one user early in the project is better than testing 50 near the end.
  • Do-it-yourself tests are a qualitative method whose purpose is to improve what you’re building by identifying and fixing usability problems. The process isn’t rigorous at all: You give them tasks to do, you observe, and you learn. The result is actionable insights, not proof.
  • Even before you begin designing your site, for instance, it’s a good idea to do a test of competitive sites.
  • For each round of testing, you need to come up with tasks: the things the participants will try to do.
  • start by making a list of the tasks people need to be able to do with whatever you’re testing.
  • Choose enough tasks to fill the available time (about 35 minutes in a one-hour test), keeping in mind that some people will finish them faster than you expect.
  • Then word each task carefully, so the participants will understand exactly what you want them to do. Include any information that they’ll need but won’t have, like login information if you’re having them use a demo account.
  • your job is to make sure the participant stays focused on the tasks and keeps thinking aloud.
  • During this part of the test, it’s crucial that you let them work on their own and don’t do or say anything to influence them. Don’t ask them leading questions, and don’t give them any clues or assistance unless they’re hopelessly stuck or extremely frustrated. If they ask for help, just say something like “What would you do if I wasn’t here?”
  • After each round of tests, you should make time as soon as possible for the team to share their observations and decide which problems to fix and what you’re going to do to fix them.

Chapter 10

  • Having something pinned down can have a focusing effect, where a blank canvas with its unlimited options—while it sounds liberating—can have a paralyzing effect.
  • One approach was Mobile First. Instead of designing a full-featured (and perhaps bloated) version of your Web site first and then paring it down to create the mobile version, you design the mobile version first based on the features and content that are most important to your users. Then you add on more features and content to create the desktop/full version.
  • In some cases, the lack of space on each screen means that mobile sites become much deeper than their full-size cousins, so you might have to tap down three, four, or five “levels” to get to some features or content. This means that people will be tapping more, but that’s OK. With small screens it’s inevitable: To see the same amount of information, you’re going to be either tapping or scrolling a lot more. As long as the user continues to feel confident that what they want is further down the screen or behind that link or button, they’ll keep going. Here’s the main thing to remember, though:
  • Always provide a link to the “full” Web site. No matter how fabulous and complete your mobile site is, you do need to give users the option of viewing the non-mobile version, especially if it has features and information that aren’t available in your mobile version. (The current convention is to put a Mobile Site/Full Site toggle at the bottom of every page.)
  • Affordances are visual clues in an object’s design that suggest how we can use it.
  • For affordances to work, they need to be noticeable, and some characteristics of mobile devices have made them less noticeable or, worse, invisible. And by definition, affordances are the last thing you should hide.
  • Flat design has a tendency to take along with it not just the potentially distracting decoration but also the useful information that the more textured elements were conveying.

Chapter 11

  • I’ve always found it useful to imagine that every time we enter a Web site, we start out with a reservoir of goodwill. Each problem we encounter on the site lowers the level of that reservoir.

Chapter 12

  • About i18n… It’s the right thing to do. And not just the right thing; it’s profoundly the right thing to do because the one argument for accessibility that doesn’t get made nearly often enough is how extraordinarily better it makes some people’s lives. Personally, I don’t think anyone should need more than this one example: Blind people with access to a computer can now read almost any newspaper or magazine on their own. Imagine that.
  • And for those of you who don’t find this argument compelling, be aware that even if you haven’t already encountered it, there will be a legislative stick coming sooner or later. Count on it.
  • “Guidelines for Accessible and Usable Web Sites: Observing Users Who Work with Screen Readers.”

Book Review: “Grit, The power of passion and perseverance”

What a nice surprise! A friend of mine told me “You have to read this book!!!” Indeed, he was right. I loved it, and recommend reading it. The premise is simple “Not everything is decided by one’s IQ. Successful people usually work hard, practice constantly and are relentless about the quality of their work.”

The book is well written, you can read it in a few days. The author (Angela Duckworth) definitively knows this topic inside out as she’s been studying it for years. She’s looked at “Westpointers” (cadets from the Westpoint military school), KIPP students, the Seattle Seahawks, etc. From all of these examples of grit, she distilled her work in this rare book.

Some of my notes follow…

Grit Scale

The book defines a grit test that you can self-administer. Doing the test gives you a score (from 1 to 5) which tells you how gritty you are (1 being the lowest and 5 being the highest). This is interesting but is actually the weakest part of the book in my opinion.

I did the test and found the questions to be extremely subjective. The result obtained is based on how you characterize yourself at that particular time and place. In my case, it was quite easy to go from a 2 to a 4 for any given question, depending on which project or which period of my life I think about. (e.g. “I worked really hard on project X for 3 years, doing on average 70 hours per week, that’s pretty gritty, I think” but then you may also have “I worked on project Y, 3 months, hated everything about it and couldn’t leave it soon enough”… so depending on your mindset when you do the test, your results may vary.

Furthermore, I think that your environment (i.e. who you associate with will also affect your perception quite a bit). If you are surrounded by gritty people who work very hard, you might not feel very gritty… but if you are put with underachievers, suddenly you might feel quite gritty. Basically, the test is so subjective that I wouldn’t put too much thought in it. That being said, the author admits that the test is fakeable but that it was also found to be accurate in some contexts where she ran it. So it might be valid when there is no consequence associated with the test but not as valid when there is something of importance tied to the result (e.g. job interview).

Note that I still believe in the concept of grit and all the information found in the book is extremely valuable.

From talent to achievement

Talent is not the greatest indicator of success. It helps, but it’s far from everything that matters. Angela Duckworth suggests that hard work and perseverance are actually a better indicator of the success of a person.

The author comes up with the following two equations to illustrate how you go from talent to achievement:

talent x effort = skill
skill x effort = achievement

Her point is that for somebody to accomplish something meaningful, effort counts twice (or at least, is very substantial when it comes to somebody’s accomplishments).

Growth Mindset

Somebody who has a growth mindset believes that it is possible to become more intelligent given the right opportunities, support and effort (i.e. use deliberate practice).

Examples of growth mindset talk:

  • Say: “You’re a learner, I love that”
    Don’t say: “You’re a natural! I love that.”
  • Say: “Great job! What’s the one thing that could have been even better?”
    Don’t say: “Great job! You’re so talented.”

Basically, you need to emphasize hard work over natural intelligence. I found this quite interesting and will (hopefully) remember this whenever I’m dealing with my kids.

About deliberate practice

One of the best things in the book is that I finally found the best description of the characteristics of deliberate practice. In short, deliberate practice must have the following four characteristics:

  • A clearly defined stretch goal
  • Full concentration and effort
  • Immediate and informative feedback
  • Repetition with reflection and refinement

So basically, you do deliberate practice, day after day, month after month, year after year and you’ll be good… Though not stated directly, the use of a coach or mentor is highly recommended (how would you get the necessary feedback without it?).

I would love to find a way to apply this to software engineering (e.g. new framework, languages or concepts).

The Hard Thing Rule

Grit can be encouraged, grown in a family. The author suggests the “hard thing rule”, which she applies to her family’s life. It goes like this:

Everybody in the family does at least one “hard thing”

You cannot quit the hard thing before the season is over

You choose your own hard thing (usually something you like).

I would love to apply this to my own family. We’ll see how they feel about it when they grow up 🙂

“Grit” applied to software teams

This is not in the book… just some of my musing about it…

I found the example of the Seahawks (NFL team) to be quite interesting The Seahawks staff has cultivated consciously a culture of grit. I was wondering if the same concepts could be applied to a software team. Can you, in a software group, or a software-based company create a “culture” of grit? If so, how would you do it? Just by recruiting well? Or is there some other elements that can bring out the grit in a team? A book on this (by a great team lead or software manager would be awesome)… there’s probably something around, just need to find it.

Reading the book confirmed some stuff I have seen over the years when interviewing people for software jobs… that is, GPA tells very little about a person’s whole story…

When hiring for a junior position, I would look for grit through the following:

  • I would look at courses where the potential hire excelled and then query them about that particular course. Why did they like it? Was it passion? Can this be brought forward to my company? (See one of Angela’s YouTube video, she recommends something similar)
  • School projects and personal projects are amazingly important. It’s not only that they have projects but also how long have they been working on those projects.
  • Open source work. Wow, GitHub, what an amazing trove of information on a person. You can see passion and interest right there, through their commits, and through the discussions on issues.
  • I would have them tag along one of my senior designers and work on a problem for a short period of time and see how this problem. Are they curious? Do they care more about learning than being let go?

When hiring for a senior position, things are a little bit different. Senior software people may be married, may have kids and will generally have a lot less time to have side projects or contribute to open source… So I think that I would look for passion for the craft. Are they keeping up with technology? Do still get excited about it? What are the best projects they worked on in their careers? I don’t think I would ask them about the crappy projects, everybody goes through bad projects… the more you have worked, the more likely you’ll have been on some of those.

An issue with looking for grit in a senior’s resume is that it’s difficult to judge grit by looking at an amount of time spent on a given project or company. A long period might mean grit but it could also mean just being comfortable in a given position.

More information

If you are unsure about buying the book, I would recommend checking out the following presentations by Angela:

Naming a startup domain name

I’ve had to generate names for companies (and their associated domain names) a number of times in my career.  For me, it’s always been an excruciating exercise.

So why is it so difficult?  I always felt that there’s so much tied to a company name.  In most cases, it’s the first thing that a potential customer sees.  It shows a little bit of your creativity and originality.  So you don’t want to have a crappy name.

Nowadays, finding an original company name is more difficult.  There’s a LOT more companies now than there were 20 years ago.  Furthermore, domain names (which are so closely tied to company names) are a business unto themselves.  Trolls squat on the good ones and will only give them out for good money.  It’s quite sad but there’s little to be done.  (Actually raising the price of a domain name would probably help alleviate this problem, or having some root curated “master” domain… but that’s another story).

In any case, finding a domain name is difficult but there are still tools and resources that can help you.

First, I would recommend anybody that want to find a new domain name (or business name) to check out this Jason Calacanis video on YouTube: “How to name your startup”. It’s a nice primer from a master in the startup business. Highly recommended.

Second, the book “How to build a billion dollar app” has a whole chapter on company and domain name search.

Lastly, here is a list of tools that can get your creative juices flowing:

If you know of any other video or online tool that I should put in this list, feel free to let me know.