Interesting debate at work - Should a web developer be a Linux engineer

Soldato
Joined
17 Oct 2002
Posts
7,408
Location
Stoke-on-Trent
Basically, the debate is should a PHP developer know Linux inside out to maintain hosted servers etc.

We already pay a substantial fee per month for hosting and support, should our developers also know what they are doing in a Linux environment?
 
No, that's a whole other massive skill set compared to being able to knock up web based systems and sites.
I develop reports which then run on servers on the customer site set up by our technical team, that's like saying I should be able to turn up on a customer site and configure their server while I knock out my reports, and that's never going to happen.
Better to have dedicated people who know what they're doing and can put some proper time into that sort of thing.
 
Last edited:
should our developers also know what they are doing in a Linux environment?

They should have an idea, so that they understand what php features may or may not be available to them due to environment restrictions. But being able to provision / admin a server? No. That's a system admin job.
 
How far would you push? Should they be expected to know SSL or be able to use Putty?

Should they be able to do a dump of httpdocs / mysql databases using command line?

Yes, and yes. I develop mainly in C# and Java - but our web services uses php. When I'm working on those then being able to access the server and read/collect log files and MySQL dumps is crucial. How else are you expecting to debug?
 
Php developers should be very comfortable in *nix systems regardless of the fact they shouldn't really be responsible for servers.

If a developer is not confident on the command line then I would worry a bit. I am always using it for git, command line tools, mysql, ftp, editing files, ssh via the terminal. I wouldn't be able to do my job without knowing how to work with these tools.

On the topic of developers managing servers; I have built perhaps 20 over the past 5 years but never for any large scale or business critical server deployments. I always have the feeling that I haven't locked it down enough or disabled the right settings etc (which in all likelihood, I haven't). Having a decent working knowledge of at least the stack you work with is very very useful. Configuring apache, php, mysql, redis, password protection etc has helped me out immeasurably over the past few years however I have never had a server admin whos sole task it is to enable me to work.
 
Basically, the debate is should a PHP developer know Linux inside out to maintain hosted servers etc.

No, they should ideally know PHP and software engineering practices inside out. A working knowledge of servers is obviously beneficial but it's a job in its own right. However they should be comfortable on the command-line as it's a vital tool.
 
The best developers know their entire environment/stack inside out. How can you build great applications if you don't?
 
Experts? Maybe not. Comfortable? Probably yes.

As a developer without being able to install libs, edit permissions, move files about, etc, you're probably not going to be anything but a junior.

So lets say you write some upload functionality. Your files are now owned by nobody with default permissions. No security? **** yeah! Lets upload a php shell. Now we've got a web based console with nobody. Lets see what zero days are about, or better yet let see what files nobody owns/can read. Oh a database password, nice!

Some people might attempt to argue that understanding how to avoid the above doesn't mean you'll need to be comfortable with the operating system, but I'd suggest thats the mostly likely way to learn about such issues.
 
Surely it depends on how you class the "stack". Many languages/frameworks abstract away from the OS etc.
Well if you're thinking in terms of web applications then just building a little website in isolation might not be enough. You might need to consider how it's hosted, how it would scale across multiple servers, redundancy, etc. A lot of these things influence how you design the application, so it can be quite important. Knowing that MSMQ exists and works may save you the trouble of writing your own cumbersome message queueing system, for example. Or maybe knowing that you could get n% more performance from your app just by using varnish on your front-end server might save your bacon when your app turns out to run like a dog because you forgot that big images actually take time to traverse a busy network. What if your brief says you'll be deploying to Windows Server 2003 but you don't realise it won't support .NET 4.5, and you use a bunch of 4.5 language features? Knowledge is important!

The more you know about the environment you're developing for and the technology stack, the better off you'll be. It doesn't matter if it's Windows, Linux, Mac, Android... you can be smart about how you write your software so that environmental issues don't cause any trouble, and you can exploit all of the features of every layer to build a great application.

Just my 2p :)
 
Surely it depends on how you class the "stack". Many languages/frameworks abstract away from the OS etc.

What you're hosting on is definitely part of the stack despite what you have inbetween you and the stack. You might need to do additional work to figure out how an abstraction actually deals with your OS, but like others have said, it all comes down to the more you know the better you are.

Of course, lots of people are making lots of money knowing very little, so it's all relative. :p
 
How far would you push? Should they be expected to know SSL or be able to use Putty?

Should they be able to do a dump of httpdocs / mysql databases using command line?

Yep defo - a basic appreciation of things like that is a must imo. I wouldn't even like to try and upload a Magento site without SSH. I mean how can one call themselves a web developer and know at least appreciate command stuff. E.g. in Laravel (a PHP Framework) the artisan cli has loads of great stuff you can do directly using its own command line like migrations, tasks, seeding databases etc.

Not sure how a web developer could avoid it nowadays - even more so with the ever increasing popularity of composer.
 
Last edited:
Most developers will pick these things up as they develop. Developing is a lot more than just writing code. I wouldn't make it a necessity for new applicants or so, unless .. you know.. I was looking for someone to do just that.
 
Back
Top Bottom