As if things weren't difficult enough for developers, here's a list of things to add on to your current daily work flow. If you've been a web developer for a number of years, then you'll be familiar with pretty much every item here.
But if you're newer to the industry and you would like to prepare for a more senior role in the future now rather than later, then these things will pretty much be mandatory for you to learn at some point.
Note that I'm not saying that you should drop everything and start to learn everything on this list today, but more so, that you should become more aware about them, as they will follow you around from job to job.
Starting with the most obscure.
5. SEO
SEO is typically one of those things that get offloaded to a business development person at a company. But as a developer, anything that a biz dev person works on, will eventually get to you. Because there really isn't any SEO, unless the developer has implemented it onto the website.
From a high level perspective, fundamental SEO comes down to a few things:
- Proper meta information on each page
- Outlinking strategy
- SEO plugins and tracking libraries
- Performance
- Content
And pretty much all of these involve development (maybe not content) in order for them to be implemented.
Typically, meta tags are HTML tags that go into the <head> section of a website and they contain various values that tell web crawlers just what they are looking at. And while this article won't be a thorough in-depth look at how to implement meta information (coming soon), I will give a brief overview.
At the bare minimum, every website should have a proper <meta name="description"... and <meta name="keywords"... and placement of all of this will depend on the type of framework that you are using.
If you are working on a custom website for example with a local database, then often times the meta information should be stored in the database along with the accompanying content. But if you are working on a JAMStack style website, then your content might be stored in a CMS, like Contentful.
And if you are working with a static site generator, then things get a bit more complex. I'm currently working on a React based web application, and while I wish that I could simply type something like:
head.meta.add('key', 'value')
Like I do with a .NET based website, I can't. The workaround being, finding a library that handles the complex task of rewriting the <head section for me based on dynamic content.
One of those libraries is helmet, and it is popular in the React community because of its ease of use.
On top of meta information though, you'll also want to ensure proper Open Graph tags, implement follow/nofollow rules, and even work on performance to ensure that you score high in terms of Web Vitals.
All in all, web developers take a huge role in terms of creating a website with strong SEO. And unfortunately, it is not something that is usually covered in any college classroom or bootcamp course.
4. Testing suites / QA
Not every company that you work for will have a proper QA department that will automatically test all of your work. Large tech firms typically do have this though, and I've personally worked for many that did and it was a great time.
It made me sloppier as a developer though, since I knew that someone would let me know if things were going south.
But I've also worked for many companies that simply didn't have any kind of testing or QA strategy in place. And that doesn't mean that you get to ignore it, because QA is vital in order to ensure that users have a good experience.
And proper QA is more complicated than it gets credit for. It's definitely more than just knowing what a smoke test or a regression test is. It's actually having to perform these at a real-world scale using some kind of software.
And while I don't believe that developers should spend the majority of their time writing test scripts, I do believe that knowing how to use a testing library, like Mocha, will benefit in the long run.
3. Server management
Developers typicaly have to know the fundamentals of the server's that they are deploying to. And by that I mean they need to know how to deploy code, how to restart services and really not much else.
And for the majority of your development career, this will probably be enough to get your work done. But there will come a time when that won't be enough and I've personally found myself in that scenario plenty of times.
Servers are very complicated in nature. At least the software is. If you're working on a .NET application for example, then more than likely you are working with Windows IIS.
When I first started working as a software engineer I avoided having to touch IIS for a few months. My lead developer was in charge of any and all server issues during that time and it was great. I got to focus on coding mainly and not much else. But, as with most things in life, that eventually came to an end and I needed to get my hands dirty.
At some point in my career, I became the lead developer for various companies, meaning that I was the one that everyone was looking at whenever the server had issues or needed reconfiguring. And that meant having to remote login to a Windows Server at some random IP and firing up IIS to see what I do.
Overall, this isn't something that I do all the time, or now, but it's come up at more than a few jobs so it is worthy of being on this list.
2. Database management
Similar to server management, database's also need some level of management as well. And that honor usually goes to DBA's, or Database Admin's. They make sure that the records keep getting added that the indexing is properly in place.
But, not every company has a team of DBA's at the ready. And in many instances, the developers are the interim DBA's until further notice.
So what would a developer be doing in order to manage a remote database server? Well, it's probably a very short list, because there is a reason why database administrator is a whole separate career from software developer.
At the bare minimum, knowing how to check the current storage usage on a database is definitely important. I've worked with huge databases in my day, but as a developer, you never really notice. And it's not until you actually see your database taking up 100GB of space that you realize the enormity of it.
But odds are that if you are at all looking at a DB server, it's because you have a slow query somewhere and you need to find a solution. That solution is typically to index various column groups and let the server handle the performance for you. And knowing how to do just that, and how much storage it's going to take, is important.
The best way to start to learn to work with a database server is to really just setup your own on your local machine. Whether its PostgreSQL or SQL Server or mySQL is irrelevant as this will really mainly depend on your particular job.
1. Project management
Whether we're talking about waterfall methodology or Agile or something in between, project management is running in the background at pretty much every company. And knowing the proper terminology and workflows early on will ensure that you avoid any frustration when you have to attend your 7am morning standup.
There's a reason for the morning standup, and there is some level of preparation that you need to do in order to make the best use it.
Early in my career, I pretty much had no idea what a Kanban board was and I typically repeated the same thing day after day during the morning meeting. But after spending years working with teams of all sizes, I eventually realized the importance of having some methodology to follow on a daily basis. It keeps you organized for one, but there is also some level of accountability that it brings to the table.
As a developer, you probably don't need to be a certified PM in order to be effective. But just knowing how and why certain methodologies work will make for a much smoother development process.
There's more
And there's a ton more on the list. Web development has grown vastly during the past 10 years or so. In some respects it's gotten easier, because of all of the development tools available. But in other ways it is as complex as it has ever been. And with that complexity, developers have to keep learning new things almost on a daily basis in order to keep up.