Technology Degrees Explained

Twenty years ago, technology degrees were divided in two categories: information technology management and computer science. However, during the last decade, universities have developed a variety of new programs to capitalize on the increased diversity of organizational technology needs. For the college student, this means trying to figure out how each of these degrees will help them meet their career objectives.

Computer Science

Computer Science degrees have been around for decades. These degree programs typically involve lots of math and an in-depth study of computer programming, algorithms, and a deep understanding of computer architectures. CS students often study more than one programming language during their program. Students with Computer Science degrees often pursue careers as in software development.

Information Technology Management

Like Computer Science degrees, Information Technology Management degrees have been around for decades. These programs are more aimed at network and system administration. Courses in Windows and Unix management as well as database are common. Additionally, students will often study network routing and switching protocols. IT majors typically manage an organization’s networks.

Cybersecurity

A relative newcomer to the realm of IT degrees, the Cybersecurity degree path is similar to Information Technology Management. However, the Cybersecurity professional has a much deeper knowledge of how to secure networks as well as how to find and exploit vulnerabilities. Additionally Cybersecurity degrees may include additional training on subjects such as law, cryptography, ethics, and risk management.

Data Analytics

Another relative newcomer, Data Analytics degrees mix knowledge of Computer Science with a deeper understanding of data. This understanding of data can then be used to enable the student to create artificial intelligence models for solving complex business problems. Like the Computer Science student, the Data Analytics student will learn programming. However, whereas a CS student may learn Java or C++, the Data Analyst is more likely to learn Python or R as well as a more in-depth study of statistics.

Software Development

Another newer degree, the Software Development degree takes a wide view of software development. While the Computer Science student dives deep into programming and algorithms, the Software Development degree path includes a much broader view of software to include project management, quality assurance as well as network management and databases.

Conclusion

While the number of paths is ever increasing, the truth is that there is a tremendous amount of overlap between each path. Additionally, whether your degree is in Computer Science, Data Analytics, or Software Development, you can find jobs as a computer programmer. However, each path will provide you with a slightly different part of the big picture of computing technologies.

Custom Software – A Case Study

Custom Software

I recently contracted the services of a company to help me become a GSA contractor. While the company is working on submitting my paperwork, they have encouraged me to start reaching out to potential government clients. To help me find those clients, the company offered me thirty days of access to their website that shows all federal and state opportunities as well as providing search functionality and email notifications. However, after the thirty day trial, the price of accessing their site is $200 / month or $2,000 / year.

The Problem

While the company strongly encouraged me to purchase their services, I am always skeptical of paying for things I don’t need. As a business owner, wasted money comes directly out of my pocket. So, instead of paying for their services, I decided to examine alternatives. First, I found that much of the functionality was already available on the governments System for Awards Management (SAM). Second, I found that registered users of SAM can request an API key to develop their own software.

Developing a Custom Solution

Given that all I wanted was a simple app to display matching opportunities, I requested an API key and started development. To begin, I had a junior developer create an Angular web app. In order to access the SAM API, I created simple Node-based REST service. Next, I updated the Angular app to function as a PWA so that I can install it on my phone.

Outcome

Now, after less than 4 hours of development, I have an app on my cell phone to display opportunities matching my criteria. Or, I can access the site from my computer and go directly to SAM if I want more information. While there are many upgrades I could make in the future, the cost of developing my own custom software was substantially less than paying a third-party to use their service and delivered exactly what I needed.

Advice to Businesses

Today, a significant number of businesses offer Software-as-a-Service. While this model is great for the software provider, it may be less optimal for the consumer. Over time, the total cost of SaaS continues to rise for the consumer while the benefit remains largely the same. However, custom software allows for ownership of the application without a growing price tag. Furthermore custom software can address issues unique to the customer which may not be addressed by a Commercial Off-the-Shelf system.

In order to make the best decision for your business, consider the monthly cost of the application over a several year period. Then, consider the cost of lost productivity due to missing functionality. Once those costs are totaled, find out the cost of developing custom software to meet what you actually need. If the cost of custom development is less than the commercial solution, consider creating your own application.

Bitcoin? Seems Like Bitcon…

I’ve never been a fan of crypto currencies. A few months ago, I wrote about some of the problems with crypto currencies. However, since I’m a techie, people always expect me to be paying attention to the crypto market. So, in the fall, I “invested” about $750 dollars into crypto. Like any good investor, I diversified between a variety of currencies. How did I far? Very poorly.

As I write this, Coinbase lists the overall market as down 41% from this time last year. But surely there must be some winners? If so, they weren’t among the 12 coins that I purchased. Bitcoin is one of the worst, and is down 47%. I selected a few that I thought had actual promise because of their utility – Fetch.ai and Internet Computer. Both of them performed even more poorly and are down by more than 60%.

Risks happen in any market, so this should be a surprise. However, crypto currency advocates have insisted that these currencies would protect against inflation and that they would be immune to geopolitical events. Currently, we’re seeing the highest inflation in 40 years and are closer to WWIII than we’ve ever been with Russia’s invasion of Ukraine. As such, crypto currencies have not lived up to their hype.

Now, investment firms are considering allowing crypto currencies to be included in retirement accounts. Why? Because supporters of crypto must be seeing the true nature of crypto’s Ponzi-scheme. They finally recognize that more investors are needed to inflate the value of their crypto “investments.”

Everyday, the evidence becomes more and more clear – it should have been named Bitcon from the beginning…

Software Project Billing Models

Bookkeeping

Regardless of the type of work done by a service organization, two payment models exist: project-based and hourly. Each of these models works better for certain kinds of projects, and each model has pros and cons for both the buyer and the service-provider.

Service Billing

For simple services that can easily be estimated accurately, a project-based rate makes sense. Examples may include the cost of a car wash, painting a room, or changing the oil in a vehicle. In each of these instances, the actions of the service-provider are nearly identical with each implementation of the service provided. Furthermore, the time required is either constant (changing the oil in a car) or is easily measured based on a parameter such as room size (painting a room).

Other types of projects may be more difficult to accurately estimate. For example, gutting and remodeling a bathroom may require an estimate that is highly dependent on how the project progresses. As the contractor moves through the project, unforeseen issues may arise such electrical wiring problems or rotten floorboards that could not be known prior to the start of work.

Software Development Models

While many customers may want a project-based price, the reality is that such estimates are often inaccurate. Much like the wiring issues or rotten floorboards found by a contractor, issues often arise in software development. Furthermore, since every project is unique, developers are often forced to provided what is really nothing but an educated guess into the timeframe.

This reality has been acknowledged by most software companies as they have moved form “waterfall” to “agile” development methodologies. In waterfall, timeframes and budgets are defined before software development begins. However, companies found that these plans were rarely accurate. In fact, a common problem was budget overruns and late project delivery.

To solve this problem, companies moved to “agile” development. In this model smaller pieces of work are performed and deployed over and over again to build an application iteratively. In this model, the customer begins using the software as soon as possible and has the ability to change course as needed. For example, a customer may find that an “essential feature” is really not important once other aspects of the project are delivered. Or, they may find that an essential feature is missing which prevents required functionality.

Software Billing

Given that software quotes can be highly inaccurate, software companies and clients are left to determine how to best bill for software services. In a project-based model, the development firm takes on all the risks of providing an accurate estimate. However, knowing that estimates are frequently inaccurate, the firm will likely pad the estimate considerably to account for those issues. Furthermore, the software firm will have a vested interest in performing the least amount of work to accomplish the client’s vision. This may result in poor, unmaintainable code or buggy implementations as well as the client paying a higher overall hourly rate.

Conversely, if the software company bills on an hourly rate, they may have less of an interest in performing their job efficiently. Instead, they may want to run the clock to bill more hours. While the client has a better expectation of quality code, their bill may be inflated.

Since both models can be exploited by software development firms, it is important to find a developer you trust. Ultimately, I prefer an hourly model. This allows me to change course as the client’s needs change. I have found that customers rarely have an accurate idea of what they want. However, as the project progresses, and their vision comes into focus, clients are able to provide meaningful direction. If I’m forced to provide a project-based price, the client’s feedback will likely be ignored since their changes would constitute a change in project scope – something not allowed in a project-based model.

Conclusion

As a customer, an understanding of both models can help you interact with a software provider. While your first thought may be that the software company is trying to run up the bill with extra hours, any decent developer can provide you a ballpark figure for your project. However, know that such an estimate may be subject to change based on unforeseen problems as well as changes in your requirements as the project moves forward.