The content on this site is my own and does not necessarily represent my employer’s positions, strategies or opinions.
- What’s the best way to get a broader view of what happens in a company, an organization, or an industry? …
- I was speaking with a friend who had a job interview last week, and he mentioned that he had gotten …
- It’s the beginning of a new year and we’re being flooded with predictions, retrospectives, and catchy headlines to make us …
- At some point in your life you go from being a person who is mentored to one who also is …
- Today I installed Ubuntu 14.04 dual-boot on an Acer machine that came preinstalled with Microsoft Windows 8.0 but has been …
What’s the best way to get a broader view of what happens in a company, an organization, or an industry? Certainly you can read a lot, and you must do this. However, actually working in a different area teaches you about what is and is not being handled well, how that area relates to others, how to maneuver the politics, and helps you build your network of professionals in a concrete way. While “connecting” online is good, it is even better to work side-by-side with someone.
From a management perspective, employees who have this broad experience are more valuable because they can both be domain experts and understand the big picture. One way of getting this is by supporting rotational assignments.
There are several ways of doing this. One is that an employee starts in your group and then moves to another, and then another, and another, until he or she settles into an appropriate business or technical leadership role. Here people “rotate out” but do not necessarily rotate back in. I rotated out ofin 1999 and “rotated” back 13 years later. I’m not sure that was part of anyone’s career plan for me, including my own.
An individual can do this by changing companies. If they hope to return to one of them, it is important not to burn bridges. Don’t leave in a huff if you expect to ever be hired there again. You may not think that will ever happen, but why take the chance?
A more controlled program would have someone in your group go work for another team for 3 to 12 months and then come back. After their return, their responsibilities should expand to take advantage of their new skills and connections. They should also actively share their new knowledge and insights with their co-workers. Perhaps a year later, they can rotate out to another role or just move on. Don’t forget to reconsider their salary when they first return to you.
For management, you must guarantee that the employee has a round-trip ticket to and from the other organization. It is not cool to tell the person that there is no headcount allocation for them when they are ready to come back. Yes, times change, but you are breaking a promise to someone who you supposedly thought had a lot of value. If they cannot come back, you have lost trust and credibility. Don’t be surprised if the employee quits and joins another company. Don’t be surprised if no other employees take you up on your offers of “career-expanding rotational assignments.”
For the employee, you also made a promise. You said you would come back and make your original group stronger. You don’t have to spend the rest of your life there, but your management and colleagues were expecting to have your expanded expertise, at least for a while. However, if your staying in the new organization makes the overall company stronger, you may be able to make that argument. In any case, be gracious and make it a negotiation, not a demand.
A sequence of assignments where a person “visits” different parts of a company can be a win-win for the manager and the employee. This is an important part of career planning. For you as an employee, remember that you are ultimately responsible for your job path within and between companies. Be active about it and consider suggesting a rotation to your manager.
I was speaking with a friend who had a job interview last week, and he mentioned that he had gotten the “Please tell us about your most embarrassing moment” question. Please? They couldn’t do better than that?
In Amy Poehler’s new book Yes, Please, she gives the advice that you do not have to tell anyone about your most embarrassing moment. It is none of their business, and you need not and should not have to confess to anything just to move on in the interview process. I agree with Amy.
It is especially strange that people are warned not to immortalize their immature or questionable behavior onor , only to have job interviewers ask them about such behavior. Rather than giving useful information about applicants, it seems to me that it satisfies some sort of voyeuristic intent by the interviewers. It is not even a constructive question.
If I were interviewing a software developer, I might instead ask about how they discovered a bad bug in some code, how they fixed it, and how they helped ensure that it did not happen again.
If I were speaking to a sales person, I might ask about a sale they expected to close but did not, why that happened, and what they learned about the experience to help avoid such a surprise again.
If I were talking to a potential student summer intern, I could ask them how a challenging college class altered their approach to their studies, and how that might be reflected in their work with us.
So it is ok to admit that bad things have happened to or around us in our professional lives, but keep it at that–professional–and avoid the personal questions. What is interesting is how the applicant dealt with the situation, what they learned, and how that could make them a good employee for you.
There are many factors to consider in applicants like experience, skills, enthusiasm, honesty, and personality, but keep your nosy personal questions to yourself!
Also available on LinkedIn.
It’s the beginning of a new year and we’re being flooded with predictions, retrospectives, and catchy headlines to make us read articles about our favorite topics. One that I have seen more than once is “2015: The Year of Big Data.” I thought 2013 and 2014 were the Years of Big Data! I’m pretty sure that 2016 and 2017 will also be the Years of Big Data.
Click-bait headlines aside (and I’m guilty of it above), Big Data and the infrastructure that supports it and the mathematical analytics that makes sense of it have been producing great descriptions, prescriptions, and optimizations for years. Short of an electromagnetic pulse that will cause us to restart everything someday, Big Data is here to stay. How will things evolve?
First, there will be more data. I take a very Platonic view of data in the sense that whether or not we collect it, it is out there. The amount of sunlight that hits every blade of grass or soybean plant is real, though we don’t measure it all and we don’t therefore have it in some file or database somewhere. We will collect and store more data once we understand why we need it and how to get it.
Second, raw data can be messy and hard to use. We’ll continue to devise ways to clean it up, filter it, compute the missing bits, align overlapping patches of information, and determine metadata that simplifies gaining insights. We’ll figure out more efficient ways of storing the information and invent new kinds of databases. We’ll drastically speed up the time from when we first learn of data’s existence to when we are computing with it and gleaning useful understanding.
Next, we’ll build better and more sophisticated models using this managed data to understand additional kinds of systems and the interconnections among them. We’ll devise more and better algorithms to get more accurate predictions and optimizations, faster. This is the way science works: we build on what we know and have the occasional breakthrough that allows us to do things in new and improved ways or, in some cases, for the very first time.
Finally, this will be translated into more information we can use in practical ways in our personal and professional lives. It will also improve our entertainment and how we read, listen, watch, and engage in sports.
As evidence of how Big Data has been around for a while, sabermetrics, the statistics and analytics of baseball, was being done on computers in the 1960s. We have more data now and better mathematics, but we are seeing an evolution that is expanding and gaining momentum. This is not a statement limited to baseball.
If you are now starting to look into Big Data, good, but get grounded quickly on what it can and cannot do for you. Big Data is just becoming the way we do things. 2015 will be a very good year for Big Data, I agree, but make it great for you and your organization. Whether or not you realize it, it is the basis for how music and movies are recommended to you, how retailers market to you, and increasingly how health treatments are determined for you.
Turn this around and employ Big Data and analytics to make smarter decisions. That doesn’t sound like a new idea for 2015, does it?
This blog entry is also available on LinkedIn.
At some point in your life you go from being a person who is mentored to one who also is a mentor to others. I’ve had many corporate roles, so I’m usually not at a loss to have at least something to suggest to a younger colleague. Here are some of the ideas and themes which I often discuss.
Note that I have always worked for a computer technology firm. Further note that I have never worked in sales or consulting, though I have been involved in many client engagements with both.
- There is no one other than yourself who is ultimately responsible for your career.
Don’t wait around waiting for someone higher up to notice you and give you a great opportunity. Make your own opportunities.
- Don’t be invisible.
If management does not know who you are, it is difficult to evaluate you against better known people, and hence harder to recommend or accept you for new challenges.
- Be of value to senior management but don’t be a pain in the neck.
You should be someone who does highly professional work dependably on time. However, your working with leaders should be based on your value to the organization and not on your desire to cozy up to people who can promote you. Such employees are obvious from a mile/kilometer away.
- Be aware of what else is going on in your industry in order to be best of breed.
In large organizations it is easy to engage in group-think and convince yourself that what you are doing is exactly what should be done for your clients or stakeholders. Benchmark your group and your “product” against the best that is available, and then add your own ingenuity to move your organization in a better direction.
- Use social media to responsibly state your views and thoughts.
I’m not thrilled with the overused term “thought leader,” but you need to become one. However, if you think your organization is going in the wrong direction, work internally, not externally. If you feel you can add good ideas about where the industry needs to be in three to five years, state that in a blog entry and give your reasoning. It’s hard to have much depth for such thought pieces if you operate 140 characters at a time.
- Search out opportunities to represent your organization publicly.
If we trust you to represent the organization externally, we will likely trust you with other responsibilities as well. If you have language or presentation skills that need work, take the personal initiative to improve them.
- Don’t have just one mentor.
You may have one official mentor, but get several different perspectives. Even if you think that 90% of what someone tells you is irrelevant, that other 10% may be very significant for your personal success. Don’t be shy about asking someone to be a mentor but also don’t be heartbroken if he or she declines. Some senior executives get so many requests they could not possibly do their jobs and mentor everyone who asks.
- Get a range of experience.
In a large company you can have many different roles. For example, I have both headed a marketing group and led the research math department. In small organizations you will likely have to work for several companies to get more skills and possibly a higher salary. In either case, the more you know about business, technology, and your industry, the better chance you have for success and leadership positions.
- Aim to be a leader, not a manager.
It is easier to teach someone the mechanics of management than help them become a trusted and admired leader. If you are a manager, though, be a very good one since you are not simply measured by your personal contributions.
- See to completion important projects and deals.
In baseball terms, game-winning home runs usually stand out more than many singles in losing games. Participation, or just showing up, is not a substitute for seeing the big picture, assembling a great team, looking after details, keeping to schedule with excellent work, and delivering breakthrough innovations, products, or services. Whatever your metric for success is, such as profit or a cure or relieving hunger, exceed expectations. Sounds easy, no? Sounds impossible if you don’t try.
- (Bonus) Have a 5 year plan.
Think about where you want to be going over the next 5 years. This will help your mentor give you suggestions for how to learn more about your options and opportunities. Your mentor is not there to decide your future: he or she can help you accelerate toward making the right choices for you.
This blog entry is also available on LinkedIn.
Today I installed good instructions available on the web. I installed Ubuntu from a USB stick.14.04 dual-boot on an Acer machine that came preinstalled with Windows 8.0 but has been upgraded to Windows 8.1. It’s slightly trickier to do this on modern machines, but there are
The installation was multi-step but straightforward. When I was done, however, it sure looked ugly on myTV monitor. First, the screen extended extended horizontally beyond the physical monitor screen, so the icons on the app launcher were chopped off. Second, the fonts appeared to be low resolution despite what I did to the Ubuntu Display settings.
After poking around for help on the web, I discovered that neither problem was an Ubuntu problem, but both were issues with the Samsung TV settings.
To change the Samsung TV settings, press Menu on the TV remote.
To adjust the screen size, go to Picture > Picture Options > Size. Then select either 16:9 or Screen Fit. One of them should fix your problem, probably the latter.
The second fix is unintuitive but has to do with how the TV monitor deals with input from a computer. I have my computer plugged into the HDMI1 port on the TV, which showed up as HDMI1/DVI in the screen source. In the TV menu options, go to Source List > Edit Name. Then go to the port where you have the computer HDMI cable plugged in, and change the name to PC. Presto, everything is beautiful.
While there are many second and third party sources for social media on the web, I find the primary ones most useful. That is, for example, I think that what YouTube says about its numbers is more valuable than comments from others who repeat other stats they heard, somewhere.
So here are a few links to those primary sources. I’ll add more when I find them.
Today the World Wide Web Consortium ( ) is celebrating its 20th anniversary as an organization. Luminaries and participants in the open standards effort will be gathering in Santa Clara, CA, this afternoon for a Future of the Web Symposium and then a Gala Dinner. I’m in New York, unfortunately, but I’ll be thinking of the times I spent on the standards, and the politics that changed the way we do technology today.
Here are some memories and thoughts.
- The earliest mention I can find of my involvement in the W3C is a note from Ron Whitney on July 11, 1996, stating that I had joined the new standards effort around the Mathematical Markup Language (MathML).
- The MathML group was composed of mathematicians, publishers, software developers, and some other unlikely people to be thrown together to produce “a web standard.” When MathML was eventually made an official Recommendation, we believed that it was the first standard from the W3C to use XML, other than XML itself. It’s still a cool standard, but its implementation in browsers is still sketchy nearly 20 years later. MathML is part of HTML5, so I hope it will finally get the first class treatment it deserves.
- Lauren Wood did a brilliant job of keeping the working group members, many with competing commercial interests, in line and directed toward the final standards product.
- Though I had done significant coding on a Netscape plugin, I often felt out of my depth compared with people from Netscape, , and other browser makers.
- I was amazed that the Netscape and Microsoft people spoke civilly to each other, given all the press about their competition and supposedly acrimonious relationship.
- Chris Wilson of Microsoft once said of a proposed new feature that it would break the browsing experience for millions of users. The scale of the web and how the standard would be used really struck me then, but at that point I had no problem breaking things in order to get to a better, more elegant solution.
- I first met Tim Berners-Lee in his office at MIT on a cold day. He was brilliant, focused, and all consumed with doing the right thing for the web. No other leader could have gotten us to where we are today, and that’s a very good thing.
- I also met Janet Daly at about the same time. She was also brilliant and committed to driving the right messages about the W3C to not just put it in a good light, but to change the world. The W3C and the standards world needed her at that right time and right place.
- As my position in changed from someone who created standards to someone who helped manage the creation of them on behalf of a company, so too did my relationship with the W3C. Let’s just say there was some tension regarding and the W3C and where new work was to be done. In all that time, however, W3C reps and employees were solidly professional and driven to do the right thing, despite what might benefit any particular commercial entity. I applaud them for that.
- Royalty-free licensing: kudos to Tim and the organization for raising the issue and forcing the rest of us to play along.
- I’m still not convinced about RDF and the whole Semantic Web thing, but then again, nobody asked me. :-)
So, finally, my heartiest congratulations to Tim and the W3C staff, past and present! It’s been an honor for IBM and me personally to have worked with you these twenty years.
Over the last several years, I’ve been deeply involved with‘s Mobile efforts and now lead that technology area in . In the last year we’ve held several hackathons and other events to get more and more people knowledgeable about how to create mobile apps. So with this experience and recent partnership engagements, let me offer five ways where I think people go wrong when creating an app.
- You don’t know who your user is or you are targeting too many kinds of users.
Mobile apps do not need to be all things to all people: you are allowed to create multiple apps that are fine-tuned to each user role. If a user asks “Why is this function here? It doesn’t apply to me.” you haven’t designed your app well. Different apps can use the same backend data but use it differently.
- You are not targeting one or two major functions or pain points.
Classic desktop and enterprise software have hundreds of features, but this does not work well in the form factors, user interfaces, and interaction patterns of mobile devices. Focus on one main task for your app that solves some specific problem or provides some great feature. As that gets refined and gains acceptance, you can add a small amount of new functionality as long as it does not detract from the main mission of the app. As in the first point above, you can have multiple apps and these can use the same backend data.
- Mobile is not essential to your solution.
Mobile devices are portable and have connectivity while you are away from wifi. While it may be nice to have a mobile version of a desktop or browser app, are you really taking advantage of the device’s features? Have you rethought the processes involved in accomplishing a task? While I would (and have) applied for a mortgage through a desktop browser, there is no way I would want to use the same process on a mobile device. Can your app offer significant usability improvements so that no one would want to use the non-mobile version?
- Mobile is an afterthought.
In this case, you have a really great idea for some system, undoubtedly doing amazing analytics with really important data. At the end of describing what you have, probably for an hour, you then say “and we’ll deliver it on a mobile device.” This makes you buzzword-compliant but not much more when it comes to creating a great app.
- Your app is not awesome.
You know when something is awesome and when it is not. If you start using an app and can’t wait to use it again, it is awesome. If you want to use it when you first wake up in the morning, it is awesome. If it becomes essential in your business or personal life, it is awesome. If you check it a dozen times a day, it might be awesome. If you use it once and forget you have it, it is not awesome. Use design thinking and get a good designer to help you. Practice lean principles to ensure that it gives people enough of what they really want or need.
I’ve been playing around with Swift, the new programming language from many languages and development environments since I started coding when I was 15, so I was anxious to see what Swift offered., for a few days and I’ve been quite happy with it. I’ve used
I’ve by no means used all the features yet, though I’ve read about most of them in Apple’s online language guide and reference. I’m using XCode 6 Beta 6, so I expect that some of the gotchas and incomplete implementations will be addressed in the next beta or the final version. Even after that I would expect the language to evolve further since most do.
Some of the things I like:
- Clean syntax
- Fast compilation, when it works (see below)
- Garbage collection
- A nice attempt at bringing the power of older languages like C++ into a more modern form that includes some features resembling those in
- A simple way to override syntactic operators like addition, negation, and multiplication.
My plan of attack here has been to take some C++ code I wrote 5 years ago and translate a subset of it to Swift. That way I can see how I would translate the ideas and structure into the new language. It’s been a good way to learn the language.
- Passing by reference and passing by copy are clearly distinguished with less syntax than C++.
- Because of the way it treats Unicode in a first class way, working with strings is more awkward than in many other languages. The need for Swift to coexist with Objective-C is also part of the reason, I believe.
- The automatic garbage collection reduces code size over my previous manual methods.
- I’m being more meticulous about when I can destructively change an object. (Almost never, and only close to where I create the object using specific init functions.)
- I’m looking forward to a larger collection of standardized collection types. Here I would expect a huge improvement over the Standard C++ Library.
- Once my core translated subset is complete and working well, I’ll look at using more of the idiomatic features of Swift and optimizing the code.
While working in the XCode editing environment, I hit a point where the computer CPU usage shot up to close to 100% for SourceKit, the underlying code base that handles all the editing, syntax checking, and code issue finding. Editing slowed to a crawl and sometimes I would get a message that SourceKit had crashed. Compilation took many minutes but the execution was correct.
I looked around the web, especially on StackOverflow, and found other mentions of the behavior but no great solutions and no problem situation that matched mine exactly. Eventually I went old school: I commented out most of my code and selectively added it back in until I could isolate the offending lines. Note that this was not a runtime error but an environmental problem while editing. That is: not my real problem.
If I had done something syntactically wrong, the editor or the compiler should have told me and not sucked up all the resources on my computer. If I was not doing something wrong, I should have seen no slow down.
Eventually I found that the offending code was
var s : Int = (u.bigits[j] * b + u.bigits[j-1] - q * v.bigits[n-1]) * b + u.bigits[j-2]
There is nothing wrong with the code except perhaps its complexity. I broke the statement into several simpler ones. By the way, I know I could have used “+=" but I wanted to be explicit and mirror the original statement.
var s : Int = -q * v.bigits[n-1]
s = s + u.bigits[j-1]
s = s + u.bigits[j] * b
s = s * b
s = s + u.bigits[j-2]
The problem went away. Editing and compilation speed returned to normal.
So the moral of this is that when working with betas of new languages, expect a few glitches and work around them. In the next release of XCode I’ll try my original statement and see if it has been fixed.
I’m looking forward to trying the new generics and constraints features. Though they look new to Swift, the ideas go back to at least the early 1990s.
Two other tidbits:
- If you know the type of an object, it does not hurt to be explicit in stating it. While it could be inferred, stating it makes the code more self-documenting.
- This release does not like spaces between unary prefix operators and their operands. That is, “- x” is flagged while “-x” is not. We’ll eventually see if this is a bug or a feature.