Mind Map Software – a Great Tool for Brainstorming

Are you struggling to be creative? Looking for ways to organize your brainstorming sessions? Or maybe you’re just bored? I have found a good solution for when I am stuck in one of these situations. I look to Mind Map Software for help.

What is Mind-Mapping Software? It is software that helps you to keep track of related thoughts on a bubble-laden canvas. It produces a similar drawing to what you would have put on the chalkboard in 5th grade. Remember that? When no idea was a bad idea?

 

The nice thing about good Mind Mapping-Software is that it speeds up the rate at which we can record information while brainstorming. I type faster than I write so if I can brainstorm digitally, then I am less likely to forget a key idea I had before recording it. Additionally, soft-copies are more easily stored (than 50 white-boards) and can be updated later.

I have used a few of these applications and have definitely found them useful but I would like to do it more. I am just looking for the perfect option at a good price. Below are a couple neat options:

Installed Applications

Mind Manager – I understand this to be one of the leaders in the market, and at $349 it better be robust. I downloaded a trial and was impressed with the software. It had many templates for creating different types of documents, like organization charts and process flow charts. It was also very easy to add new nodes (spacebar) and new child nodes (insert), which is my most important feature.

Using Mind Manager reminded me that these Mind Mapping Software applications are also great for capturing flow charts. During times when you are trying to explain how a process works or how different things interact, fire up the software and draft a quick mind map diagram. Sure, you could use Microsoft Visio to do it but since you’re getting familiar with your Mind Mapping tool you might as well use that.

FreeMind – This is the other leader. It is open-source and free. The interface for this application is not nearly as beautiful as that of Mind Manager, but for technically-savvy folks like us, it is just what we need. FreeMind also suggests some other interesting uses for their product here, such as for a task list or meeting notes. I would choose FreeMind if I were going to install a windows application, but that’s not what I really want…

iPhone Applications

It would be extremely helpful to be able to record brainstorming sessions on my mobile platform (iPhone). Usually, when I am sitting in front of my computer, my head is buried in my work, writing code, blog posts, or email messages. I struggle to take a step back and reflect while sitting at my desk, because I tend to act on the first idea I have with my computer so close and accessible. The best broad thoughts I have seem to arise when I am not distracted by my computer: waiting to board a plane, riding a bus, or running on a treadmill. I’d like to capture those thoughts as seamlessly as possible.

iBlueSky – I am still searching for the perfect iPhone Mind Mapping application and this is not it. It is $9.99, seems limited, and only has a 3.5 star rating in the App Store. It is amongst the leaders of iPhone Mind Mapping applications but I think I will pass on it.

iThoughts – I am definitely going to give this a try. It is $7.99 and looks very intuitive. It has a 4 star rating in the App Store. I am excited to use this with my Bluetooth iPhone keyboard.

Google Wonder Wheel

Google Wonder Wheel is in a class of its own. It’s useful and yet many people do not even know it exists. To use, search for a topic in Google around which you are trying to brainstorm. How about “Mind Map iPhone Applications?” The lowest option on the left menu should be “More search tools.” Click that. Then click “Wonder wheel.”

I could not describe this tool any better than GoogleWonderWheel.com:

“Did you say mind mapper? This tool is a built in mind mapper with the intention to sort out search results in a logical way of relevancy creating a visual wheel of terms that can make your searching enjoyable and time effective at the same time.”

Clicking around the wonder wheel reveals related topics to what was originally searched for. It’s how I generated the chalkboard image above. I recommend playing around with it as you never know what it might help you to find.

Advertisements

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)

Which Platform is the Best for My Mobile App?

I am currently sitting at the Cincinnati Microsoft office attending the CINNUG Mobile Development FireStarter. This free training session covers how to create mobile applications for Android, iPhone, and Windows Mobile phones. I do not have any immediate plans to create a mobile application soon, so what am I hoping to get out of this session?

3 Highlights I Want to Learn Today about Mobile App Platforms:

  • Pros & Cons of different platforms
  • Enough knowledge to be able to manage an outsourced app developer
  • Insight as to which platform is emerging as the leader

Throughout my career, I have been heavily focused on Microsoft development technologies. Often times recently, I have wondered if I should branch out to other languages and platforms. I have not yet done this, but if I were to move into mobile development (something I have limited experience with so far), it would be an ideal time to jump on the best platform as opposed to using Microsoft without questioning the decision. Therefore, I am happy to take advantage of this training session and glad that the format will discuss 3 different platforms.

What Did I Learn?

The training is over and I have formed some conclusions while generating even more questions. Below are summaries of what I learned.

Pros & Cons of Different Platforms

If I want to sell a mobile application then I need to make a good decision for which platform to build it. Each platform has its own benefits so it is possible that each platform could be best for certain types of applications. Below are the high-level Pros and Cons for each platform:

Android

Android Nexus One

Photo by Spieri_SF
    Pro

    Quickly gaining popularity

    Open source    

    Con

    Uses Java

    Somewhat limited for game development

iPhone

iPhone Image

Photo by William Hook
    Pro

    Most Popular

    Same OS for iPhone, iPod Touch & iPad

    Con

    Development requires a Mac

    Uses Objective C

    Only distributable through the app store

Windows Mobile/Windows Phone

iPhone Image

Photo by Brooks Elliott
    Pro

    Familiar tools and language

    Mature – platform has existed for a while

    Con

    No physical devices for new platform version (7)

    Adoption is a downward trend

 

Enough Knowledge to Be Able to Manage an Outsourced App Developer

Realistically, I am not going to drop all my plans or projects to dive in and write an iPhone application. I have enough wisdom to know that would probably be a waste of time unless I really want to learn iPhone development or if I had a great idea for an app for which I knew there was a market. Therefore, I don’t need to know at this time how to develop a mobile application. I just need to understand the highlights.

I am trying to prepare for the moment when I have that great idea for a mobile application. When that happens, I don’t want to be clueless about the next steps involved. I want to have a good idea for limitations of current platforms, which technologies are emerging, and how to move forward getting the thing developed.

Ideally, I will someday “own” a mobile application. When the time comes, my plan is to hire someone to build it, but I do not want to be ignorant to what is involved. By seeing these demos, I have been introduced to developing mobile applications. If I want to learn the details, I know where to start. If I want to hire someone else to develop a mobile app, I can now intelligently discuss the project and properly vet the person’s credentials.

 

Insight as to Which Platform is Emerging as the Leader

Perhaps the most important aspect to deciding which platform to develop for is how popular it is. Simply put, the bigger the market that my application can reach, the more sales leads that can be generated. So which platform will the most users be running when my application is finished and ready to be sold?

At the time of this writing, the iPhone is the most popular of these 3 devices. 2nd is Windows Mobile, with Android placing 3rd.

Most importantly, iPhone users consume the most network bandwidth out of all smart phone users. I believe this is a testament to the high user engagement with iPhones and consider this a forecast of its future growth. Some industry experts have opined that Google’s Android platform will emerge as the leader given its “open” paradigm is more beneficial to developers. Still Microsoft’s upcoming release of Windows 7 Phones may tip the market share into their favor.

I am by no means an expert, but my bet would be that the iPhone will be the dominant smart phone platform for the next few years. The barrier to entry for users is low and it already has a head start influencing the industry. Everyone that has an iPhone loves it and everyone who doesn’t have one wants one. I don’t know a single person who is excited for any Windows Phone news and only a few who are aware of Android’s developments.

If Apple ever allows the iPhone to be used with wireless networks in addition to AT&T, such as Verizon, look out! They will have removed the biggest barrier left to everyone wanting one.

Which mobile platform do you see emerging? Which platform would you recommend? Your opinion is probably more informed than mine.

Red Flags of Potential Employers

Have you ever interviewed with a company that acted somewhat strangely?

Perhaps the company:

  • Acts reluctant to allow you to give two week’s notice to your (soon-to-be) former employer
  • Is more concerned with filling X position by Y date versus finding a great candidate
  • Has high turnover
  • Scores low on the Joel Test (“2010 Version”)

These are the highlights of my Red Flags of Potential Employers.

Let’s assume the current economic climate is causing abnormal strain on your company. Emotions are running high. Situations are tense. You say to yourself, “this must be how it is everywhere.” I have been in this situation and lived to write about it. In fact, I have specifically worked for companies that have guilted employees into working increased hours & being loyal to the company. To the employees, the poor economy offered zero options to flee. Therefore, the company was able to take advantage of the staff under the guise of encouraging them to aid the company in climbing out of struggling financial times, even though the company was stable.

Fortunately, there are some organizations that have their acts together. In the situation above, a forward-thinking company would have taken advantage of the wealth of talent available, while at the same time solidifying internal morale to retain a high-level of talent.

If you have decided to move on and are looking for said “forward-thinking” company, here are a couple tips to identify them:

Accelerated Projected Learning Rate

When evaluating an employer, it is very important to determine how easy it will be to learn there. This is true for senior-level developers as well as junior and entry-level. Hopefully, you will be able to gather some information about how easy it will be to learn while you are interviewing. An ideal sign would be that you are interviewed by a “lead” developer or you will get to meet the entire team. You want to find a senior-level developer that can clearly communicate. If you cannot find at least one person with a great mix of technical skill and the ability to communicate in-depth concepts clearly, Run!

Disclaimer: This may not apply if you are the one being hired to be that senior-level superstar. In which case, please comment below. I want to read your blog!

Think about how much easier it will be to learn and/or to produce quickly if there is a knowledgeable, experienced technician who is able to communicate solutions to problems. This is the type of person you want to have in your network, but working with him or her every day would be even better.

Existing Development Environment & Architecture

Often times, given varying external forces, developers are faced with situations where a solution seems like it creates more problems than it fixes. This happens at every company, causing the Development Environment & Product Architecture to concede trade-offs.

With this as a given, you want to determine the perspective of the employer toward the existing environment. You would like to see any issues acknowledged via a good communicator who can explain the historical decisions that led to the current environment as well as some of the drawbacks or advantages. It is not unreasonable to ask “what are some of the limitations of the development environment?” Nor to follow up with “what has caused those issues to linger?” You want to hear a clear, objective response that acknowledges the validity of the question as opposed to getting defensive.

The idea is to make sure that the employer recognizes that its system/process/environment is not perfect. It needs to be tended and maintained, just like anything else. If leadership already recognizes that, then it is one less thing that will fall on you to fix later. Also, you may learn that the development environment is rather impressive. If so, you probably want to work there, because you will be able to get more work done and look like a superstar!

Conclusion

All this advice is moot if employers do not want to hire you. Work hard. Stay abreast of new technologies. Work on your communication skills. You will be wanted by a great company, because they are out there!