I got your point. And the infamous "It depends" is what I really wanted to say (maybe I should have started my answer with this instead of "Well, sprocs have their place". I wouldn't blindly rule out a sproc, without knowing what is in front of me and what I should do, functionality-wise (like your last sentence - "all of this is invalidated if we're talking about distributed computing. This may also be invalidated if we're working with complex graphs in GraphQL"). Of course, I would NOT do, in this day and age, just use the .NET code as a shim for exposing sprocs and have the whole business logic in the DB (yes, I worked in an ASP Classic project, that was like this, and I hated every single second I worked on that project). I have also done my fair share of data warehousing and CQRS, and I understand that for OLAP workloads, a separate DB with denormalized tables/materialized views (e.g. "star schemas") can do wonders. Heck, I even ask this kind of question when I'm on the interviewer side (e.g. for senior dev positions), to filter out the ones that are 100% on Sproc side or 100% on code-only side. In other words, I knew how to answer this. But to get a rejection based on this (maybe other non-disclosed things as you mentioned), has bummed me out.
Cezar Lamann
Posts
-
Did I dodge a bullet? -
Did I dodge a bullet?So, I've been applying to a couple of Tech Lead positions recently. I've been in Software development since 2008, and have worked with .NET since 2011. I went through several codebases throughout the years, and I have seen my fair share of atrocities done in codebases (including a critical software with 13 KLOC inside Program.cs). I believe that at least, nowadays, I know how NOT to screw things up. Recently, I had an interview with a big company in the restaurant management sector (with customers like Burger King and others in the same range). The interviewer asked me what I thought about the usage of Stored Procedures. I told them something along the lines of: "Well, they have their place. There might be situations worth considering their usage, but not always. E.g., Let's say you have a highly complex report that depends on several rounds of aggregations and calculations, and it is time critical, it might be worth considering the usage of Stored Procedures, instead of doing everything on the .NET codebase. Since the database has mechanisms to handle data better (indexes, query plans and whatnot) and it is closer to the data than the application, we could leverage these things to reduce the time needed to produce this specific report". Then, two days later, I got a rejection letter saying that my way of thinking was outdated, and that they do everything inside application code, so they would not move on with my application. So, my question is: Did I dodge a bullet, or did I in fact screw this up? How would you guys reply to this question if you were in my shoes?
-
Fighting a monsternão é reddit, mas r/suddenlycaralho ! Que vai querer no print, meu bom companheiro Dev BR, sofredor com cálculo de IPI/PIS/COFINS?
-
Fighting a monster12k lines in Program.cs for a console/batch processing application running at a government authority where I used to work. It was for validating and processing Financial Transactions (MiFID II) The original developer was on extended maternity leave+vacation (1.5 year). No one wanted to give maintenance to it (neither the original dev, when she came back 8 months after I was hired) because it was too unwieldy to do anything there. I was hired specifically to deal with it. Took around two months to have it on my mind to actually start breaking it down. Since no one was interested in working on the beast, I kinda grew fond of the project because it was important, and no one bothered/pressured me when I told them that improving things would take time. Also, I was free to perform any needed refactorings to the thing. I managed to improve its performance by several times first (to remove processing bottlenecks), and then started refactoring it, bit by bit. It was a pity I had to leave that project behind and go back to my home country. Since I was a contractor, and it was before the pandemic started, so people were not very fond of offering me to work remotely.
-
For those who have worked on projects from big techs: Do/Did you have access to the codebases from defunct/retired software/hardware?Well, I'm not saying to take any code home, but maybe experiment inside of the company with retired devices or anything like that, or maybe updating drivers/kernels/firmwares/whatever to a more recent revision and flash it on older devices just to see what happens or anything. IDK, but if I'd work for any company like those I mentioned, I'd like to have some spare time to work with some funny/interesting "retro gear" (if available, since the source code for everything would just "be there") just to see how they would behave in more modern days. To me, one thing is tinkering with retro gear while dealing with "black boxes". Some stuff is so locked down that, without knowledge, you can hit a blocker that is a deal-breaker and give up. Tinkering with those things while having full knowledge of how it works and being able to mess around with the source code is on another level :D
-
For those who have worked on projects from big techs: Do/Did you have access to the codebases from defunct/retired software/hardware?Well, I'm not saying to take any code home, but maybe experiment inside of the company with retired devices or anything like that, or maybe updating drivers/kernels/firmwares/whatever to a more recent revision and flash it on older devices just to see what happens or anything. IDK, but if I'd work for any company like those I mentioned, I'd like to have some spare time to work with some funny/interesting "retro gear" (if available, since the source code for everything would just "be there") just to see how they would behave in more modern days. To me, one thing is tinkering with retro gear while dealing with "black boxes". Some stuff is so locked down that, without knowledge, you can hit a blocker that is a deal-breaker and give up. Tinkering with those things while having full knowledge of how it works and being able to mess around with the source code is on another level :D
-
For those who have worked on projects from big techs: Do/Did you have access to the codebases from defunct/retired software/hardware?Or a related question: Do/Did you know what happens to the codebase for products/services when they die? Well, yes, sometimes I get salty and nostalgic about some software/hardware going the way of the dodo. I'd like to ask what happens with the codebase of those things. - Does the company keep it? - Are the devs free to tinker with it in any way or form (like if someone would like to bring new features/fixes to that legacy codebase to bring some old abandoned hardware to life again) - Is it "frozen"/locked somewhere? For things like: new Kernels on old Android versions, Old MacOS versions, porting new iOS versions to old phones (like iPhone 4S), Old Windows Versions (can you imagine Windows XP or with modern 11 Kernel? Not to mention Windows phone (yes, I'm one of those :D)), Google Glass, Orkut, Google Wave, unlocking bootloaders of those old Palm/Symbian devices to give them some utility, together with the drivers and toolchains. As a developer, I know that doing stuff like this sometimes is not feasible due to the effort required to modernise a codebase and bring fixes and other modern stuff to a retired codebase. Sometimes it is better just to leave it behind because you have more things to do than mess around with old stuff. I know it is a pipe dream, but I wonder what someone with the insider/hands-on knowledge could do with those things, like free them up from their "software cages" and put them to good use.
-
Where to learn about Linux?Well... I know you've asked for English, and I know that maybe you're not a rookie in what computers are concerned. Since I don't know where you stand in the knowledge spectrum, here are my two cents on this subject. I used to be a professor in a governmental trade program and I've used this one (in Portuguese) to teach my students almost everything about computers (yes, even how to turn it on or off), filesystems, Linux and whatnot. It is free, has been updated last time in 2020, it has LOTS of old stuff in it (like how to connect two computers using serial or parallel ports O.o). However, if you ignore the 20% of stuff you won't use nowadays, everything else is pretty much up-to-date. From computer architecture (Registers, DMA, etc.), passing through OSes, drivers, commands, networking, services, security, netiquette (yes, you read it right) and whatnot. The beginner + intermediate levels contain around 370+ pages, and there are advanced and security levels available. It is available in PDF, HTML and TXT. Brazilian Portuguese is well translated by google translate these days, so since it is free, I really think it is worth a shot. It is Debian-based, and it will not explain more modern things though (like NAS/RAID/TrueNAS, Wayland and etc.). This is really a Zero to almost Hero material on How computers, networks, services and Linux work. Pair this thing with the official Git docs, some programming language courses (there are lots of great free books pretty much everywhere), and some Computer Science material (Harvard CS-50, which is free as well and well-known), and you will have a rock-solid foundation. GuiaFoca — Site Oficial do GuiaFoca - translation: Seal (Foca) Guide (Guia). This is the material I was talking about[^] GitHub - EbookFoundation/free-programming-books: Freely available programming books[^] CS50: Introduction to Computer Science | Harvard University[^]