Software Development

Overview

I have been working in the software development field for over 20 years. I started out making basic HTML pages for small businesses, in the summer before my senior year in college. Since those humble beginnings, I have diligently worked to improve my skill set as a developer, as well as business man. I believe that it takes a combination of business and technical know-how to successfully complete a software project. You must be able to ask the right questions about the process or problem that a proposed piece of software is intended to address. You must then apply your technical abilities to address each requirement. I believe my education and technical background, allows me to assist my clients in designing and developing the right solutions for them and their budget. I also aim to provide clean quality code on budget and on time.

I have worked with many different programming languages over the years below you will find a list of technologies that I am skilled in. Items in parentheses are frameworks that I am familiar with.

  • PHP (Laravel, CodeIgniter, CakePHP, Propel ORM)
  • Node.js
  • Java (Spring MVC, Hibernate)
  • C# (ASP.Net MVC )
  • Objective C
  • Swift
  • JavaScript (jQuery, Angular JS, PhoneGap/Cordova React JS, React Native)
  • HTML, CSS (Bootstrap)
  • Visual C
  • C++
  • Visual Basic
  • Cold Fusion
  • ASP Classic
  • Perl
  • Python
  • MySQL
  • SQL Server
  • PostGreSQL

Web Applications

I define a web applications as any website that utilizes functionality outside of basic HTML. This is a broad category that include a wide range of technologies. This being the case, I have decided to break them down into the most common real world uses of web applications. In my experience most of my customers who need a web application need one of these four things: 1) Content Management System (CMS), 2) E-commerce/shopping cart, 3) Business process digitization, 4) Business automation. Below you will find more details about each one of these types of web applications.

CMS

A content management system (CMS) does exactly what it sounds like it does. They allow an authorized users to add and edit content to a website. The most common CMS that I use is the ubiquitous WordPress. It is the most common CMS in use today, and is also what runs this site. There are some pros and cons to using a popular software platform like WordPress, but mostly the pro’s out way the cons. That being said I have worked with many of these platforms and have left a list of the most popular below.

  • WordPress
  • Joomla
  • Drupal
  • Textpattern
  • Typo3
  • Umbraco
E-Commerce

I classify an e-commerce site, as any site can receive payments online. This typically involves a shopping cart software system to run your e-store on. Many shopping carts also come with a CMS component. There are also many shopping cart plugins for every popular CMS. I have worked with many of these systems over the years. Below I have listed the most common platforms that I have worked with.

  • OpenCart
  • Magento
  • X-cart
  • OsCommerce
  • WooCommerce
Business Process Digitization

Many businesses used to use paper or analog processes to run key aspects of their operations. This has been rapidly changing over the last couple of decades, and I have been happy to help a variety of clients move their paper process online. These types of projects, typically involve mimicking the steps of the original process, on one to one with a web page and detailed instructions. They will also contain reporting and administrative sections.

Mobile Applications

The explosion of smart phones, some 10 plus years ago, has made mobile applications a must for many businesses. The domination of Google and Apple has seemed to make this market a two horse race for the foreseeable future. This makes it necessary to build two “native” applications, one for each platform. In the mobile software development world, there are many cross platform frameworks that will allow you to build “hybrid” apps on multiple platforms from one code base. These frameworks are useful for small unsophisticated apps, but they fall short when creating complex solutions. For this reason I recommend building native apps in most cases.

Websites

I consider a plain or static website as an HTML, CSS, and JavaScript only site. These sites are usually small informational sites, that give a short description of what a business does, as well as, location and hours of operation. There are many instances when a static site is all that is needed. I have successfully provided this service to many happy clients.

RESTFul API

With the proliferation of mobile devices and the internet of things there are many different devices sending and retrieving data from web based applications.This has created an even greater need for a standardized architecture for web services. RESTFul API’s have taken up this challenge and is now one of the most popular way to create API end points that can be accessed by a variety of devices. I have successfully worked with consuming and creating many RESTFul API systems.

Development Tools

Software development is like most professions and the tools you use make a big difference in your productivity. Over the years I have used many different tools to help me be a more proficient developer. I break these tools into 5 main categories: 1) IDE, 2) Source control, 3) Project Management, 4) Database Management, 5) Diagram and Flowcharts. I have used software in all of these categories and have listed my most common ones below.

IDE’s

  • Eclipse
  • Visual Studio
  • Xcode
  • NetBeans
  • Zend Studio

Source control 

  • Git
  • Mercurial
  • SVN
  • CVS
  • SourceTree

Project Management

  • Jira
  • Trello
  • Fogbugz

Database Management

  • MySql WorkBench
  • SQL Server Management Studio
  • Valentina Studio
  • PgAdmin
  • phpMyAdmin

Diagram and Flowcharts

  • Visio
  • Axure
  • Creately

Methodology

There many different opinions on what is the best method for software development. I have been exposed to many of them and am of the belief that they all have their place considering the situation and resources available. The three most common I have used are: 1) Waterfall, 2) Agile, 3) Rapid application development (RAD). Depending on the size of the team and the budget, I usually follow the Agile process for large projects and waterfall for smaller ones. That being said, as long as the process makes sense I am comfortable adapting to a process of my clients choice.