The World through the Lens of a New Engineer

I have been spending a lot of time lately trying to see the world through the lens of a new software engineer. It is difficult because I need to forget everything I know and approach the task of developing software as someone that has never written a line of code. This is not purely an educational pursuit. I am trying to developing a learning plan for people who are interested in becoming a software engineer from scratch for Edumacate.me.

What came first? The chicken or the egg? Or, general knowledge of software engineering or pick a programming language?

My brain tells me that you simply have to pick the tenets of software engineering first like object-oriented programming but object-oriented programming really only makes sense when you are writing code. If you are now thinking about a car or animal analogy, give it a break. An analogy like that really only makes sense when you are writing relevant code. At least to me, that is the way it works. Imagine trying to wrap your head around how an analogy like this works if you have never written a line of code.

However, the base knowledge of software engineering should transcend any programming language that you pick but things go a lot easier while learning programming if you have a tool to apply that knowledge. It actually makes more sense to learn the base programming knowledge first, even if it is harder, because it is language-independent. No matter which language you pick, it will apply. Knowledge like object-oriented programming, software architecture, algorithms, and design patterns. This information will also make a much longer-lasting difference in your career because this knowledge will change the way you think and the way you develop software. It should be pretty obvious by this point which direction I am leaning when it comes to the approach to take.

Sadly, this isn’t the biggest problem facing prospective engineers and the problem is getting worse every year. The sheer amount of knowledge you have to accumulate in order to be a successful software engineer is increasing at a pretty quick rate. You can still get by with less but to make it as a professional, that breadth is increasing.

I am going to use the ASP.NET MVC paradigm because it is what I am most familiar with but it will be very similar regardless of server platform and language. Keep in mind that I am drawing some conclusions here based on developing a semi-sophisticated web-based application using somewhat accepted best practices. For the front end, you will need to know HTML 5 and CSS 3.  Because it would be expected that you would develop a responsive website, you would also need to know Bootstrap or a similar CSS framework. You would also need to know at least basic JavaScript or, more likely, the rudimentary elements of jQuery.

On the server, you would need to know C# and how the MVC framework works. Since this is a sophisticated application, we are likely going to be dealing with data, we will need to know a data access technology like ADO.NET, Entity Framework, or LINQ2SQL. This will likely also require some knowledge of a relational database management system like SQL Server or Oracle.

Now, for the tools. You would need to know Visual Studio. You would also need to have at least a basic understanding of IIS. To use SQL Server, you would need a client like Enterprise Manager (Visual Studio also has this available in Server Manager).

Professionally, a developer would be expected to know a Source Control management system like Team Foundation Services or GitHub and a development process like Agile or Scrum.

Hopefully, this post will give you a decent understanding of what new engineers face. Learning to code is just the beginning.

Leave a Reply

Your email address will not be published.