How to become a Software Developer – Your WHY

It’s hard work transitioning to any new career, especially Software Development.  Have you really thought about why you’ve decided to start this journey? Is your WHY strong enough to push you forward, even through the tough times?    

I’m writing to encourage you with the many benefits.  Some motivators that I see, after over 10 years in the field, are as follows.

  • Money – It could be that this isn’t really a factor for you and that’s great!  But for most, it plays a part if not the primary motivator. If compensation is part of your WHY then that’s fine but it definitely shouldn’t be the only reason for pursuing any career.  Dig deeper to understand what is driving you down this path. 
  • Creative Drive – Do you have an itch to build things and work creatively?
  • More opportunities and room for growth – As you gain experience you will see more job opportunities and growth within companies.
  • Status – Do you see a career in development as being a ‘step up’ in society?  
  • Versatility – A development skill set will give you the ability to work in different areas of the field.  This variety and ability to apply yourself to multiple areas may be appealing.
  • Family Legacy – Do you want to create a better story for your family?  Getting into Software Development may help with that.
  • Learning Opportunity – Every day should be a learning opportunity in life.  It has to be when you’re a developer.  For most, this is a benefit of becoming a Software Developer and could be part of your WHY.  What are your thoughts about this?  Does being a continual learner excite you?  
  • It’s ‘cool’ – Do you see the career being something that intrigues you?  This goes along with learning new things, but not just any new things.  It’s the possibility of using new technologies to build something great.
  • Synergy – Do you like working with others?  You’ll probably have the opportunity to work the some smart people.  Do you like the idea of making things happen on a team?
  • Start a Business – Do you want to do your own thing?  Software Development is a career where you can start your own business as a freelancer or even build your own product.
  • Work from Home –  Remote work for developers is more common these days.  Avoiding a long commute, saving time & money, is appealing.  This is another one of those that is a good reason but shouldn’t be the only one.

I’ve listed the most common reasons that I can think of.  Do you have one that’s not on this list?    

Thinking further, consider your past experiences even going back to childhood.  Did you or do you enjoy things that could relate to development or creating/building software.  A lot of developers that I know like to ‘tinker’ with things on the side and build physical things.  That desire to explore and build could be a big part of your WHY that you can grab on it.

If you have a spouse or significant other then are they on board?  Do they see you being a developer for a living? Talk to someone about your aspirations and get some perspective.

I hope that this has caused you to think a little further into your WHY and helped you to develop a stronger one.  I want you to grab onto and embrace your WHY to help propel you forward and keep you going as you pursue this.

How to become a Software Developer – Overview

It can be overwhelming, especially if you’re already working full-time, to get a new career started.  Software Development is a complex field with many options as well.  There’s a lot of information out there around languages and tools but not a lot that I’ve found around career strategy and transitioning into Software Development.  I want to give you a framework, the exact steps, to get you going and working as a Software Developer as quickly and confidently as possible.

Since you’ve found this post then you’re probably already interested in becoming a Software Developer so I really don’t have to sell you on it.  I do want to emphasize that you should ponder a little and do some ‘up front’ work to put yourself in the best place to succeed and understand the work in front of you.  I think that you can get there in 90 days given you’ve got the right ‘WHY’ and some typical traits that come along with development.  One of the most important aspects is your attitude, not how ‘smart’ you are.

This is the first post in a series about how to become a Software Developer.  If you follow along then you’ll have the building blocks to begin your exciting and rewarding new career as a developer!  I’m going to lay the groundwork for the series in this post so you’ll know what to expect.

At a high level, I’ll cover the following topics.

  • Your WHY as a Software Developer – Are you looking for more money?  This is a good reason but you better have a bigger WHY if you want to be great.  Maybe you’re tired of a dead-end job and no opportunity for advancement.  You’re looking for a real career.  It could be that you’re tired of the same old thing day in and day out.  You want to be creative and make a difference.  Whatever it is, we’ll get it down so that you can move forward with purpose.
  • The Software Developer Quiz – We’ll cover some questions to ask you begin.  This is the first exercise to help gauge where you are and understand where you need to be.
  • Common Traits – I’ve listed 20 common traits that I see in the best developers, and possibly people in general, that I’ve worked with.
  • What do you bring to the table?  How your work history and past experiences can help you as a Software Developer.
  • 90 Day Plan – Create your plan and execute!  You can adjust this as needed but you need to set a deadline.
  • Career Transition Time Management – Creating a Time Budget to implement your plan.
  • Your Learning Plan – What language(s) and tools will you learn?  Degrees? Certifications?
  • Gaining Experience – How will you get experience?  I’m talking about getting some real experience that will give you an advantage.
  • Finding Your Mentor – I’ve heard it said that you’re the average of the five people that you spend the most time with.  I think that this holds some weight!  Find people that are where or on the way to where you want to be.
  • Defining Your Dream Job – You need a dream to go along with your plan.  Dream big.
  • Branding as a Software Developer – Creating your perfect base resume that you can craft for specific opportunities.  Want to start a blog or portfolio site?  Let’s get your LinkedIn profile whipped into shape!
  • The Job Search – Create your company avatar and determine your top 20 companies.  Create your strategy to approach them.  We won’t assume that you want to work for ‘the man’ either.  We’ll cover free-lancing or the possibility of doing your own thing as well.
  • Salary and Benefits Negotiation – What are you worth?  Don’t leave anything on the table.

I hope that you’re looking forward to getting started!  I’m looking forward to helping you and seeing you have success.  Any questions, hit me up over on the contact page.

 

By the way, be sure to sign up for the newsletter over in the sidebar (top) to get this series with additional tips in your inbox.

The 4 Most Common Types of Software Developers

As you think about your development career, you need to consider specialization early on or at least be aware that you’ll fall into one or a few specializations as you move forward.  You should aim to get great in an area, not just development in general. I’m going to list and explain common types of development, emphasizing the ones that I have experience with and note some other common types.  This is not intended to be an exhaustive list. 

Picking a specialization doesn’t mean that you have to stick with it forever but you do need to start with one and possibly move on to others as you gain experience and determine your sweet spot.  You can’t learn everything at once! As I explain the types I’ll give you some the tools and languages involved and places to get started. My experience is mainly with the .NET (Microsoft) stack so you’ll see me reference it often in this and other articles on DevSensei.com. 

According to Stack Overflow’s 2018 Developer Survey, the most popular type of development is Back-End with others like Mobile gaining in popularity.  If you’ve researched any development topic then you’ve likely run across the site. I visit the site often and trust it and the community there for help with troubleshooting issues and for general information in the field.  It’s based on a voting system to help determine the best answers to esoteric coding/technology questions. 

Let’s roll with the top 4 in their latest developer survey as the focus of this post.  They surveyed 100,000 or so developers and give some great insights into the current state of the development field.  I recommend that you take a look! 

The top 4 types of Software Developers that I’m going to cover are… 

  1. Back-End
  2. Front-End
  3. Mobile
  4. Full-Stack

There’s some cross-over in each of these, especially the last three. I’m going to explain each in relation to my experience.  I’ve dug up some information as well to help out with painting the best picture. 

I’m going to reference ‘layers’ as I explain these.  I work primarily with n-tier systems, meaning they have database(s), service(s)/API(s), and various client(s) or the user interface.  These may have layers in between to support common entities/objects and business logic. 

 

 

 

 

 

 

 

 

 

Back-End

In short, Back-End developers work with the layers ultimately supplying or supporting the Front-End layers.  They work on or with the database to supply data to the user interface via a service or API.

A back-end developer may specialize further into the following categories and/or work regularly in all of them:

  • Database – Writes code directly against the database.  You’ll write T-SQL or could use an ORM (Object Relational Mapper) such as Entity Framework to talk to the database including basic CRUD operations that you’ll need for most tables. This would be code to create (insert), read, update, and delete data.
  • API (Application Programming Interface) Developer – Writes the code to serve the information to the client.  This would probably including some sort of server-side business logic after performing direct database operations via the data layer code.  An API might be written in C# or Javascript with node.js. These days, RESTful APIs are popular as they provide flexibility to the consuming code and follow typical web/HTTP guidelines and verbs (GET, PUT, POST, PATCH, DELETE).  
  • ETL (Extract Transform Load) Developer – Writes processes to move data between systems.  For example, this could be a process that moves order data from an entry system to a fulfillment or warehouse system.  This person might use a tool such as SSIS (SQL Server Integration Services) which allows you to more easily work against various data sources and destinations.

Front-End

Front-end developers write the code that users see and interact with.  Specialization within the front-end developer types include the following:

  • Web Developer – Writes code that runs in a web browser, leveraging HTML, CSS, and Javascript.  This person may do some design and graphics work as well although they’ll like get these pieces handed to them.  Tools or technologies used here include ASP.NET, PHP, and Ruby.
  • Desktop Developer – Writes code running natively on the desktop client.  WPF, WinForms, and Java are commonly used technologies here.

Mobile

Mobile development does fall under front-end but given its ranking in the SO survey I pulled it out on its own.   

Specializations here include the following along with some languages used:

  • Android – Java
  • Apple (iOS) – Objective-C or Swift
  • Windows – C# (UWP)
  • Cross Platform – Xamarin (C#) or Apache Cordova (HTML, Javascript, CSS)

Progressive (responsive) web apps taking advantage of HTML5 and CSS3 are also an option although currently restrictive as you don’t have much control over native device functionality.  I can see this changing though as browsers become more advanced. 

This is a growing and exciting area with many options. There are some pitfalls due to the changing landscape around the mobile industry.  For example, at the moment it seems that Microsoft is getting out of the mobile device/OS business or at least changing their strategy as Android and iOS continue to dominate the mobile market.   

Full-Stack

I work as a full-stack developer having exposure to all of the layers developing for the database, api, and web/mobile clients.  Starting out in a small shop/group forced me into designing/writing the systems and doing a lot of the QA/testing.

In a larger shop you’ll likely ‘float’ between specializations per project where you may switch off with other team members.  

The technologies I currently use are…

  • SQL Server to build the database.
  • Entity Framework to work with the database in the Data Access Layer (DAL)
  • ASP.NET Web API for the service/API layer.  
  • ASP.NET MVC for the web and Xamarin for mobile cross-platform development.
  • Any entity or business layer are done with .NET Standard class libraries, but you’ve got to be careful with versions.

Being a Full-Stack developer means that you’ve got to know more across several areas.  It doesn’t necessarily mean you’re a jack-of-all-trades (master of none) but it will take longer to build proficiency and you’ll likely have a favorite area where you could note specialization.  It could be that you’re a Full-Stack developer, specializing in mobile. My stronger area is probably back-end at the moment but may change as I learn and get better with newer technologies, especially working with Xamarin for the mobile layer. 

How do I choose a software developer type?

Don’t fret over picking an area and don’t feel like you need to ‘label’ yourself.  No pressure, it will take some time to figure out what you enjoy and what you’re best at.   

It may be easier to start with the database and learn T-SQL if you don’t have much programming experience.  Basic web development with HTML and Javascript might be a good place to start as well. A simple C# command line or console application is easy to get going.  If you’re an avid mobile user then that could be a clue that you’ll enjoy writing smartphone apps. If the web is appealing then go for that. 

Go with what you’re drawn to.  Find some online courses around the areas and technologies that I’ve discussed to learn more. See if you can find some projects, paid or not, to get some real experience.  The best way to learn is by doing, especially when it comes to software development. 

References