Are you a Software Engineer?

Allow me to start with an introduction.

Over the past 5 years, I have worked full-time for Intel. This is the project I’ve been working on Intel® Optane™ Persistent Memory. My role day-to-day is a majority of design: Taking product requirements and figuring out how to translate them to code. That code is primarily written in C, and then we have some automation scripts for debugging, and some helpful tools written in Bash and Python.

I have also worked on some of my own projects, and taken on some projects for friends and clients I’ve met online. These projects range from Android app development (Java), Cross-Platform app development (Flutter), Web Applications (ASP.Net, C#, Python, Django, Flask, PHP, Laravel, MySQL, MSSQL, PostgreSQL, and an unknown quantity of JavaScript Frameworks), Simple automation (Python Again), Scheduling tasks (Windows Task Scheduler & Cron), managing virtual servers (Linux Administration), migrating apps to AWS (Elastic Beanstalk, EC2, IAM).

So what does that make me? Since I primarily code in C, am I a C Developer. I use some Python, am I a C and Python Developer? Since my experience with other languages is only with some specific projects, does that make me inexperienced? I don’t have 5+ years with Java, or 7+ years with Ruby on Rails, and I probably never will. Though in my current job search, that is the feeling I get when discussing my background.

When talking to recruiters and hiring managers, I provide my background at Intel, I also describe each of the projects I’ve worked on, the technology stack I used, and so on. And then I get the question “Well when was the last time you used React/Java/Vue/Obscure AWS Service.” My 7+ years in working with clients and managers to understand requirements, researching the appropriate technology stack to use, learning and implementing the project, suddenly all this experience becomes irrelevant, because I am not a dedicated X developer.

For me, this takes much of the fun out of software engineering. Working with one technology means you would be using the same tool to solve every problem. You’re using a hammer to screw in a nail. Do you want to spin up a quick app to report some information from a database? A Django developer may create a Django project, add an app to the project, configure the app to connect to the database, create a model of the data to query, create a template to render the data, attach the template to a view, assign the view to a URL. A Flask developer would just write a couple of lines of code to spin up a flask server, query the DB and print the results. There are different tools for different jobs, and I feel that this sometimes gets lost.

I understand why people would look for specialists. You want someone who can come in and hit the ground running, they already know how the technology stack works. They don’t want to spend the time training someone. To this, I would say every environment is a little different, and some of this is going to happen no matter what. Sure, the person you hire may already know how the framework works, but they still know nothing about your specific application, all of this still needs to be learned before the engineer can be productive.

Please tell me about your experience? Are you a specialist in a specific language or framework, do you often learn about different technology stacks? Are you someone who explores and learns about different technology stacks, would you consider specializing in a specific one? Does anyone have a similar experience when applying to new jobs?



No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *