I’m experiencing severe configuration hell in my new PHP role

Viewing 15 posts - 1 through 15 (of 28 total)
  • Author
    Posts
  • #1359
    BlueLensFlares
    Participant

    Hello,

    I’m a software developer who’s been programming for 3 years, and professionally for 1 year. I mostly did JS, Flask/React and Android/iOS stuff in my last job before a new role I just started 3 weeks ago. This post is sort of a venting post, sort of an ask for advice post.

    I’m experiencing severe configuration problems in my current role. We have several projects in a very small team with similar skeletons of Laravel or Code Igniter. Some are in Laravel 5.4 or 6 and some are in CodeIgniter 3, but everything is in PHP 7.2 and up.

    I am learning PHP, Apache and Laravel/MySQL, and it’s been a really tough time. I code maybe around 50 lines a day, most of my time lately has been with setup and configuring the Apache servers for the dev/test/pre-prod environments, learning Laravel or trying to set a project up. I’m not super familiar with either Apache or Laravel.

    Some things I’ve been stuck on: I get cryptic error messages because the Caffeinated modules are either misconfigured from an older project, the symlinks scripts haven’t been run, the .env files have incorrect values, the providers list is missing something, there is a missing ‘pdf’ folder in the storage folder, there’s no write privileges to a cache folder, the Apache DocumentRoot is misconfigured, the php version is incompatible, etc. Migrating MySQL tables have also been challenging because I have to take 2 databases with similar but slightly different attributes (same backbone, different business needs) and smash them together to meet new business needs. Every day it gets better, but every day it gets worse as my responsibilities and tickets pile up.

    I get a very small feeling my boss and the current tech lead (my team is only 5 right now) think if I followed directions a little closer, I would get more done quickly, but I’m just not sure completely of whether this or that action is better. They really appreciate me though, but I can tell they need more from me.

    I was wondering if anyone had some useful tips for dealing with migrations, configuration, setting up new projects. My boss is on my tail to set up this new project (not because he thinks I’m bad, but because his clients are on his tail) but I’m getting stuck a lot and about 80% of my time is spent getting unstuck. These are new tasks that I’m asked to do, so others may not be able to help, but I’m stuck between feeling like I’m going too slow, or I’m not making a bigger effort to state I need help, or I’m missing a critical resource that exists out there. Maybe like a Discord channel that could immediately identify my stuck issue.

    #1360
    moomoomolansky
    Guest

    It sounds like you inherited lots of technical debt that’s been accumulating as the project(s) grew before you came aboard. If there were adequate documentation and people enforcing coding standards you probably wouldn’t be in the situation you’re in. Since you didn’t really specify exactly what you’re having problems with no one can really diagnose your problem. I like the other guys “learn docker” comment, that makes sense.

    Be direct with your boss about the technical problems you’re dealing with. That “critical resource” that you’re looking for and not finding should be your support team which includes your boss and other coworkers.

    #1361
    arakwar
    Guest

    > I get a very small feeling my boss and the current tech lead (my team is only 5 right now) think if I followed directions a little closer, I would get more done quickly

    Sort this out ASAP with them. Be clear on your current situation, and your current feeling. If you lack the ressources and documentation to move forward and faster, and are not meeting their expectation, they need to act on it. And if they expected you to have that much issues, well it’s not really useful for you to keep wrong feeling about the whole situation.

    For your issues, there are 3 rules to any project done in teams : document it, communicate it, document it.

    Documentation is what will get you out of there. As soon as everyone on the team write down everything they do and how to do it, you’ll quickly figure out solutions to your configuration problems. Most of the environment configuration should be automated, but without any documentation about it, you’ll never know what you need to automate.

    #1362
    chernn
    Guest

    There’s some good advice in this thread, but it’s not totally right.

    As a new engineer on the team, your responsibility is to get your work done and ramp up on the stack + product. Part of that is to clearly communicate to your team what you’re getting stuck on and why. If you communicate clearly, there’s plenty of things your manager/tech lead can do to help:

    – Pair you with a mentor
    – Invest in fixing tech debt (upgrading versions, etc.)
    – Improve docs
    – Use containers (eg. Docker)

    Most likely, your team knows that the codebase isn’t easy to ramp up on, and if you communicate clearly, you can help the team prioritize making the codebase easier to ramp up on. In the meantime, you’ll need to live with the complexity, which might suck in the short term. In the long term, try to communicate, be transparent, and be dependable, even if the codebase could use some love.

    #1363
    bicykyle
    Guest

    I would consider learning Docker so you can setup your whole environments on the project level.

    #1364
    gieter
    Guest

    Some say learn Docker but not all organisations and apps are Docker ready. It will take some time to adapt to Docker in a production environment. Sometimes using a tool as Ansible for configuring and setting up all the services is more in reach and will help you get items setup easier into all different environments (test, accept, prod) – Learning and setting up Ansible is also much faster than setting up an entire Docker ecosystem for T,A,P.

    ​

    Furthermore are you the devops guy or the developer? There is one good reason these roles are separate.

    #1365
    apaethe
    Guest

    Working as a developer in a company going from the ground up, I really chafed when they starting bringing in devops guys. All of a sudden servers and databases were no longer accessible, and the ways to debug production issues needed to be routed through someone else. Now though, I’m really happy to have someone else be responsible for the server configuration etc. And the initial devops guys were replaced with ones that understood the importance of giving visability/access to the developers in the form of good centralized logging and dev environments.

    The point of all that being, being good at managing servers etc. is not a trivial thing, and there are many good professionals that handle that exclusively. I don’t know the finanical constraints of your company, but I would imagine that if you as a senior developer are devoting a considerable portion of your time to server configurations that the company you are getting paid by would get better value for their dollar by hiring a dedicated devops pro or team.

    #1366
    crabmusket
    Guest

    I think there are a lot of great comments in here. I really feel for you! It sounds like you’re running into a lot of areas where you’re a bit out of your depth – especially in the realm of ops, not just writing code. And it’s no surprise: getting code deployed is unfortunately not a simple problem.

    You say config files and environment-related stuff is a major problem, and some people have been recommending going to Docker. Docker is great, but it can bring in a lot of complications which you might not be ready to deal with yet. You can (and will) learn those things with time, but I wonder if it would be the most productive step to take next.

    Without knowing your problems in too much detail, I’d really recommend looking into Ansible for one thing it’s really good at – managing config files. Initially this could include your php.ini files, Apache config files, and OS package dependencies.

    I recommend Ansible because it has quite a simple model: it SSHs into your machines, runs commands, and then disappears. It’s basically a fancy set of shell scripts for repeating work, with some really helpful builtin modules like file templating. Running with `–diff –check` will show you exactly what’s about to change before you commit to modifying anything.

    We’ve been slow to adopt config management where I work, because we only have one product. But having set it up at last so we can keep our configuration in version control and bring some sanity to deployment procedures, I have to say it’s been a really good experience.

    Anyway, whatever you do – find a way to store your configuration in version control, and apply it automatically. Config information (which services require what files, where they should be, which order things have to run in) is _way too much_ to keep in your head, and _way too valuable_ to just live on the server in production.

    Best of luck!

    #1367
    32gbsd
    Guest

    I have 20 plus apps that I am constantly updating and bringing up to date that I created using various tutorials and patterns. Some use cloud services that have to be configured and tested. Its pretty much a nightmare any time a new version of ANYTHING comes out with breaking changes. Not to mention the new php8 features that I need to test out. So I understand you pain. Its not going to be a fast turn around, you just have to stick it through or find another job.

    #1368
    Spookytheboy
    Guest

    These are all just growing pains, friend. You’ll learn some great lessons hacking through these problems you face and really mature into a seasoned dev. Good on you for identifying underlying issues. It’s not uncommon for tech debt to pile up, especially in smaller teams! Keep it up!

    #1369
    Lord_dokodo
    Guest

    A lot of your errors sound like issues with transferring the project from one machine to another. It sounds like a lot of it may have been configured for a very specific environment (lots of hard coded filepaths, etc). Other issues might be caused by VCS ignoring certain files (lack of a pdf folder and misconfigured file permissions might be caused by gitignore not committing files.

    Documentation would help in untangling that mess but that’s sort of the nature of php. It’s quite monolithic and entire servers need to be configured for php sites rather than per project like you might be familiar with in JS or Python.

    My only advice is to grab a strand of that tangled wire and start unraveling it, documenting your steps along the way. Try to find spots where you can reconfigure/refactor things do the issues don’t crop up for future developers.

    For example, a lot of scripts I’ve seen are intended to be ran from a specific directory. Instead, have it switch to a common directory and use some environment variables to set file paths. Or if it’s not possible, be sure to comment in the script that this must be run from a specific location.

    #1370
    Thommasc
    Guest

    Anything that takes 1h+ instead of 30 min should be documented in a wiki and discussed with your team at the end of the week.

    Then you can start iterating on core issues by scheduling heavy refactoring and cleaning up legacy debt.

    Nobody enjoys doing this part but it’s extremely valuable after 6 months and some daily effort.

    #1371
    hagenbuch
    Guest

    Deal with MySQL first. If you get phpmyadmin running, you have tested already something. Migrate the DBs from dumps and be careful about setting the right charset / collation (utf8mb..)

    Every table and every Text / char / varchar column should have the same charset or else you will run in performance and other strange problems later.

    Then use phpinfo() for debugging PHP before you touch anything else of your code.

    Don’t ignore security in .htaccess etc.

    #1372
    VRT303
    Guest

    Habe you ever worked with Databases/Backend?

    Do you use PHPStorm? Have you set up xDebug in PHPStorm? Use the Dratagrip plugin for databases in PHPStorm or Dbeaver? That alone will solve most of the problem searching.

    Beside that you just need to learn the ins and outs of both frameworks and whatever was build on top of them. Good documentation would help but without just ask people around. As a newcomer I’ve set a limit for myself that if I can’t figure something out it 30 minutes or lesser and it’s a show stopper, I’ll just walk to someone who worked on it before and have them sit with me. It’s most of the time 2-3 minutes of their time and then I’m good to continue.

    #1373
    oojacoboo
    Guest

    To be honest, it sounds like you’re in over your head. You’re probably best to be honest with management, assure them you’re willing to put in the extra time to learn even off the clock, or find a more suited position.

Viewing 15 posts - 1 through 15 (of 28 total)
  • You must be logged in to reply to this topic.