Skip Navigation

What do all you coders actually do?

I have tried for 20 years to get into coding, and among adhd and having 10 million other projects going on, just could never get it beyond absolute basics and knowing some differences between languages.

Now it seems every tutorial I see is really just clicking around in a gui. Very little actual typing of code, which is the part I actually find cool and interesting.

So my question is, since everyone on lemmy is a programmer, what do you guys actually do? Is it copying and pasting tons of code? Is it fixing small bugs in Java for a website like "the drop down field isn't loading properly on this form"?

I just dont get what "a full stack developer sufficient in sql and python" actually does. Also i dont know if that sentence even made sense!

136 comments
  • I... write code. It does stuff. Usually the wrong stuff, until I've iterated over it a few times and gotten it to do the right stuff. I don't "click around in a GUI." If a tutorial is making you do that, it's a bad tutorial.

  • Something something Jira something scrum agile Confluence something another meeting something hit tab and let copilot do it and repeat.

  • a full stack developer sufficient in sql and python

    Ok, let me first try to explain what happens on a good day, before going cynical.

    Let's assume we have an existing system. You go to what for you appears to be a website, fill some text fields, click on a button, etc. In the background a lot of shit happens. Typically the backend part of the system consists of tens of services each doing it's own thing. Some participate in returning a response to you, the user. Others just process data further for analytics, security, etc.

    One day someone (in most companies a product manager, or a UX researcher) comes up with an idea for a new feature. A user should be able to do XY. And of course pay for it.

    That's where you step in. Since you mentioned full stack, you will need to do everything.

    • Create a new page with forms, buttons, nice colors and pictures on the frontend
    • Accept the result of user actions of the above to an API in one of the services mentioned
    • Save the data into a database (this is where SQL comes into play)
    • Retrieve data from a database (SQL again)
    • Emit various events or API calls to other services, informing about what just happened

    This is all done with code. You can copy/paste, vibe code, just type it yourself. Code is the least of your concern. Making sure it all works together is what's tricky. You will go through several iterations until you get it right. Then you write automated tests for it (TDD people don't come at me).

    Also you communicate to other people in the company about any dependencies and overlaps with what others are doing. Finally, you can deploy the code to production which will make it available globally to users.

    I just described about 50% of the programmer job. I didn't mention code reviews, architecture discussions, plannings, retros, communities of practice, incident handling, herding cats...


    This is all valid in a good case scenario. good company and a good organization in it.
    In reality it's mostly waiting. A lot of waiting. Despair if you can't make it work. Happiness if you can. Then despair again because all you do is pointless. A lot of fighting against the system designed to make you as unproductive as possible. Or just giving up and faking it for a paycheck.

  • Now it seems every tutorial I see is really just clicking around in a gui. Very little actual typing of code, which is the part I actually find cool and interesting.

    Not sure where you're seeing "just clicking around in a gui", but if you like computer games, there's some fun gameplay you can have while coding. Some of those very much contributed to my experience.

    BitBurner is a free idle incremental programming game, where you write scripts to hack things to make money to begin with, progressing onto both progressively more complex mechanics (how about automating a manufacturing corporation with a script?) and utility scripts to automate things you've been doing manually.

    If you like Minecraft, there's fun to be had with ComputerCraft, scripting things in Lua. With some add-ons (Plethora IIRC) you can access chest inventories via cable and transfer items between them, and set up your own fully automated storage system with recursive autocrafting, as just one example.

    Or how about modding games - if there's a Unity game you enjoy that doesn't use IL2CPP, like Risk of Rain 2, it's very moddable using C# and interacting with Unity APIs, and for advanced stuff modifying the underlying IL that C# compiles to. Quite a lot you can learn, and if you stick to pure code mods to begin with, not that hard to get started - though code mod means nothing like new items, new enemies, new characters, buildings etc. since adding models/textures/sounds tends to be more involved.

  • I code around 10% of my day. The rest is just meetings about things people want, emails about bugs that occur and small fixes, finding out what network did again and re-doing the automatic syncs again.

    Ironically in all my jobs coding is actually one of the smallest/least time consuming things I do. I do much more coding on my own time than at work. And all without AI. Cause AI is silly (and if you dont self host, your coding for Microsoft/OpenAI/Github/etc...etc..).

    My suggestion, try to make the smallest MVP possible and just iterate on it. Find a cool game engine? Great! Try to make the character appear on the screen, then do other things. Find a cool library, great! Try to use the library in a small project. It doesn't work for everyone, but it has helped quite a few people. Do what gives you motivation. Or fix something you hate. Hate is an excellent motivation.

  • I have never just clicked around in a gui unless its me testing something I'm building. I would suggest finding some better tutorials.

    Today I added a few features and fixed a couple bugs.

    We have a screen where users can basically click through a list of contacts to send out emails. The list is system generated, and sometimes users want the email to go out to other contacts not on the list. So I added a section to the screen with a typeahead input box to search through all the companies in our system. Once the user selects the company it has to be broken down by branch (region) so I had to build out a small api for getting the company branches and filtering by some criteria to see if they're even eligible to receive these types of email, so with that data returned I generated a drop down to select the branch, from there another api call to generate a list of checkboxes for each contact at the selected branch. Then I had to build out a mysql table to store the additional contacts to email and work that logic into the code that sends out those types of emails.

    Right there you have perl, mysql, html, CSS and JS.

    Another thing that everyone's gonna lose it for when it goes live but took me no more than an hour. A lot of our accounting pages are historical reports, there's only a few that are updated in realtime, and almost all of them were super slow to load because of all the heavy calculations. I added a couple tables and a cron job to run daily and populate them. So now instead of doing calculations on the fly those pages just pull the data from the db and load instantly.

  • Product owners say, "We want to change the site so users see a list of all the other users on their team with access to this project "

    Okay. Do some thinking. Going to need the backend to return that information to the front end. Decide what URL that should be under (api/v1/projects/users, maybe?).

    Now we make the backend actually do that. Create a new file for this endpoint. Update the routes file so that url points to this file. Write the handler class.

    Does this endpoint take any particular input? We know who the caller is for free from the framework. We only want to return info about one project or all projects? Make that decision. Update URL if needed.

    Write the code to get the other users on the projects in question. Maybe that's SQL, but might also be ORM (code from a framework that generates SQL based on objects). Decide what information we actually need. Package that up and send it back. The specifics depend on language and framework.

    Write automated tests for this. Make sure it works for

    • 401 not logged in
    • 403 asking about a project I don't have permission for
    • 404 asking about a user with no projects, or a project that doesn't exist
    • someone with 1 project
    • someone with 2 projects
    • someone with 10000 projects
    • also consider what happens for 0, 1, 2, 10000 users on the project.

    Realize this needs to paginate. Go back and change the handler code to do that.

    Realize due to some quirk of how permissions work, someone can be on the project twice. Talk with the team about if we should just decide that here, or try to fix the root problem. Probably the former.

    Add deduplication code, then, and test cases.

    Open this up for code review.

    Start the front end work.

    Make a dummy page first and update your API calling code to know about this new route, assuming you don't have that auto magically set up somehow. Make sure it calls it and gets a response.

    Realize that staff users technically have access to every project in the system. Ask product if that's how they want that to behave. If no, figure out what you all want that to do instead.

    Do a bunch of react work to make the page pretty, put the response in the right UI elements with links to the right place. Realize the response you're sending back makes building the links annoying because you didn't send some part of it, so you'd need to make another request to the backend for every link. That sucks. Update the backend to include the user's team-id that is for some stupid reason still in the URL. Comment on code review.

    And now I'm tired of writing.

    Edit: I hit submit before I was done. Finished now. Edit: fix typo

  • I send out resumes to job openings that claim to be entry level, only to be shot down because they want five years of experience in a technology that came out two years ago.

  • I work with a 7-person (6 devs and a lead) on a 20-year-old financial reporting application. We either pull or receive data from about 7 different systems where folks record contracts, funding documents, purchase requests, purchase orders, invoices, bills, etc. and pull them all together to build reports and UIs where users can search across all the data, and have it unified in one place. That's about 90% of our workload, anyway. More recently, we've adopted workload from a couple big legacy systems that got sunsetted, where we're actually the data-entry point, feeding data out to the main billing system.

    Day to day, I work on everything from PL/SQL (Oracle's SQL variant for compiled stored procedures) where the majority of our business logic lives, to VB.NET where two different HTTP Web servers live, as well as a large automated testing suite for that database business layer, to TypeScript where most of our UI logic lives. Occasionally, I might dip into plain JavaScript/jQuery or ASPX to work on older features.

    There's plenty of time spent writing code, but there's also a LOT of time spent just discussing things among team. Probably about half of the time, overall. Part of why the project has lasted 20 years is that we've gotten very good at being able to interpret what non-technical finance and acquisitions folks want. Like, they might come to us and say "hey, can you add inter-departmental purchase requests to report X", but they can't always tell us what an "inter-departmental purchase request" is, or where that data lives in the external systems (and that's not like a criticism, that's just the reality of the fact that these people are accountants, not engineers). So, we'll have to probe for specific requirements and/or reverse-engineer it out of an external database.

    I also do open-source work in some of my hobby time, which is pretty much all C#.

  • Oh, these days?

    Nothing.

    I tinker around with making a video game, lots of code in that, but no one will pay me even half of what I'm worth, as either a software engineer or db admin or data analyst (or all 3 of those at the same time), and the tech industry's idea of a hiring process is an actual sadistic joke, invented by morons, run by idiots.

    The tech industry is largely imploding because most of the competent people have been gaslit and forced out by abusive idiots with MBAs who do not know how to code and have now convinced themselves that if they convert the entire economy into destroying the world with AI datacenters, in an effort to make code that can code itself, well then they win, somehow.

  • Crazy to me that GUI seems to be a major focus in those situations. My IDE is most often pretty minimal, whatever it takes for me to get code on the screen, and unless I'm using the debugger, compiling and running has always been easier using a CLI. It's good practice anyway, familiarizing yourself with the shell, code for your code lol.

    I've been developing professionally for almost 10 years now, and started learning very young. The circumstances were different, but I think the principles are the same. Some folks here already mentioned taking on projects that interest you, and I'd definitely agree, provided you keep them small. Something that you'll want to make can keep you motivated, and small wins keep you going. For something full stack, I'd recommend coming up with a CRUD web app (create, read, update, delete) that does something that's fun. Maybe it's a recordkeeper for a sports team, or maybe it's a rudimentary forum. That sentence makes sense, no worries. You can use python to write your backend, see if you can make an API that just handles CRUD requests and builds and runs SQL statements for your database. Then just use whatever you'd like for the front end and call that API. It's still a pretty big project depending on how new you are to this, but it's hard not to be when full stack touches everything. If you're completely new, I'd lay off and pick the front or back end to start with.

  • I program out of my own need, and if something/a project catches me, it really catches me (ADD). So for a large part, it's customizing software and scripting for my server (selfhosting and hosting others).

    As for larger projects, rn I'm managing a middle-sized but fucked up old django webapp, and rewriting it.

    Mostly, it's actually writing code (primarily python), including reading docs/tutorials and adapting that to how I actually need it, in my head, and integrating that into the codebase.

    At work, it's the fixing of small stuff in Java Spring. And that certainly does not catch me at all.

  • My last project is using machine learning to sort data for a company and the flow kinda goes like this:

    1. Use the advanced tab in the browser on the UI search pagr for the company to expose the API query for the data I want to have
    2. Write some shell script to programmatically call the API for the data I want.
    3. Realize that there's actually a limit to how much data the API can return BUT the metadata says how much there is beyond the limit.
    4. Write some script to paginate (scrape over) all that data and save as a JSON file
    5. Realize my JSON is badly formatted and some queries are empty, so do some error checking and massage to make it work right.
    6. Create a python script to ingest the parts of the saved data I want and write it to a SQLite database. This takes ongoing refinement.
    7. Do some sql to count how many entries I got in the time period I was getting data for, and compare to a tool the company has to aggregate said data. It was close enough.
    8. Go learn about Jaccard similarity and locality sensitive hashing. Use this to write a script to deduplicate the database so I don't have a zillion repeated entries. Also python, but it starts with some cursor stuff and sql.
    9. Do the actual project which is trying to get some reinforcement learning to label the data automagically. This means I also have to write some methods to get particular mixes of the data I've already collected. For example I want my mix to have 50 percent red balls, 20 percent green balls and 30 percent blue balls. How do you pick the right number of balls from the total set? It's not hard but it takes some thinking.
    10. Wrap this thing up in a script that will do some load balancing on a machine with lots of gpus and CPUs so I don't hog the entire server rack. Submit it and let it cook.
    11. Write it again so I can wrap options around it and optimize hyperparameters.
    12. Start working up the results to show improvement overall. If it's better than what the company already has...
    13. Time to fire up the old git repo and make sure the commits are clean. Add readme and make files (bc I prefer to deploy with make) and put it in the hands of another engineer who will roll it out for that company.

    Idk it's not a super sophisticated problem but it has a lot of moving parts and you have to kind of tackle them in order. Mostly it's "hey here's an obstacle to the end goal, how do I fix it on my own in a smart way?"

    Then do it.

  • Look into “recreational programming.” Make shit for the joy of making shit. Creation in it of itself is something to be sought after imho. Did’t finish that website? Who cares?! Don’t have any useful ideas? Make something useless!! Don’t worry about “users” or making the next big thing in tech. If you’re having fun click-clacking on your keyboard and solving problems, that’s all that matters

    So to answer your question, I’ve dabbled in a little bit of everything: web, db, graphics, interpreters, osdev, the works. The very few projects I’ve ever “finished,” however, are my lower-level ones; I just love getting right up close to the metal. Find a niche that interests you, start a million projects in it, and be proud of the one you finish years after you probably should’ve

    Right now, I’m working on a custom programming language/game engine built with Vulkan and LLVM. It’s got first-class support for a bunch of cool game and graphics stuff, and I’m super passionate about it right now. I’ll probably lose steam and only come back to it months after, but I don’t mind

    Edit: Also, don’t be afraid to use libraries to focus on what you want to focus on. I used to have an obsession with writing absolutely everything myself from the ground up, but I’ve since come to the realization that other people are MUCH smarter and more talented than I am, and I should trust them to write software for me. A great example of this is LLVM and my graphics language — depending on someone else to do the super complex compiler design lets me focus on what I wanna make: a language front-end and graphics library. It’s important to limit your scope to only what you care about

  • There's coding and there's coding. Just as you can use English to write fiction, you can use it to write a manual. Programming languages are the same. Well, maybe a bit more concise and confined, but the point is, you can flick around bytes on a bus or thousands at a time in CUDA. You can draw a triangle for a game or create a template UI with the click of a button and fill in the blanks. It's all 'coding', but wildly different.

    You might have heard about the meme that coders are wizards comanding magical stones, aka processors. Sometimes, we might as well be. Computer scientists come up with stuff so briliant that even the best of their own can hardly understand it. They write stuff that does stuff for stuff that does stuff for the stuff you wrote, and all of a sudden you did something without even really knowing what happened or how it works.

    With that in mind, I can explain what I do in one sentence or countless hours. I write stuff to test stuff that absolutely has to work. The devil is in the detail.

  • It's a very diverse field with myriad platforms. A game dev's day will be very different than a dev working for a bank. Most of my work career has been boring soul-sucking "move dollar amount x from here to there" corporate bullshit that paid the bills. As a hobbyist, I've taken a crack at coding for games, music, custom postscript generation, ray tracing, etc.

  • I'm a data engineer, which means I write code that manages data aka databases. RN I'm mostly working with python, pyspark, managing data transformations from different providers. I'm also managing the deployment and execution of such pipelines via terraform.

    I don't copy much code, if at all. I do search plenty examples online but then I write my own. I'm at the point where I could adapt myself into almost any language in a week though, they are very similar.

    If you want to go into coding focus on understanding the functionality of the code, what it is actually doing and why is it done like it is, that should give you a lot of flexibility when changing frameworks or languages. A lot of stuff is super similar across the board.

    About your question, "a full stack Dev with sufficient sql and python" is probably a front-end Dev that does JavaScript and CSS, with some front framework like react or Vue, which will have to create the code of the webpages, build components... They also mention sufficient SQL and python, which implies that the backend is done in python and that they have some database. Probably Django or flask. In the backend you create business logic, stuff like "get me the list of users", things the front-end asks the backend. For some queries the backend will also ask info to a database, and it will have a SQL client where it will have sql code to query stuff.

    Hope this helps.

  • I'm not working as a developer right now, so most of the stuff I write are supplementary for my creative projects. If I have a problem involving too much manual work, I want to figure out a solution to minimise it. Mostly done in scripting languages like Python and Ruby. Also doing number crunching and plots in the R programming language.

    For example, I'm working on tools to help my photography workflow. I sometimes get weird ideas like "I wish I could have a better idea where I have taken photos in", which turned into a script that takes coordinate metadata from photos and spits out a .kml file a mapping software can read.

    I don't really copy/paste code much. Sometimes the tools you use in the scripting language land spit out automatically generated stuff which you then develop further.

136 comments