Published in January 1st, 2012
Like any normal blogger, I obsess about my blog. How much traffic am I getting? Where is the traffic coming from? What search terms are leading people here? The search terms are most interesting when it comes to thinking about new content to write. Today, I am writing about a question I saw in the search terms, why should you become a software engineer?
First, some background about my own journey into software development. When I went to college, my plan was to become a civil engineer. I took two semesters of physics and realized that the plan was not going to work. I found out that I really did not like physics, and to be an engineer you need a solid physics background. Thankfully, I did not need to decide on a major until my second year was completed, and I did some research. I had settled on Industrial Engineering, where I could take some engineering classes as well as some operations and finance classes. It sounded interesting enough, but I thought I might need some help getting a job when I graduated. So, I decided to take an introductory programming class.
This was not my first taste of programming. Like any geek my age, I had written some Basic on a TRS-80 during school. However, my first programming class was like turning on the light bulb. I quickly realized that programming was what I really wanted to do. I changed my major, eventually graduated and have had several jobs in our industry. I have now been coding professionally for over 17 years.
What does this have to do with whether you should become a software engineer? The whole story is not entirely important, but there are some points that need to be understood.
You must enjoy what you are doing. This is even more important in software engineering that some other industries. In many cases, software engineering is not a typical 9 to 5 job. It is fairly stressful as well. If you do not enjoy programming, the stress will demotivate you to the point that your code will eventually suck. I wrote what was meant to be a humorous post about the trials of the job in August 2010. It is supposed to be a joke, but in some environments those points are too true.
You can have some level of job security. In this economy, any level of job security is good. This does not mean that programmers always keep their jobs. We go through layoffs just like everyone else. However, there are a lot of available jobs and the industry continues to grow.
There is good money in software engineering. You may not see large wads of cash to start, but over time your salary will grow. If you look at salary surveys for different locations, senior level engineers can make $100,000 or more.
There is a lot of job diversity available. Do you like working with real-time devices like embedded systems? Mobile devices, like phones and tablets, are growing rapidly and there is a ton of development occurring in the mobile space. Web sites and web applications are continuously being built and require people to know UI development, some server side development and maybe even some database code. If you like to code, there are plenty of niches to explore.
What is your inspiration? Why do you code? Some people like the idea of creating something. Others like solving puzzles. You may like the fast feedback cycle in programming. If you have no inspiration for programming, you probably will not really enjoy the job.
Easier path to independence. Some people may not like the idea of being a wage-slave at some big corporation. Software development allows you to work remotely or build your own consulting business. This is easier than in many other industries, where working remotely is just not a possibility.
Obviously, there is no clear reason to become a software engineer. It is a personal choice and not some stereotype like introverted math and science lovers who are devoted Star Wars and Star Trek fanatics. To find out if you like programming, try writing some simple code. Do not try to build a significant web application or some mobile app, that is too much to start with. Look at some basic tutorials on learning a language and start coding.
Other related posts:
Published in December 24th, 2011
As the year comes to a close, everyone is posting predictions about the new year as well as reviewing their predictions from the prior year. Here at Regular Geek, I would like to look at the trends to determine what changed things and what trends we should watch in the coming year, not as predictions but more as an idea of things to look for.
Last year, I wrote about the following trends, with some new comments in italics.
- Mobile Computing: People thought mobile computing was big with the advent of smartphones. With the addition of tablets like the iPad, mobile computing got a big screen to play with. As we have seen this past year, mobile computing is definitely exploding, and is likely going to become the dominant platform for non-business usage.
- Tablets everywhere: Not only are tablets gaining a lot of acceptance, they have mostly replaced netbooks as the “smaller than a laptop” device. As the prices drop, expect to see dedicated eReaders convert into tablets similar to what the Nook is doing. Granted, this was an obvious trend and we have seen the recent release of the Kindle Fire and Nook Tablet. More tablets are being released every month, but not many have been successful. Pricing is the biggest obstacle, which the Fire and Nook are trying to avoid.
- HTML5: HTML5 gets included because it has such different capabilities than web sites currently have. There is huge potential with this technology and it can also blur the lines of web site and desktop or mobile application. HTML5 video is already replacing flash for many sites. With browser support increasing for all parts of HTML5, we will start to see more interesting applications. It has also become the cross-platform language of choice for mobile applications, which given the drive towards mobile, is very important.
- Instant information: This is the extension of my semantic web prediction from last year. As linked data and geo data become more standardized, more applications will include augmented reality-like functionality. Once acceptance of linked data and geo data is more mainstream, other data silos will follow. This trend has not really gotten started yet. We are closer to having more information at our fingertips, but 2012 will probably be the year for this trend.
- Always On: We thought people were always connected before, but the technologies are finally getting to minority report levels. We have the Kinect and other gesture-based interfaces, near field communication to enable proximity computing, and everything is being integrated with social networks. Gesture-based interfaces are being pushed more, and with the mobile growth our connectivity has definitely increased. Now, this combines with the “instant information” trend to move into the augmented reality space.
- A Massive Data Startup: The one prediction I will make is that some data startup will become huge. We have some players already in Gnip and DataSift, but 2011 is really the year of data and one company will have massive growth. This is the one trend that really seems to need another year to become as large as I suspected. Gnip and DataSift are doing well and maybe I am underestimating what they have done in the past year.
Now that we have reviewed last year’s trends, what trends should we watch in 2012? One important note about these trends is that mobile computing is driving almost everything.
- Mobile and Social Commerce: We have only seen the tip of mobile commerce. Next year should be interesting as we see more in-store mobile deals, price comparison shopping and augmented reality focusing on ecommerce. The social aspect will not be in recommendations, but more stores on social networks and the general integration of social networks with ecommerce stores. The one problem here is that someone’s digital wallet will be hacked.
- Digital Health Startups: With the rise of mobile devices, we can capture more data in more places. Carrying your medical history and a digital archive of your daily activity and food intake can change the way the health and medicine industries work.
- Big Data Usability: In the past few years, we have seen the rise of NoSQL tools but they are in the realm of the developer. 2012 will be focused on capturing and using the data in much easier ways. How about point and click building of a data capture process and some simple tools for analyzing the data?
- The Rise of HTML5: 2011 only showed part of what is possible with HTML5. This is so important that it gets a spot this year as well as last year. HTML5 is changing the way web applications are built, including mobile. So, yes it is that big.
- People Talk About Augmented Reality Again: Augmented reality applications were too early when they were released the first time. They launched before smartphones really exploded and tablets barely existed. Now, mobile is everywhere, data speeds are getting better and we have more information readily available. Part of this is made possible by linked data initiatives and the availability of social information.
- Digital Identity: Let’s face it, your digital identity is either your Facebook or Google profile. It has come to the point where most of the internet will require one of these two logins in order to use a service. Obviously, this is both good and bad, and bloggers will focus on the bad parts, obviously.

Published in December 19th, 2011
Last year, I wrote a post entitled 9 Programming Languages To Watch In 2011. Now that 2011 is basically over, let’s see what happened to these languages over the course of the year. As a reminder, these languages were selected because I expected to see larger than average movement, either up or down. So, there is no Java, Ruby, Python or Objective-C. There are no other typically mainstream languages in this list.
First, here are the comments I had on each language:
- Lua – The language is seeing some good activity on GitHub and StackOverflow. It has a solid Tiobe ranking, but more importantly, jobs for Lua are becoming available. The relative trend for Lua is a great indicator that it is ready to go mainstream.
- R – With data analysis and big data becoming a part of every web startup, languages catering to the data crowd will become popular. The job trend data will be the most interesting part to watch here.
- Clojure – While not popular within the Tiobe index, it is popular in some programming circles. In particular, its job trend growth is showing that it could be posed for a big year of adoption.
- Go – Only Tiobe really shows this as a popular language. It is not ranked well in the Dataist Tier, and job trends are not very reliable yet. However, with a parent of Google it may not need purely organic growth.
- Erlang – This has been around for a few years and has decent trends all around. With the continued growth of real-time technologies like XMPP (eJabberd specifically), PubSubHubbub and others, 2011 could be a year where it becomes the next Python.
- Scala – This is one of the interesting trends. Scala has a very good showing in the Dataist Tier, but is not really ranked in the Tiobe index. With the solid job growth trends and popular adopters (i.e. Twitter), Scala could gain a serious amount of acceptance.
- Groovy – More than anything, I believe Groovy missed its window of opportunity. It is a solid scripting language with decent job growth trends, but how can it differentiate itself from Ruby, Python, Erlang and Scala?
- Scheme – For whatever reason, this language refuses to go away and has even picked up some interest. Without decent job growth, we could be another year away from Scheme breaking out again, at least 30 years after it broke out the first time.
- ActionScript – ActionScript is included in this list because of its high ranking on Tiobe and the Dataist Tier. However, the job trends do not point to good things for the language. It could be a temporary slump, so you should keep an eye on it next year.
So, what happened in 2011? The job trends give us some level of corporate demand. One minor note is that the job data is somewhat noisy and difficult to grab for some languages. Go and R are not in the list because of the difficulty of getting any reasonably sane job demand. Scheme is still included, but it is still fairly noisy data. The following chart shows the
raw demand for the remaining languages:
As you can see, ActionScript continues its decline, and it has started to decline more rapidly. Scheme, even with the noisy data, is fairly flat. Groovy is showing solid growth over the past few years, and Scala demand seems to be increasing quickly. Lua is only showing slight growth, outpacing Erlang and Clojure.
This is where things get interesting. As you can see, both Lua and Clojure seem to be exploding, but that does not yet translate into large job demand. Also growing rapidly, and at almost the same rate, are Scala, Erlang and Groovy. Scheme and ActionScript have no relative growth compared to the others, as is expected.
The
TIOBE Index for December 2011 was recently updated, so it also provides a good comparison. In addition, I compared the activity from GitHub and StackOverflow in order to get a broader picture of activity.
- Go (Tiobe: 34 , Change: -13): The TIOBE rank crashed, going down 13 places. The relative activty on StackOverflow and GitHub decreased as well. Even though Google is the source of the language, it does not seem to be grabbing a lot of more mainstream attention.
- R (Tiobe: 24, Change: +2): The TIOBE rank increased a few places. The StackOverflow and GitHub activity decrease a slight amount, but nothing significant. Given that R is not really considered a general purpose language, its popularity is still somewhat surprising.
- Lua (Tiobe: 21, Change: +6): The TIOBE rank increased solidly, though not as quickly as others. The GitHub and StackOverflow activity decreased a bit, contradicting the TIOBE index. However, the job trends above are very good, so we should continue to watch Lua in the coming year.
- Scheme (Tiobe: 30, Change: -1): Not surprisingly, the TIOBE rank did not change much. The StackOverflow and GitHub activity did not change much either. With the growth of some of these other languages, the need for Scheme is not really obvious anymore. In addition, the job trends are not positive for Scheme either.
- ActionScript (Tiobe: 50-100, Change: ->13): As can be expected, the TIOBE rank for ActionScript declined a lot as it dropped out of the top 50 and into the 50-100 bracket. The job demand shows a similar downward trend. StackOverflow and GitHub activity did not change too much however. I would guess that 2012 will not be a good year for ActionScript.
- Erlang (Tiobe: 29, Change: +20): Showing possibly the biggest gains of the year, the TIOBE rank increased a ton moving up 20 places. The StackOverflow and GitHub activity did not match this growth. The job trend information is definitely showing positive signs, so Erlang is a language to keep an eye on.
- Groovy (Tiobe: 45, Change: +>5): The TIOBE rank increase is somewhat unknown as Groovy makes an appearance in the top 50. StackOverflow and GitHub activity increased as well. The big difference is shown in the job demand, where Groovy has shown really solid growth trends.
- Scala (Tiobe: 50-100, Change: 0): Given that Scala did not break out of the 50-100 tier on the TIOBE index, we cannot estimate growth there. Overall, the relative activity on GitHub and StackOverflow did not change much either. The job trends show a different picture as job demand definitely grows at a solid rate.
- Clojure (Tiobe: 50-100, Change: +?): Clojure moved from the 100+ tier on TIOBE to the 50-100 tier, so there is some solid but unknown growth there. Oddly, the activity did not grow much on StackOverflow or GitHub. The raw job trend information is not great, but the relative growth trends are fantastic. Closure could have a big year in 2012.
So, what’s in store for 2012? Well, I am planning to review more programming language data to get a better idea on trends and mainstream adoption. If you have an idea for other data sources besides TIOBE, Indeed, GitHub and StackOverflow, please let me know in the comments.

Published in December 12th, 2011
I had no idea when I started this blog that it would last past a few months. Now, four years later, I am still blogging albeit a little slower lately. This year saw a typical blogging funk late in the year, mostly due to a lack of time, but also due to fewer big announcements and more smaller product iterations.
So, the top 11 posts written this year were:
- 9 Programming Languages To Watch In 2011
- Traditional Programming Language Job Trends – February 2011
- Web & Scripting Programming Language Job Trends – February 2011
- 5 jQuery Scripts To Create a Great First Impression
- Twitter Stops Whitelisting Applications
- Google Plus Looks Good But Needs An Application Platform
- Traditional Programming Language Job Trends – August 2011
- 13 Free GTD Online Tools For Mac Windows OR Linux
- As A Software Engineer, Do You Really Like Your Job?
- Google Sites Becomes A Real SharePoint Competitor
- 36 Resources To Help You Teach Kids Programming
Why 11 posts? Well, the top post was written one day before the anniversary last year and most of the traffic occurred after the anniversary. The job trends posts continue to have a strong showing regardless of when they were written. The social posts still tend to appear but they are more programming related as well. This continues a trend from last year.
Other posts that were very popular from previous years:
My total statistics at the end of year three show that I was already writing long posts:
- Months Blogging: 36
- Posts Per Month: 11 (400 posts total)
- Words Per Post: 851
- Total Words In Posts: 339528
I continue to go against common wisdom and write posts that are even longer:
- Months Blogging: 48
- Posts Per Month: 12.3 (180 posts this year, and 580 posts total)
- Words Per Post: 887
- Total Words In Posts: 514328 (174,800 words this year)
This year saw the introduction of my list posts (93 so far) in the Geek Reading category, and the subsequent demise of those posts with the changes in Google Reader. I do hope to restart those posts when I can determine the best way to implement them. Ignoring the Geek Reading posts, my blogging was technically slower than last year, with 87 posts or just over 7 posts per month. I continued the trend of writing far too many words per post, but people keep reading.
The other side of the blog statistic picture is the external statistics. This past year, the blog had solid traffic growth and good subscriber numbers. Technorati continues to change how their rankings work where my ranking in Technology and InfoTech seems to range from 500 to 5000 and 100 to 2000 respectively. Google changed how their search engine worked again, and that seems to positively impacted traffic to the blog. Feedburner finally dropped FriendFeed from the subscriber numbers, and it recently peaked at 3010 subscribers.
The social landscape continues to change as much of the social sharing has been wildly different than previous years. I no longer see traffic from Digg or Google Buzz, but I now see traffic from DZone, LinkedIn and Google+. Facebook and Twitter look to be mainstays in social for any blog.
As always, thank you for your continued reading and social sharing. Hopefully, this blog will continue to be useful to you.
Published in December 10th, 2011
This past week, both Google and Facebook made more announcements regarding their ecosystems. Google is slowly integrating Google+ into everything, this time adding features into GMail and Contacts. For GMail, you can now share photos directly from within a message. Contacts are now showing your Google+ circles as additional groups. Facebook launched a new subscribe button for websites. This new button is similar to the Like button:
The Subscribe button for websites works just like the button on Facebook; once clicked the user will begin seeing the public posts of the person they have subscribed to in his or her News Feed. The subscribe action is also shared — allowing others to subscribe directly via the News Feed stories, and further increasing viral distribution.
So, the subscribe button is Like 2.0, where they added “frictionless sharing” to the original Like button. By themselves, these two announcements seem like basic iterations of various product features. However, you need to look at these posts within the larger scheme of things.
Google is integrating Google+ with all of its products. Some people did not think adding a “social layer” on top of the applications would be a good thing, but we are being proven otherwise. The idea is very similar to the frictionless sharing that Facebook has been talking about. Being able to quickly +1 and share from other Google sites, like YouTube, and within GMail means that more activity can be generated easily.
Facebook is learning that the simple Like is not quite good enough. Sharing is the main way content goes viral. So changing the way Likes work, and making things move towards a full share helps with “viral distribution”. Obviously, making sharing easier would be a huge win for Facebook if users can control what content is shared with what people.
However, there are problems with both systems. Facebook has a huge user population. But the user sharing control is not entirely seamless. Groups and selective sharing are not really core to the functionality, but add-ons. Facebook users are also not used to sharing with groups as much as just sharing with people that are friends. Google does not have as many users, and has had its own share of privacy issues. However, their selective sharing circles have been baked into everything. So, once you started using Google+ you were always using Circles. But Google+ is not without problems. Business pages are still evolving after a very shaky start.
Both systems are providing frictionless sharing, while giving users some control over who sees what content. So, which system should you choose as a user and as a business, blog or website? Obviously, the answer is both, but whether either system wins comes down to how the integration points really work. The integration points are things like the plugins for websites and blogs, developer APIs to help build an ecosystem of third party applications, and the mobile platforms.
Website and blog plugins exist for both systems and only provide minimal integration. Third party applications and mobile platforms are where the systems can really try to differentiate themselves. Facebook’s API platform has existed for a longer time, and social gaming has really grown rapidly. Google+ is still developing their API, which has some glaring holes, but they started their platform push with social gaming in an effort to jumpstart development activity.
The difference may be found in the mobile platforms. Facebook has a solid API and some mobile applications. On the other side, Google has Android and its tight integration with all things Google. This could be a huge advantage for Google as the mobile industry, as well as Android adoption, is exploding. Google+ even has a very nice mobile application.
The APIs may be a large part of luring developers, but even developers want to get paid. Monetization will be a huge question when choosing between the platforms. Google has a history of trying to be more developer friendly than their competition, or at least not as controlling as their competitors. Facebook has already shown that developers can monetize the Facebook platform, with Zynga being the poster boy for Facebook monetization.
Will developers choose the winner, or will a huge existing user population choose the winner? Will ease of monetization point to a winner or will mobile integration be the key? Do we really need a winner or will these two behemoths decide to provide integration across the platforms?