The following is a summary of a virtual discussion that took place between members of the application development team at Superior Consulting Services. It highlights a number of the current trends, techniques and technologies in the application development space.
What technologies or methodologies surrounding Application Development have you used recently that really excite you?
The application development space is humongous and getting bigger by the day.
Applications are continuing to be developed for the desktop, mobile (phone or tablet), web, and device platforms (Internet of Things, smart watches, drones, etc.). And they are only going to get bigger and better.
For instance, I wanted to upgrade a website from an ASP.NET MVC 5 site to a ASP.NET Core 2.2 site using Angular 7 as the front-end language. And guess what? I was able to find several starter templates online which I could download from Visual Studio to quickly start my project and I completed my project in just a few hours.
We are currently in the process of moving the client that I am working with into a new realm of software development processes. This client is implementing new technologies to help better facilitate their software development, software version control and deployment, application and system logging and performance tracking.
In addition to these new tools, we are using some new software design and process management techniques. We are using dependency injection design to make software testing easier and more effective. We are using Agile Software Development to allow requirements and solutions to evolve through collaboration between cross-functional teams and their customers or end users.
While some of these are not entirely new technologies, they are a quantum leap for this client!
Software development methodology is definitely in motion and I think it’s good motion towards better, more decentralized, open-source inspired development.
One trend these days seems to be a movement toward better use of source code management software. Team Foundation Services (TFS) and Git along with GitHub have been a couple of the more popular choices here over the years. What are you using with your clients for distributed software version control and source code management?
We are using GitHub and Git for software version control and as a software repository.
We are using GitHub and Git as well.
Both TFS and Git are perfectly reasonable ways to do source control but the market has definitively moved toward the latter.
But just because a proprietary tool suite is built on Git, it does not necessarily make it a good tool suite. Working with a client in 2017, we used Atlassian/Bitbucket/Jira with a formal “pull request” process, and I wasn’t too impressed. Maybe it’s just the way it was being used in this case, but the process seemed stiff and not agile and didn’t incorporate the knowledge of the team members as we went along. Also, in 2018, I was at a client site that was using Git with VisualStudio.com, and I think we put an overemphasis on the initial planning phase which was limited by our knowledge going into the project.
In contrast, with the TFS-based development at my current client site, the initial estimates are just at the level of user story “points”, e.g., 1, 2, 3, 5, 8, 13, where a point corresponds to something like a dozen hours.
Much as I hate to praise proprietary software, I’ve been impressed by the way the “user stories” get broken down and tasked out for each sprint. This tasking actually uses the accumulating knowledge of the team members to make the ongoing development more agile and responsive as we go through the project.
What other technologies really excite you?
OAuth 2.0 authorization framework.
Isn’t that the technology that allows a user to gain access to a secure web page or web resource using their credentials from other online services like Amazon or Facebook?
That’s correct. I like OAuth 2.0 because it is very simple to implement. At the same time, the tokenization used by OAuth 2.0 is very secure. It obscures the associated account credentials while in transit and using third-party authentication services.
I get very excited about developing services that run in the cloud using Microsoft Azure or Amazon Web Services, where you can just about implement/deploy, scale and load balance any type of application. I recently wrote a coding challenge where I built and deployed a simple application which simulated a dice roll and challenged the audience to write code to integrate with the application. I wrote the application in about an hour and deployed it to Azure in seconds.
On my current assignment, I love using a state-of-the-art, custom Dev Ops solution which builds my application, runs my unit and acceptance tests, measures code coverage, smell tests my app and deploys it to a specific environment. All of this is automatic and notifies me upon success or any point of failure.
It feels like there is a lot of innovation surrounding the way applications are designed, developed, tested and deployed. In addition to applying these techniques as part of an application development team, the members of the SCS application development team serve as mentors and trainers, showing our clients how to execute application development projects that are as efficient and responsive as possible.
To continue this discussion within your own organization, contact SCS today.