jump to navigation

Five Trends to Understand and Better Your Software Engineering December 16, 2011

Posted by mattpassini in Software Engineering.
trackback

Knowing where to put the semicolons and dereferencers is a prerequisite for software engineering.  However, knowing how to relate the entire gamut of software engineering to emerging trends will put you, your code, and your business ahead of the pack.  While new tools, methods, ideals, and management styles can ease the process, one must remember that the most valuable asset to engineering is the talent of the human resources.

The Big Three – Cloud Computing, Mobile Devices, and Social Networking

Although I consider the big three to be three separate trends, they are so interrelated and dependent upon each other that I feel they must be discussed together.  To start, cloud computing has been around since the dawn of networks.  Specifically, when the public internet was created, it did not take long for data to be stored on public facing servers.  Essentially, this was the start of cloud computing.  Like every technology, it has advanced and evolved immensely since that time.  Of course we continue to store data, such as email, documents, music, contacts, et cetera on the cloud.  However, the newest trend is to store processing power in the cloud.  The efficient sharing and utilization of hardware infrastructure between companies now allows for the entire information technology process to reside online.  It is essential for software engineers to understand not only how to write a program that utilizes data on the cloud, but how to design a system that can take advantage of the scalable and distributed nature of cloud computing.  However, one must not forget the large privacy and security issues that has slightly stunted cloud computing’s growth into many market segments.

Like cloud computing, mobile device use has been around for quite some time, although, it has only recently hit the era of exponential capability growth.  Mobile device manufacturers tried everything to decrease the size of devices and are just now realizing that it is not the smallness of the device, but the usefulness.  While the argument of native versus online apps is far too idiosyncratic to generalize, the greater concern is that users are able to effectively use your product on the go.  Ubiquitous and universal access to your system is no longer just a luxury, it is a necessity.  When engineering a system, one must consider how exactly users are going to require mobile and remote access.  It may call for the elegance and speed of a native app, or it may just be a mobile friendly version of a web based app.  Taking advantage of cloud computing is a foregone conclusion when engineering for mobile computing.

There is no doubt that social networking has also been around far before its modern day definition, yet, online social networking has fast become one of the only online activities for many users.  The companies and engineers who had the foresight to beat the pack with integrating social networking into products have reaped rewards far beyond their expectations.  Word of mouth is back, and any product that is not taking full advantage of the online word of mouth networking is losing out on invaluable chances.  Executives and marketing heads are desperately attempting to retrofit traditional ideas into the online social networking world.  Software engineers who are able to integrate networking into their products will succeed with unprecedented results.  The ability to properly integrate software with cloud computing, mobile devices, and social networking will be a highly sought skill few engineers have today.

Agile Development Featuring Scrum Methodology

Any engineer who has been a part of a failed waterfall approach, and has then been a part of a successful scrum project knows that the feeling is akin to switching from a Geo Metro to a Rolls Royce.  Quite frankly, the product owner feels the same way.  Agile development, specifically the scrum methodology, allows for large complex projects to be broken down into manageable compartmentalized features, and then solved systematically and iteratively.  A single scrum team is generally made up of less than 10 developers, with its own scrum master, or team lead.  The team works in sprints, which are generally a few weeks long and result in an actual working product.  Each sprint is broken down into tasks, prioritized, and then assigned.  Quick daily meetings allow for the entire team to understand any difficulties and cut them off before they become issues.  If a member falls behind in work, another member can easily help with a specific task.  The team lead keeps track of the hours allotted for each task, and how far each member is on each task.  This allows for a daily report of how far ahead or behind the team is.  Developers like working in this environment due to its fluid nature and the ability to track progress daily.  The product owners love the methodology because it provides a working product at the end of each sprint, or the ability to reexamine the scope early on if deadlines are not being met.

The Software Ecosystem

While specific trends, such as cloud computing, mobile devices, and social networks deserve their own segments, they all reside in what is becoming the software ecosystem.  Not too long ago, major software companies was quite secluded in that ideas, APIs, SDKs, and platforms were not shared with any other market players.  Each organization had its own unique infrastructure and internal ecosystem that was not to be spread or mixed with others.  Fast forward to today, the most successful companies are those that provide and share the most with the software ecosystem.  Looking at the big three noted above, it is hard to excel in any of those categories without taking place in the software ecosystem and using both hardware and software infrastructure provided by, at times, competing companies.   It is essential for software engineers to understand how to properly incorporate the larger software ecosystem into products.  However, if one is looking to truly revolutionize a product or market segment, one must not look to simply utilize the software ecosystem, one must create a large product others are then forced to use.   In other words, the most successful software does not just use the ecosystem, but provides a platform for which other software must then incorporate in order to compete.   Do not play the game, be the game.

Advertisements

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: