March 9, 2010 § 2 Comments
It’s late, and I should be asleep and dreaming. Ok, I’m not sleeping, but I am dreaming. Recently, I’ve realized that I have a strong leaning towards working as a part of a team – I may be a team of one, but I’d rather work on a team of more. I’ve done both but prefer the latter. I’m also thinking that I could build and lead a team pretty well for a project of my own creating. Not only that, but it could be fun. I’ve found myself recently in the presence of bright, creative, enthusiastic developers who are dissatisfied with their jobs. I know how programmers work because I am a programmer. Without divulging the innards of my idea(s), I can say that the “skeleton” of my team looks like this:
- Designer, UX professional
- Myself, as developer, business analyst, marketing (with the help of the Designer), and sales
- Another developer – we are always better in pairs+, and my idea(s) may involve a technology that I am not sufficiently knowledgeable of.
I’m going to leave number four open, for now 🙂
February 7, 2010 § 3 Comments
Seth Godin is one of my favorite bloggers, and his latest book “Linchpin” is on my list of books to read. I almost always agree with what he writes and walk away inspired. Yesterday he posted this on his blog:
The relentless search for “tell me what to do”
If you’ve ever hired or managed or taught, you know the feeling.
People are just begging to be told what to do. There are a lot of reasons for this, but I think the biggest one is: “If you tell me what to do, the responsibility for the outcome is yours, not mine. I’m safe.”
When asked, resist.
The following morning (today), it had been retweeted 440 times and my Google reader tells me that 60 people actually liked it.
There are many people who actually need to be told what to do and not because they are trying to shift responsibility. Thankfully, Seth acknowledges that there are other reasons why people need to be told what to do, and I will not go into those here (ok, maybe one reason). I disagree with Seth in that I don’t think this is the biggest reason.
I’m not a manager, and I haven’t hired anyone. I have done some mentoring and have been a lead developer on a couple of projects. Drawing on that experience, people programmers need to be told what to do for a few different reasons:
- They lack experience.
- There are so many choices in terms of tools in what to use in developing a solution. “Telling a programmer what to do” helps create consistency in a project making it more maintainable.
- Programmers often get overly excited about learning new technologies that they will use the new technology even when it isn’t appropriate to the solution.
- Development efforts, especially in large organizations, need to adhere to an architectural vision and a set of tools and frameworks. Without this “telling what to do” you have skills, software, and programmers running amok creating technical chaos that results in a hemorrhaging of cash with little of quality to show for it.
Knowledgeable technical leadership is invaluable. Self-motivated people like me crave it because it better enables me to create quality software that matters, that won’t be scrapped in six months. Organizations benefit because it saves money, minimizes frustration, reduces time spent on throw-away code, and technically enables the marrying of multiple systems to be done more easily and efficiently.
January 9, 2010 § 1 Comment
Just a little background information… I have three little girls, one of which is gifted and the other two I would expect would test so also as soon as they are old enough. My gifted girl is seven, and I’m always trying to come up with ways to teach her things I know she could learn but is not being taught in school. I want to inspire her and help her live up to her fullest potential.
It is fascinating to me to watch her interact with different technical devices. For example, she often tries to scroll my laptop and my blackberry by using her fingers. For a device not to do this, in her eyes, is simply counter-intuitive. I’ve bookmarked a lot of quality educational sites for her, and it’s interesting to watch her navigate the sites. Want a true test of usability? Hand your app over to a seven-year old.
It’s my opinion that we need to be teaching children the basic concepts of technology in a way similar to how math is taught. Explain when data is going in and when it is going out, what code is (at a very high-level), and what it means to download. Most likely though, this will not get a child excited about technology, especially if the talks are lengthy and too detailed. What is going to get them excited is getting to play with all the cool gadgets. I’d love to play a game with my daughter on a Microsoft Surface and then get her to come up with an idea that uses it. Location-aware technology will surely produce some quality educational apps for kids.
Technology presents a multitude opportunities to learn and mediums for kids to work with. One of my recent favorites is Wordle.net. Spelling homework isn’t so boring anymore! I’ve also been working on creating a blog with my daughter. We’ve talked about graphs, code, widgets, and email.
My sister (who is an excellent kindergarten teacher having been named teacher of the year many times) made an excellent point the other day when I was telling her how bad my daughter’s handwriting was. She said, “These kids will probably rarely use a pen or pencil to write when they grow up. Think about how often you do now.” While I still think her handwriting should be legible, she’s right. With the growing advances in voice-to-text technology and the availability and ever-lowering costs of netbooks and tablets, I would expect these to become as common as a cellphone in the years to come.
Quality education in our homes and in our schools must include solid teaching of technology, get kids (especially our brightest, gifted kids) excited and exposed to new and innovative products, and inspire and enable creativity. Doing so now will pay dividends later both economically and socially for our country. To not do so could be devastating.
January 3, 2010 § 2 Comments
My Own Top Five Technical Goals
1. Diversify! It’s time to put some energy into some new projects.
2. Learn something new. This list could be one of its own. At the top of that list would probably be mobile development. I have plenty of good ideas. Time to execute. There are also a lot of new .NET development tools I’d like to get my hands on. I want to read more on design methodologies, web 2.0, and usability as well.
3. Get some real agile training and learn how to be a better lead on a development project.
4. Seriously consider starting my own business. I was really encouraged by a recent post from Jason Cohen. Part of this consideration process will be to educate myself more on startups.
5. Find a way to fund some or all of my Top Five Gadgets I Cannot Afford But Want Really Bad.
Which leads me to…..
Top Five Gadgets I Cannot Afford But Want Really Bad
1. A Droid.
2. An iPhone.
3. Either a tablet (iSlate?) or a netbook. In red.
4. Wireless speakers to play internet radio throughout my house.
5. A Garmin watch.
December 31, 2009 § Leave a comment
In my home live five people, all of whom wear different sized socks. Among these socks of different sizes are different colors and brands. Laundry must be done almost daily, and we all know there’s a secret land where mismatched, mate-less socks go leaving one stranded. Matching them up and putting them away takes a lot of time. There’s also the issue of the kids stripping them from their feet multiple times a day (if you looked under my couch, chances are you’d find some socks).
I’ve tried many processes to mitigate sock loss including buying one brand per person, safety pinning dirty socks, and designating a wash and store bag per person for only socks. When all these systems failed, I came up with a new one and to my surprise, it’s been very effective: The Sock Box. Socks get washed with the rest of the laundry, but when it’s time to fold and put away the laundry, ALL socks, regardless of color, size, or brand, go into The Sock Box. As time permits and on an as-needed basis, socks can be paired, sorted, and delivered. If there isn’t even time for that (or mainly, there are better ways in which I choose to spend my time), then the sock-less person can go to The Sock Box and there is always a matching pair there. Beautiful!
How could a technical Sock Box benefit us? Do we already have a Sock Box? Do our IT organizations have Sock Boxes? Niche programming, lack of collaboration, working in silos, multiple platforms, good ideas that nobody hears about because they get lost under the couch… These are all lost socks, wanderers, left to attract dust bunnies and eventually are discarded for yet another pair. Social media, especially within our IT organizations, could create a Sock Box where ideas meet and connect and become useful. Unified platforms streamline our development efforts and the maintenance that follows. In need of a new, innovative idea? Check The Sock Box.
December 24, 2009 § 1 Comment
I might have had an “Oprah-A-ha” moment. Twitter has given me the ability to follow any entity I like as long as their tweets are not protected. A few months ago I created my first Twitter account. Soon, I’m following people and groups that span a diverse group of interests. Then, I’m tweeting about my equally diverse areas of interest. Soon my tweets are in the thousands, and I’m wondering if I need separate Twitter accounts to avoid losing one community over another – my techy followers may get bored with my gifted education tweets or my food tweets. You’re probably familiar with the dilemma. There are apps for that.
Because introspection is ingrained in my personality, I had to ask myself “what is the common thread in all these seemingly diverse interests”? What is it that has me up at night writing and reading about it? These questions combined with the ever-prevalent question of “what am I going to be when I grow up” has led me (in a very logical manner, of course) to consider what drives me and what will continue to motivate me and excite me in a career for the next 20+ years. It’s innovation and enabling great minds to develop their ideas and deliver. Linda Cureton, the CIO of NASA, shares this vision in her blog. Whether it is one of my own gifted children or a promising colleague or a brilliant artist or chef… The common thread is helping people live up to their potential and building community so that they can help each other.
Does that mean I’m ready to take my hands out of the technical pot? No way. I love building and creating too. I want the same things for myself as I do for others who are intelligent and self-motivated. Detachment from that process diminishes my ability to ultimately enable others and improve upon their processes and methodologies. Where that puts me in terms of a job title, I have no idea.
December 23, 2009 § Leave a comment
Alan Cooper hits the nail on the head when he compares programmers to “normal people” in “The Inmates Are Running the Asylum”. We trade simplicity for control (we’re by nature control freaks), we sacrifice success for understanding (isn’t understanding a major part of success?!?!), we often put so much time and effort into what is possible that we lose sight of what is probable (we’re card-carrying pessimists), and we act like jocks (if you can’t mentally keep up, get outta the way!).
These traits in moderation make us excellent programmers. In excess though, a pessimistic, control crazed, mental bullying, tunnel visioned code monkey creates an endless money pit with nothing usable to show for all her exhaustive efforts.
The trait of particular interest to me is the desire to understand at the expense of success. It’s more than a desire – it HAS to happen! If I don’t understand how something works, I am reluctant to trust it. When I build a complex system that works beautifully, I am always astounded by the fact that users don’t want or need to know exactly what is going on to produce the final result. It’s satisfying when they do – running through the data to find the end result is correct (pat on back).
Success may be traded for understanding especially when a good programmer embarks on using a new technology – especially those which encapsulate a lot of complex functionality. The failure comes in when too much time is spent at the wrong time trying to understand these inner workings before using them in a project. A better idea would be to gain a basic understanding during the technical design phase or earlier. If a doctor is considering using a new laser-guided instrument to repair an eyeball, she will attain training using that instrument prior to the first operation. However, if she spends too much time trying to understand how the instrument was built, what makes the laser red, etc. then her patients lose out on a proven treatment and there may be a new and better instrument by the time she comes around to fully understanding the old one.