What language will you choose when you're ready to go to the next level?
Development languages. There are many of them! If you're curious, the Tiobe Index ranks them for you based on popularity calculated from various search engines. For November, C is #1 again, Java is at #2, PHP is at #6, and C# is at #5. COBOL has fallen a spot to #28, CL gets in at #65, and RPG ekes out a spot in the top 100 at #93. Check out the new Google Trends tool for another comparison. For the most part, RPG and COBOL hold our legacy on the IBM i, while Java and PHP are the platform favorites and are heavily positioned by IBM for the future.
Take what you will from the Tiobe index, I find it fun to have a look at once in a while. It is interesting to see trends come and go. For example, only five years ago RPG was ranked at #18. What do you think it means to go from #18 to #93? Everyone knows they need to modernize. RPG and COBOL have their issues, but mostly the problem is the sheer quantity of code and unwillingness of developers to venture into new worlds. Some tools open up the opportunity to breathe new life and options into RPG (Open Access being one of them), but even adopting those tools requires the adoption of other technologies.
The big question is this: What do you choose when you're ready to move beyond RPG or COBOL? In the IBM i space, .NET has often gotten a bad rap. But why? I believe mostly due to fear, which spurs the impulse to Forget Everything And Run. Alternatively, I like to take a closer look at that fear and see if it is actually False Evidence Appearing Real. In this case, I believe the false evidence is that Microsoft is the devil, and adopting .NET means moving off the platform. Both of these reasons I consider to be arguably absurd. I encourage you, IBM i developers, to take a closer look. .NET just may be what you've been looking for all along.
Whether you already use .NET or not, you may be wondering if it is really right for you. You may also have already cast it aside. No matter, the following are 10 reasons you may want to take a closer look at .NET.
1) Microsoft's Vast Ecosystem: Widely Known and Large Community
Coming from legacy IBM i development, we programmers were very nervous in the early days about adopting .NET! We had evaluated Java and PHP, as well as other options, but ultimately chose .NET. Developing in .NET was completely new to us. It took some learning just to figure out where to start, to understand where to go after "Hello World." But, once we did, it was like the shackles were removed and we were free. There were so many options, so many capabilities. But now we had a new problem—too many choices. There were so many ways to do the same thing. We started second wondering whether we were doing it the right way. Would the users like it? Would it perform well? Being developers in the IBM i space, where we have always felt so sure of what we were doing, that was probably one of the most frustrating and debilitating issues early on.
That's when we found our next enlightenment. The knowledge base and huge community-driven ecosystem available was fantastic, from both Microsoft themselves and the vast development community. One of the most critical pieces often overlook in modernization projects is the ability to get answers and find readily available help and talent. For this, you must use technologies and tools that are widely known. The Tiobe index and technology job boards are good indicators of how widely a technology is used; however, I suggest you also look into other areas to get a full grasp of what's available. Some examples are:
- The Technology Provider's, in this case Microsoft's, Resources:
- Microsoft Developer Network, MSDN
- Microsoft Partner Network
- Microsoft's patterns and practices—The guidance and jumpstart they provided in their Prism guide, for example, was very helpful for us getting started on our Windows Line of Business Apps. The patterns are broken down into categories based on your needs (cloud, phones, services, software, web, and desktop).
- Training and Educational Options: Have a look at Reason #7 for details on this.
- Open Source Options: Check out CodePlex and other open-source communities. Even Microsoft's ASP.NET MVC, Web APIs, and Razor Web Pages are open source.
- Online Communities: There are thriving generalized communities such as Stack Overflow and Code Project that provide significant .NET targeted sections. A simple Google search will yield many more. Channel 9 is a great Microsoft community site that has video channels, discussions, podcasts, screencasts, and interviews with everyone from community members to Microsoft execs. There are also numerous developer blogs. Check out ASP.Net Community Blogs and MSDN Blogs for just some of them.
- Local User Groups: In order to excel, any developer should belong to a user group. Networking within a user group allows you to surround yourself with like-minded developers, solve any problems that you're experiencing, and stay at the top of your game. Meetup and Community Megaphone are great resources for finding user groups, but again, a simple Google search works just as well. User groups are typically well supported with knowledgeable speakers and swag by the local developer community, Microsoft developer evangelists, and .NET controls vendors. Meetings are both educational and fun. These organizations often host weekend-long, free educational Code Camps, business-starting Hackathons, and various other industry events.
- Technology conferences: The .NET community has some of the biggest and best conferences in the industry. They are almost always sold out. For those who can't attend, many of the conferences are streamed real time for free. There are also many virtual conferences available.
With apps, training books, tools, controls, and even a partner network at your disposal, there's limitless access to the resources that you need to situate yourself for success.
2) Powerful and Extensible Integrated Development Environment (IDE)
.NET development becomes even simpler with Microsoft's Visual Studio, a powerful environment that is not only extensible, but easily integrated with other development solutions. Microsoft works hard to ensure that it is continually updated to support the latest technologies as they emerge. Similar to Eclipse for Java developers, Microsoft Visual Studio offers a number of features out of the box, and the surrounding ecosystem and Open IDE brags thousands of community add-ins on the built-in package manager. NuGet.org offers 28,500+ unique extension packages. Just one year ago, there were "only" 14,000 if that gives you a better idea of the growing resources for Visual Studio and Microsoft development.
Microsoft provides the core tools, but it is the openness of and ability to integrate with those technologies that makes the community the primary driver of the innovation. For example, while Microsoft is heavily focused on the mobile space with their own mobile platform, companies such as Xamarin enable .NET to be used with Apple and Android devices. And, if you are thinking of running .NET applications on other platforms, have a look into Mono. With .NET's continued and growing adoption even in the IBM i space, perhaps that is something we will see in the future again. As with all their partners, Microsoft supports these companies and encourages the innovation.
3) Readily Available Skills and Multi-Vendor Support
Many companies struggle to find developers for their legacy systems. Finding RPG, COBOL, Synon, LANSA, and other IBM i-specific development technologies is getting harder and harder. IT education firms like ProTech Training and LearningTree continue to offer RPG and COBOL courses, but finding developers to put in those courses is a struggle.
Comparatively, if you needed .NET developers right now, you'd find a large talent pool to select from. A job search for .NET yields thousands of listings, which is not only a good indication of the number of companies already developing in .NET, but also a good idea of the amount of talent that is out there. Having immediate access to those skilled in .NET is crucial. Whether you're in need of employees, consultants, or both, you want to make sure that the tools you use are supported and serviced. The more options you have, the greater the chance of finding the right talent at the right price and finding them locally. If you are going to pay a premium, make sure it is because you getting premium service, not because you are beholden to a single company for talent.
4) Mobile, Web, and Windows—It's About the UX!
Simply put, .NET gives you the most choices. It was only 10 years ago that we started touting Windows, Web, and mobile. The needs for all three interfaces still exist, but the priority has shifted. At Surround Technologies, we now take a mobile-first approach to all of our Web development, delivering a responsive interface to the different-sized devices and sometimes adding adaptive functionality for touch- and smaller-device needs.
A great application helps users succeed in the easiest and fastest way possible. Users with knowledge of your business should be able to use it with minimal to no training, and they should be able to find what they need to make informed business decisions and complete tasks in an efficient manner.
Development on the IBM i has always been heavily focused on business needs, and now there is all this other technology to deal with. In fact, many developers today spend much of their time dealing with multiple technology issues instead of delivering the much-needed business solutions themselves. .NET as well as the various .NET productivity solutions can help to consolidate much of that.
.NET has many tools that provide developers with the flexibility they need for development in the following realms:
- Windows Apps: Microsoft's Windows Presentation Foundation (WPF) makes developing these apps much faster and better than in the past Winform days, and they're the hands-down best option for line-of-business applications where you demand peak user productivity or require integration with other systems and devices.
- Native Mobile Apps: Historically, when it came to developing in the native mobile app space, many enterprise organizations avoided it because of the cost and time associated with building the software in each of the platforms' native languages: Objective C for Apple, Java for Android, and .NET for Windows
With the ever-growing popularity of smartphones and heavy competition between providers, this is no longer an option. For quick native+web hybrid apps look into using Phone Gap. For full native apps on all three platforms built all in .NET, look into Microsoft partner Xamarin.
5) It Just Might Save the Platform
There is a myth in the IBM i community that the introduction of .NET spells the end of the IBM i. It has been our experience, however, that it is the best way to keep it. Often, company execs choose to abandon the platform because they feel trapped with their current software, unaware that it is not the hardware but the development that is the trap. The choice of hardware is an IT decision. I suspect that upper-level management really doesn't want to even care about it. They just want greater productivity, better integration, and fewer user complaints. When they see that they can provide the same level of enterprise software as they see elsewhere in the industry, then the choice of hardware will be based on IT's choice for performance and reliability of the hardware.
6) It's Good for Your Future and Your Company's, Too
It is hard to believe, but many IBM i shops have not begun modernizing their systems or even taken on small projects to extend or modernize parts of it. Executives and IT directors should understand that moving away from these aging languages isn't an option; it's a requirement. It's an "evolve or die" situation, and it's no longer a matter of when or if, but whether to buy a new package or modernize what you have.
As more and more enterprise organizations move away from legacy and proprietary technologies, career opportunities become fewer and often mean having to relocate to find them. Learning .NET will open up a developers' options and do great things for their company, their overall personal career, and their net worth to the business. It's your choice to be part of either the maintenance drag or the future solution. And, if it is fear of this unknown technology holding you back, take comfort in knowing that it's not that hard. Take the first step by reading the next reason.
7) It's Not That Hard (At Least, It Doesn't Have to Be)
What I have observed over the years is that many developers have tried to provide modern software. They have done some Java or PHP or .NET programming and usually got it to work, but they go it alone and it takes a lot of time and effort, often leaving them wondering, Why does this have to be so hard?
It doesn't have to be. There is a plethora of free and fee-based training options available for .NET. Here are just a few that we and our clients have found useful:
- oWelcome to Visual Studio: This page has a set of links to download, understand, and guide you through the various parts and use of the IDE.
- o"How Do I?" Video Series
- oVisual C# Resources
- oVisual Studio Information on Windows Presentation Foundation
- Getting Started with ASP.NET MVC 5
- Self-Study Books
- oMicrosoft .NET: Architecting Applications for the Enterprise
- oPro C# 5.0 and .NET 4.5 Framework
- oPro WPF 4.5 in C#
- oWPF 4.5 Unleashed
- oPro ASP.NET MVC 5
- oPro jQuery 2.0
- oProgramming C# 5.0
- oC# 3.0 Design Patterns
- oAdaptive Code via C#
- Training courses: IT training providers' courses and programs have become more effective. Below is a list of resources that many of our clients use to stay current and productive:
- C# Fundamentals with C# 5.0
- ASP.NET MVC 5 Fundamentals
- Enterprise WPF with XAML and C# from Scratch
- jQuery Mobile and ASP.NET MVC 4
- Additional Frameworks and tools
8) It's Fun
Limitations are frustrating. Consider the unthinkable, the impossible, and all the powerfully productive things you see in other software but just can't do with your trusty 80 lines by 24 rows. With .NET, they are totally doable and probably much more achievable than you would think. I have always loved creating software that people appreciated, a hard thing to do in business-related software because people just expect it to do their job. With .NET, we are back to developing rich, productive software that people don't just appreciate, but actually love. Software that they champion for others to use as well. This is what I want for all developers: to create software people love. This doesn't need to be only for the iPhone app developers. You may not make a worldwide viral app like Flappy bird, but you can make companywide viral software. Developing with .NET not only allows you to move away from the limitations that exist with legacy development, but encourages you to foster a continual learning mindset, hone your skills, and be exposed to hundreds of new tools, technologies, and resources along the way. .NET is your opportunity to have fun with software development once again.
9) Microsoft is Not Evil
In the past, Microsoft has been labeled as inflexible, closed, and proprietary. In the IBM i world especially, Microsoft is the evil nemesis. But those days are long past. All that has changed. Not only has business in general changed, but Microsoft as a company has changed significantly, embracing openness, enabling cross-platform solutions, and supporting new and growing businesses.
Not so sure about that? Have a look at Microsoft's Open Specifications and legally binding Community Promise. Most of Microsoft's newer development solutions are being provided as open source, all of ASP.NET is open source, and Microsoft is also moving some of its existing technologies to open source. Their compiler is a prime example.
Also, the Microsoft BizSpark program is a clear example of Microsoft's support and love for programmers and startups. If you want to build a startup on the Microsoft stack, they will give you free licenses to basically every product they make, including SQL Server, and a free MSDN gold subscription for three years. Then they help you market and promote your solution.
10) .NET Is Not Just a Programming Language
It is important to keep in mind that .NET is not just a programming language. It incorporates many languages, the primary of which is C#, Microsoft's equivalent of Java. But .NET is so much more than a language. It includes:
- A comprehensive Framework Class Library (FCL) with significant base functionality that a developer no longer needs to write.
- Language interoperability so that code written in one language, like C#, can use code written in various other languages, like VB.
- Additional frameworks for other core functionality, such as Workflow Foundation, Windows Communication Foundation, Windows Presentation Framework, Entity Framework, etc.
- The Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling.
To the developer this means less code to write, faster development and integration, easier and much smaller deployments, and an overall more productive development experience. To the business, this means lower development costs, faster software delivery, and better quality solutions.
Those are the top ten reasons, but there is even more greatness in .NET, especially when you dig deeper into the Microsoft partner solutions. With Visual Studio and .NET, Microsoft provides a single environment to support the entire software development lifecycle. It's no wonder Gartner, IDC, and Forrester all agree that Microsoft .NET is the leader in a complete vision for the business.
As a company grows and changes and its requirements expand, today's software needs to be able to adapt and change with it. The company needs to enable the business to take advantage of the ever-changing technology environment. It needs to deliver software for all types of users: employees, customers, customers of customers, partners, and vendors. It needs to deliver software where the users are, when they need it, and on the device they choose to use. .NET is the best solution to meet all those demands. Perhaps it's time to explore what a new development environment like .NET could do for you and your company.