Code never lies. Comments sometimes do.
I’ve found Docker helpful when I want to use it to build binaries or use CLI tools that may not be available directly on the CICD platform. Also, Docker makes it easier to run the same code on MacOS that I ended up running on a Linux CICD server.
What would you consider to be overuse of containers?
Damn, this meme slaps so hard. I didn't chase any friends down there, but I thought it sounded like a secret nerd club that I wanted to be a part of. Using Linux is a part of my daily life now, professionally and personally, 10 years later.
Ah yes, the project that nobody asked for, and it has to be worth it because you still have your actual assigned work to hack.
I remember that feeling of not seeing the light at the end of the tunnel while having invested multiple days into a side quest that my boss never asked for (but would ultimately make me, or the team, more productive). I remember being more junior in my career and fighting that devil on my shoulder as it’s saying, “it’s turned into spaghetti! Just abandon it and get back to your deadlines before you go too far!”
Docker builds are not reproducible
What makes you say that?
My team relies on Docker because it is reproducible…
Here’s a few from me:
-
How many separate projects are developers working on at any given time? (Because I want to know if they expect developers to be context switching all the time.)
-
Is anyone sitting there with a stop watching checking what time I get into work in the morning? (Because I’m not hourly and don’t expect to be treated as such.)
-
Describe the work-life balance.
-
Are you agile? Not agile? Scrum teams?
-
What might an average day look like for me? Walk me through from when I sign in and log off for the day.
-
How do you perform automated testing here? (if they don’t, I’m concerned)
-
Do you enforce code formatting?
-
How do you deploy your code? (if it’s not a CICD pipeline, I’m concerned)
-
How involved in DevOps are developers? (Will o be expected to work on CICD code? Infrastructure as Code?)
-
What version control system do you use? (Of the answer is nothing, the interview is over. I will not work there. If it’s something other than Git, I’m not excited about it.)
-
Is Docker used here? (Docker makes me very productive, I’m concerned if Docker is a tool I’m not allowed to use.)
-
Are there any other programming languages I’ll be using other than <advertised language for the position here>?
-
Are SOLID principles common practice here? Or rejected as unnecessary? (I love SOLID and think it’s useful much more than not. If SOLID is frowned upon, I probably won’t be happy there.)
-
Can I choose what sort of machine I get to work on? (If I can’t work on MacOS, it could be a deal breaker… I love MacOS for development, sue me! 🤷♂️)
Go programmer here: What does Go’s simplicity have to do with dependency injection? What does a language itself have to do with dependency injection?
Reading your post and not being personally familiar with your work, I do wonder, perhaps your “extremely complex projects” wouldn’t be so extremely complex if you practiced dependency injection?
How do you unit test your extremely complex projects if your business logic carries the additional responsibility of creating objects?
You need to understand very soon that you can no longer have projects assigned to you. Everything your management asks you to do is actually something that they want you to ensure gets finished- you are not supposed to do it yourself. Delegate, follow up, and guide someone else to do it.
The moment you take a project on by yourself, you’ve become a huge bottleneck for your entire team’s productivity. Your team needs your guidance and help, and you can’t offer that if you’re designing, coding, and debugging a project on your own.
98% of coding for you should be paired programming from here on out, where you are not the developer at the keyboard. You are providing suggestions and guidance so that experience can transfer to your junior team members.
Edit: You are not just a “tech lead,” you are a manager if you have direct reports.
In my experience, 9/10 times a stored procedure is code that should just be SQL executed from your application (as in, your application sends the query text to the db, rather than that text being stored in the database and executed via calling a stored procedure).
If it’s necessary for performance, sure, go for it. Satisfy your requirements. If it’s not necessary for performance, ask yourself why it needs to be a stored procedure deployed to the database.
We should all be using Signal, all of the time. It’s accessible to those not technically inclined, and I feel like that’s a requirement now if a personal-use technology wants to get off the ground.
Edit: this is not to detract from matrix, which seems like a great technology for privacy
….I’ve been using :wq for years…
Python, and dynamically typed languages in general, are known as being great for beginners. However, I feel that while they’re fun for beginners, they should only be used if you really know what you’re doing, as the code can get messy real fast without some guard rails in place (static typing being a big one).