Today, there's a whole bunch of software development professions and a front-end developer will most likely not consider an embedded developer his/her colleague, although both do programming.

So, let's review the major types of software development and skills required by each. I've figured 6 types and here they are:

  • Embedded development
  • UI development
  • Front-end development
  • Web development
  • Mobile development
  • Enterprise development

Of course, there're other types such as automation QA, DevOps, etc, but we'll review them later, as they're actually adjacent to each type listed above.

So, what does a choice of a programming language or technology depend on?

  • Market share, i.e. number of open vacancies and salaries in a given market
  • Future opportunities (will this profession still be in-demand in the future or will you have to acquire a new one?)
  • Barrier to entry (how steep is a learning curve? how likely is it that a junior developer gets hired easily?)

Now let's review software development types based on these parameters.

Embedded development

We're living in the IoT and connected world and any modern gadget now has more chips and sensors than most of PCs. Any type of machine to machine (m2m) and machine to human (m2h) communication is enabled through embedded development. That being said, any electronic device, be this an e-cigarrete or a TV set, operates on software that someone has to program. That's what embedded developers actually do.

The main programming language used for embedded development is C++, although assembler and Java are used, too. However, a deep knowledge of hardware is critical for this type of development, which increases barrier to entry.

Today, embedded development is often referred to as IoT development and it means this type of development is very prospective! Besides passion for and in-depth knowledge of sensors, actuators and microcontrollers, embedded developers should have advanced experience with most of the IoT platforms available today such as Arduino, Intel Galileo, Apple's Home Kit and others.

UI development

While many people still don't understand the difference between a front-end and a UI developer, there's a difference indeed!

UI developers use HTML, CSS, JavaScript (JS) and other client-side technologies mainly to build desktop applications such as word processors and browsers. Within UI development, there's less emphasis on scripting languages like JS and more focus on HTML and CSS that ensure successful delivery of granular assets such as tooltips, buttons, CTAs and other modular pieces which eventually go to large software products. UI developers view assets as individual css styles and pays special attention to how the asset looks, feels and behaves in various contexts. They normally are familiar with such methodologies as Smacss, BEM or OOCSS. Usually, UI developers don't see a product-in-development as a whole, but rather as a collection of assets applied to webpages.

Front-end development

Just like UI development, front-end development uses HTML, CSS, AJAX and JavaScript. But unlike UI development, front-end development suggests that a complete product be delivered in a confined timeline. The developer sees webpages as a whole and a web product as a combination of those pages. Front-end development remains one of the most in-demand types of programming in the market and the entry barrier is low, so it's a good chance for UI designers and webmasters to advance their skills and turn to front-end developers pretty quickly.

Successful front-end developers would often have traits of good UI developers. They see a page as a collection of assets and pay particular attention to detail and coding in a modular fashion. They constantly analyze how the assets will be used on the page and how they might be used across the entire site.

Are you looking to build a highly efficient Collaborative Software Development Team in the USA or offshore?
CONTACT INTERSOG NOW!

Web development

For many years web development has been strongly associated with PHP. From the developer viewpoint, the entry barrier is very low and market opportunities are huge. Yet, the salaries in this segment haven't seen huge hikes over the past years either. As mentioned in our earlier blog, 60% of PHP developers admit no plans to migrate to a different programming language in 2016. On the contrary, 10% of PHP developers are planning to migrate to JavaScript, 8% - to Java and Python and 3% to Ruby and Go in 2016. If this tendency continues, it makes sense to consider other programming languages for learning. Today's PHP development is simplified thanks to a great variety of available frameworks and toolsets. But because web development trends change, front-end developer skills would be sufficient for most of today's web dev projects.

Mobile development (Android and iOS)

Although Android and iOS development uses different languages, I've combined them together as Java-based development for Android is closer to iOS development with Objective-C and Swift than to Java-based development for the enterprise.

So, what do we have in this segment? A relatively low entry barrier, because making a DIY mobile application is very easy these days and is affordable to literally every student. And this type of development is the most in-demand now, which results in the lack of sufficient resources and ever growing salaries.

Enterprise development

Enterprise development refers to development of applications and integrated system management tools for large enterprises. In short, all of the enterprise apps share a few common traits:

  • High dependency on the specialty (industry, niche) and high level of solution's complexity
  • Very Big Data - terabyte databases, gigabytes of transmitted data files, etc
  • Many legacy systems, i.e. out-of-date corporate systems still being in use, that should be integrated with as well as supported, upgraded and extended. That's a true nightmare for a developer!
  • A lot of external integrations with 3rd party systems. The average enterprise project is incorporated with 3-5 external systems.
  • Strict requirements for fault tolerance and transactions security (which is obvious because one transaction may contain data about a multibillion deal!)
  • High cost of making any changes. Each tiny change may have a tremendous impact on the whole system functionality including payments processing. Each deployed change should be tested against many different scenarios which is another nightmare for developers!
  • High change resistance. Because many enterprises are largely bureaucratic and hierarchical, it can be very difficult to get an enterprise-level buy-in for using innovative systems and frameworks for project's optimization and facilitation. In the average enterprise you won't likely find any software built later than 5 years ago.

Today, there're two key enterprise development platforms: .Net and J2EE (Enterprise Java). While both platforms are rather "live and kicking", Java still prevails because the majority of large enterprises prefer using Unix-like servers that are only J2EE compatible. There's a small corporate segment that still uses .Net, and it's mostly affiliated with Microsoft programs.

So, does a .Net developer still has a chance as far as future enterprise development is concerned? Let's take a closer look:

  • Dot Net salaries are some of the highest in the market to date (.Net ranks top 2 best paid technology after Java)
  • Entry barrier is lower than that of Java, especially if you have at least some previous experience with Microsoft app development
  • No alternative development environment. .Net technology is a Microsoft technology so whatever tools are available are all Microsoft tools. On the one hand, the lack of alternatives simplifies development, but on the other hand - it deprives of flexibility.

And what about Java Enterprise development opportunities?

  • Java Enterprise developers have the highest salaries on the market
  • Java Enterprise has the highest entry barrier on the market
  • Java Enterprise allows for solving complicated issues and offers the broadest range of specialties

It's worth noting that Java Enterprise isn't always about programming. Very often, J2EE developers are responsible for application's setup and configuration on a powerful distributed server cluster. And the most important thing is that Java Enterprise developers usually grind data pools in such amounts that it normally takes them as much time to learn a new programming language as it takes to learn a new J2EE library.

For the most up-to-date software developer salaries report, please contact Intersog!

Have anything to add to this post? Please leave a comment below!

 

 

 

 

Vik is our Brand Journalist and Head of Online Marketing / PR with 11+ years of international experience in IT B2B. He's also a guest blog contributor to Business2community, SitePoint, Journal of mHealth, Wearable Valley and other IT portals. You can contact him directly on LinkedIn.

Leave a comment

Get a Quote