Asking stupid questions
2024-04-30 13:16:00 +07:00 by Mark Smith
In my first software engineering role, everyone on the dev team used the same editor called Eclipse, which is a java IDE. I had plenty of experience with computers, with scripting languages like Python/Perl/Bash, but it was mostly from a sysadmin and devops perspective. What that meant was I hadn't really ever used a full blown IDE. I'd always used simpler editors like Kate, GEdit or Vim. Also I had no clue as to how web applications were structured.
During on-boarding, I followed various in-house developer environment setup documents and eventually got my local install of the code running. But I still didn't really understand how everything was working, how all the pieces connected. The IDE obscures that to a large extent, you fill in a bunch of settings under various menus that you have no clue about, change some config files, again that you have no clue about. When it works it feels a bit like magic.
I've learnt over time in software development, that magic isn't such a good thing. Sure it's wonderful when it works, but when things break, and you are trying to fix it, and you don't understand how things work under the hood of the UI, then you are really in the shit. The UI is literally in the way. I have always gravitated towards command line tools for this and a few other reasons. If you are used to doing it on the command line, if you are using a GUI and something goes wrong, you stand a much better chance of being able to figure out the problem.
Anyway, in the case of my Eclipse setup, of course it didn't take long before I got stuck. I was looking at all the code, and there was really a lot if it, more than 10 years of code, and I was completely lost. I didn't even know what I was supposed to be looking for. I had some error messages to go from. A quick search and I found relevant code, set some breakpoints in the debugger, but they weren't being hit. You have to remember I had no clue about web applications. I knew there was a webserver but I had no clue how the code you wrote actually got run. It was all magic.
Now when you are writing system scripts these tend to be in a single file. If the thing isn't running, it's pretty obvious once you put some print statements at the start of the file. If they never make it into the program output, you know that the file you think you are running, for whatever reason isn't being run. It's like the most dumb and basic thing. Is the file you are running actually running. You would be suprised how often a bizare thing like permissions, or a network drive that hasn't mounted or any number of other strange things will occur causing this to happen. In a way it's comical, but it highlights a fact developers often forget, that life outside the working dev environment can be quite complicated. But also that often environment setups are over complicated.
Eventually I after thinking about it for far too long, I summized that there must be a file1 line1 somewhere. There must be a place where the code starts executing, same as for the simpler system scripts. The IDE is actually just running the various applications on the command line, but it hides that from you. Because of this, I didn't even know to ask the question of where the code starts to execute. Another thing that makes it more difficult than system scripts is that the code you are debugging only gets executed when you make an HTTP request, i.e. when you try to load a page from the website you are debugging in your web browser.
It feels like such a dumb question to ask, how does the web browser actually get into my code? But it's totally the right question to ask. Of course web developers have special language to describe this, it's called an 'entry point', but if you don't know the special language, you are bound to sound a bit silly or stupid or both. You have to not be overly worried about this, to an experienced software developer, who has worked in several different areas, you don't sound stupid at all. It's only to those developers that happen to now the special language, but who don't have any experience in other development areas, that you sound stupid.
I was reminded of this by a recent Daily Show episode that tries to tackle modern monetary theory. Ronny Chieng starts asking literally the most abstract questions possible, is money good, are deficits good, is going to a casino bad, how can we be happy about deficits, and it's hilarious. But it's also very insightful, because through his faux useful idiot questions, you can get a sense that the UI might be getting in the way a little, maybe underneath the calm eloquant answers of his guest, there lies more to the money story. I think it was a brilliant way to put money in the consciousness of the general public without getting too caught up in the weeds.
I asked a sort of stupid question earlier to crypto and web3 devs.