What do all you coders actually do?

https://sh.itjust.works/post/48048469

What do all you coders actually do? - sh.itjust.works

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!

10% creating bugs, 90% fixing bugs.

This should work… it doesn’t. What? Why the hell not… omfg.

This should work… it doesn’t. What? Why the hell not… omfg.

This should work… it doesn’t. What? Why the hell not… omfg.

This should work… it doesn’t. What? Why the hell not… omfg.

This should work… it doesn’t. What? Why the hell not… omfg.

This shouldn’t work… Why the hell does it work, don’t touch it!!
I’m more scared of this one, “it should work but doesn’t” means there’s something I’m missing, usually small, maybe I forgot to change one function call or an import. “it shouldn’t work but does” means there’s a huge misconception in how the thing actually works.
0% figuring out what the customer wants? I envy you.
There’s a zen peace that comes after realizing the customer is out of their mind and will change their mind tomorrow, anyway.
They pay developers to put bugs in and then they pay them to take bugs out.
They pay people to find the bugs and then ignore them!!
You must be QA.

So my question is, since everyone on lemmy is a programmer, what do you guys actually do?

Hey now, some of us hate programming and the deepest we go is being scripters. I, for example, am dogshit at coding, but I am pretty solid at systems and network administration.

I only program for fun, usually in video games. A lot of games let you code in LUA (shout outs to computercraft)

Its fun for me to write it out, and i dont really understand how to use git, so I write it all out.

I write code in a niche industry, in an even more niche language.

With 20 years experience I am finally at the point that much of my stuff works without too much headache.

Unfortunately, now that I’m finally good at it, it’s become a much smaller part of my overall job.

Nothing I look forward to more than being left alone for a few hours with my headphones on banging out a project.

I’m curious what this niche language is if you don’t mind sharing. I love niche languages and always enjoy hearing about them being used in industry.

I work in corporate Audio Video, and program in all the main AV languages. I specialize in AMX / Netlinx, but do Crestron, Extron, and various DSP programming as well.

Tie it all back to web applications where I primarily use PHP.

Been learning Python as that looks to be where things are going in the next 5 years.

That’s the most hilarious thing about being good at being an engineer it seems. I’m more than 10 years into my career at this point and I spend more time correcting other people’s work and outlining the technical work that needs to be done than writing things myself these days.
“hey instead of working on the projects that you are responsible for, can you spend your whole week answering 10 peoples complex questions since you’re the only one that can answer them”

But from the companies perspective this is a net-gain.

You’ve just unblocked 10 people so they can continue to work… and even if their weekly individual productivity is 25% of yours, combined they’re doing more than twice the amount of work you’re doing and it only cost the company a week of your time.

Yeah, at times it’s frustrating and distracting, but hopefully you’re getting compensated for the knowledge you bring inaddition to the work you deliver.

Yeah, answering questions and debugging issues sounds great to me… As long as the employer acknowledges that takes time and work, and brings value. And also somewhat acknowledges it as a proper role, and not something being done “in the meanwhile”/“on the side”, since just interrupting work to answer questions knocks you out of the flow, so to speak.

…and then you get reprimanded for lackluster productivity. 😑

You lifting up others doesn’t translate to losing yourself up, unless there is (unusually) healthy culture about that in your company.

You have a good point… and I’ve worked on both sides of the fence. Currently, I’m at the “healthy culture” camp, but it wasn’t always that way.

While I was working at companies that had a not-so healthy culture, there were things I did to “bring visibility” to these non-work tasks. However, I should add that at these types of companies didn’t really offer a lot of financial compensation for this non-work, but at no-time did anyone challenge my productivity.

Basically, I’d suggest:

  • Be (technically) opinioned and make it visible. Often, it’s not your boss you need to impress (as they see your work every day), it’s your boss’ boss. If you have a reputation within the company as a guru in something, it’s easier for your boss’ boss to “see” that you’re bringing “value” outside of you day-to-day tasks.
  • Bring visibility to these (side quest) discussions. At one company, I created a chat room to use as a sort of “technical self-help”(for all Engineers) and any DMs I got, I would ask them to funnel the discussion into the chat room. I asked them to do it “so others can find the answers to similar questions” and more importantly “to bring visibility to these discussions”. You, your boss, your boss’ boss can see how much time you invest in these topics and they can see that this help does not come for free.
  • If your not meeting your goals (or are stressed out) , due to these side-quests - tell your boss. Explain (as early as possible) that project X will slip if you keep focusing on unblocking others and let them decide what to do. If you followed-up with Point 2, you’ve got concrete evidence to justify where your time is being spent.
  • When people ask you “what are you doing?” (like during your Stand Up). Do not answer “nothing” or “supporting others”. Be detailed, mention the actual technical topics (and if you’ve got this chat room, reminding yourself is much easier).
  • Last bit, which might not be helpful. If it’s the same questions or some fundamental misunderstandings that your often answering: maybe offer a Dogo/training for anyone who’s interested. When you offer it, shout it from the highest tree top - it’ll go far in establishing yourself, in the company’s eyes, as a guru (even to those who don’t understand the topic) and it’ll (helpfully) reduce the amount of questions in that topic.
  • I‘m working as a freelance web developer with creative agencies to create websites or applications and maintain existing projects. Mostly in PHP with a frontend written in HTML / CSS and some JS.

    I also had trouble getting into coding initially since I’m a pretty visual thinker but a university course called „coding for designers“ that taught programming in Processing finally got me into it. In it you didn’t start with a boring ass calculator but make pictures and later games with a simple IDE.

    A “full-stack developer” is someone who can do front-end / UI work (HTML, CSS and Javascript or whatever the frameworks and tools de jour are nowadays if we’re talking webdev), back-end work (APIs and “business logic” and all the stuff users don’t see), and often storage and infrastructure work (manage databases, write and optimize SQL queries, put things in buckets, get your code running on AWS / k8s / a pack of gophers / whatever)

    that is

    someone who wears too many hats and isn’t paid nearly enough by a company that doesn’t want to hire 4 engineers

    I’ve been a full stack developer for nearly thirty years. They keep adding so much to the stack that these days I will only claim to be a Java developer. I know way more, but there’s no point in laying claim to it. I can do JavaScript, css, and typescript, but I don’t really know react and I don’t want to because it’ll be replaced in another five years anyway.

    I have worked with so many CI/CD systems and there’s a new one around every corner and what you know for one doesn’t apply to others.

    Like, whoever you hire is going to take months before they are able to do significant stuff independently and 2 years before they can do the full scope of the job you hired them to do, and most folks are looking to move on after 2 years. About the time they’ve been around for a full Java/spring upgrade, build system change, and you’ve moved cloud providers, they will have encountered every problem often enough to know everything they need.

    CI/CD! How did I forget CI/CD?

    oh right I’m an SRE with Jenkins trauma

    fuck groovy

    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.

    I write software in many languages that does the things i want it to do. i understand how to write code that works. most of the time i write software it works on the first few tries. i don’t do a lot of copy pasting. i write functions and use libraries to create things. it’s strange to me, but from what i hear, it’s becoming rare for people to really understand how to make software.
    I always like to learn everything from the ground up, so many of these modern ideas just seem like cheating and not helping me learn anything about how it actually works.
    if you really want to learn from the ground up you could try playing the game Turing Complete! i recommend.

    I’m not a dev, but I work with a lot of them, and I do a fair amount of bug testing and reporting for them. Devs do so much: they usually deploy and maintain the infrastructure (servers, virtual machines, databases etc.) upon which they build stuff, they write code in a bunch of different languages, connect things up to external APIs to add more functionality, process and combine datasets to use in the things they build, and plan/track all of that wok as granularly as possible using a variety of project management tools like GitHub or Jira.

    Actually writing code from scratch is probably only 15 or 20% of what they do, at least at my relatively small company. And that’s usually spread out among a few different devs who have their own specialities.

    It really depends, most people end up specializing into specific things they work on as software has generally become too big for single developers. We have people that only do frontend stuff so things look nice on the website, some only deal with the database and making sure we return results as efficiently as possible.

    I started off doing the typical full stack but I’ve since branched off into DevOps so now I’m responsible for a few hundred servers across the globe that I keep updated and running smoothly.

    Sometimes I work on new tools, sometimes I spend days tracking down weird problems, sometimes I’m rushing hotfixes because something is repeatedly crashing in production.

    It’s worth noting that because you can click through UIs these days doesn’t mean that scales as you go. You can go spin up your app in a container in the cloud mostly through UI, but soon enough the defaults aren’t enough. I manage several hundreds of instances across a few clouds, I’ll well, well past clicking next next next finish. It’s just an easy and visual way to ease you into things, especially for beginners, as all the options available to you are there to see along with little help tooltips explaining what a setting does.

    It also depends on what you do: if you work at a startup, clicking through Cloudflare’s dashboard is more than enough. When you have thousands of customers, you’re not managing the tens of thousands of settings you have to configure, you automate.

    Code can describe things (HTML, CSS, HCL), code can configure things (YAML, JSON, Ansible), code can program things (PHP, JavaScript, Python, Ruby, etc), code can query things (SQL), programming as a whole is very wide.

    people have real life problems that they think can be solved with code

    I write code that solves those problems, and create even more problems

    I’m a data analyst, not so much a developer, but in my work I write SQL, DAX, and M code. My job involves sales people telling me what metrics they think they want, delivering those metrics, then being told to make different metrics because the ones I delivered didn’t play into their narrative 🙃
    Are you looking for a job? We’re hiring a data analyst and an architect I think. And sales can get fucked, we have an Analytics department supporting success with teams presenting ROI reports to clients and analyzing incoming data for variance etc. We need solid people, with real experience.
    For sure! I’ll DM you

    Not a developer, but a PM and Dept Manager for many dev teams. Your question is wildly broad, but I’ll take a high level stab at it.

    First, note that there is a lot of variety in software development. This includes industry knowledge, tech stacks, governance, roles and seniority. I.e. a jr programmer on a long established product may just bugfix, or unfuck client data, or make minor adjustment to features on a well understood codebase.

    Alternatively a consultancy may be approached by a client to build something new from scratch using a yet to be determined stack. I’ll talk about this one. On a project like this the Most Sr dev usually has a title of “Architect”. They review the requirements and select the technologies that are appropriate for the job. You are often assembling multiple products to work together.

    For example, if you get comissioned to build a company’s bespoke e-commerce website you have to get Inventory systems and to talk coherently with product descriptions and image systems, pricing modules, and payment processors and gateways, your in-house loyalty system for points or coupons, along with various shipping APIs from three different shippers and the postal services API for postal code geolocation and address validation. There are also a ton marketing metrics and data analytics that retailer’s want so every step of the way through the website what a customer clicks on and if they abandon the process withput making a purchase they can understand why. You could build all these systems from scratch, but why? There are a ton of pre made solutions that due to specialization, are better faster and cheaper than anything you can make. These are called system integrator jobs. Developers make all the systems talk to each other and build in any necessary business logic required.

    Then a team will spend a few days configuring their environments. IDE, Repos, installing the tools amd modules required and configuring everything to work as part of a team. This includes the rules for promoting code, peer review, branch management strategies,

    “Full Stack” just means you are adept at the back end - databases like Oracle and Mongo and SQL etc, the middleware business logic and anciliary modules as well as the front end making a usefull UI out of HTML and CSS.

    I’m a glorified data analyst. Almost all my work is done with a single database using a narrow range of commands and SQL queries. I memorized the syntax for stuff I use regularly and just type it out every time.

    No I do not want to write a bunch of macros. No I do not need an AI assistant. What I need is for all these “helpful” tools and popups to get the fuck out of my way. I’ve been typing typing typing since AOL Instant Messenger.

    You sound like I would be if I had been able to go that route ha. Aren’t most of those data jobs going to be replaced soon though? Seems like low hanging fruit for management to throw some crappy ai at it.
    I feel like I have enough experience and institutional knowledge that I won’t be replaced in the near future. But we’re not hiring, and the higher-ups are trying to shoehorn AI into everything to compensate.
    This AI trend trying to replace coders with LLMS is very stupid. A coder is already writing in human friendly terms what they want from the machine, if you communicate it with less clarity there are edge cases you’re not covering, so either the LLM is allowed to add edge cases scenarios on its own (so it can decide to filter all entries that contain the letter A just because) or it isn’t and won’t cover any of them (so it can for example crash and burn when retrieving something empty from the db and happily allow it to be put there). What I think most AI pushers don’t understand is that we’re already writing as close to English as possible while still being very structured about what we’re saying.
    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 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.

    Just to add to the answers that the sort of thing you are talking about exists. It’s called low code, with companies like Outsystems and Mendix.

    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 (aka spreading good practices to other teams), 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.

    This was a good insight. Also good notes on how it works in the real world, ha!

    I am working as a scientist with very specific geo data. Most of the day I am doing data science deriving information from a huge data set, mostly rule based but I also apply machine learning and deep learning. I am lucky I can code Python, however our IT infrastructure is pretty shitty. I also do data quality assurance.

    I need to attend many meetings, and communicate with partners. Every 1-2 months I attend conferences and also have presentations there.

    Sorry for not being more specific, but I don’t want to dox myself.

    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.
    Slowly dismembering Azure Devops with my teeth

    I work at an Infrastructure Cloud company. I design and implement API and Database schemas, I plan out backend workflows and then implement the code to perform the incremental steps of each workflow. That’s lots of code, and a little openapi and other documentation. I dig into bugs or other incidents. That’s spent deep in Linux and Kubernetes environments. I hopefully build monitors or dashboards for better visibility into issues. That’s spent clicking around observability tooling, and then exporting things I want to keep into our gitops repo. Occasionally, I’ll update our internal WebUI for a new feature that needs to be exposed to internal users. That’s react and CSS coding. Our external facing UI and API is handled by a dedicated team.

    When it comes to learning, Id say find a problem you have and try to build something to improve that problem. Building a home lab is a great way to give yourself lots of problems. Ultimately, it’s about being goal oriented in a way where your goal isn’t just “finish this class”.

    I almost never use a gui with computer languages and im not even a coder. Granted most of what I do is edit code, make a small script, or utilize code syntax in config files and such. I have used an ide but I still am not super comfortable with them. I mean they are guis but its just a way of organizing the files so its not licke click to do things. I don’t really get what you are even using. Like cell phone app stuff as that looked kinda gui but is not my type of thing.
  • Identify a problem. (User wants do something and can’t, something that is supposed to work doesn’t, someone wrote shit code that works and we want to fix it)
  • Get more info about it: ask users for more context, find out about their workarounds, assess the impact of the bug, find solutions to similar problems. Get together with others and hash out some design.
  • Do the coding. Often involves a bunch of reading documentation and trial running code to see if it works
  • Come up with a way to confirm the change does what it’s supposed to: write a new automatic test, or a procedure a person can follow to verify it works
  • Write a description of the change and test plan
  • Get someone else to check what I’ve done and make any changes they ask for (as long as I agree)
  • 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.

    solving business problems by adding more buttons and input fields that go trough various processing pipes and spawn more infrastructure to compute results nobody needs

    I’m a DevOps guy and seem to spend most of my time fixing AI slop.

    First of all, there is no graphical stuff. That’s just for simple learning sandboxes.

    We have an IDE - Integrated Development Environment. You can think of it as a glorified text editor. We type code in text and it gives us the equivalent of spellcheck, grammar check, autocomplete. They usually colorize the code so you can see structure, match ostensibly and quotes, and other low level assistance. But it gets much more useful with integrations to version control, scanners, build tools, download dependencies . You can click to build, test, scan, commit. They’re usually tons of other tools to make life easier.

    But code is cheap and easy to write the first time: much more expensive to fix. Maintenance over time is far more expensive than writing it.

    So now we have AI as another tool integrated into IDEs, and it is somewhat useful for generating new code based on patterns from previous code. But it’s never good enough to be an end result. A good developer can use the ai to get a jumpstart on new code, iterate it to get better, and almost always have to use their own knowledge to finish it to a working, maintainable result.

    So I have a bunch of junior developers in another country, just directly checking in ai slop. They don’t seem to be experienced enough or diligent enough to recognize when it needs more work. Which means I need to spend a lot more time on code reviews trying to figure out the unorganized mess, give the same feedback over and over, review the same code many times, and inevitably spend much more time on bug fixes for their mess than I would have taken implementing it myself.

    The thing is ai is not good at bug fixing. You can try to have it summarize the code, or compare it to best practices but it can’t really help figure out what’s going wrong and how to best fix it. Especially if the original code is ai slop to begin with.

    jr devs … AI slop… same code review over and over…time…slipping

    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.

    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.

    Mostly I make JIRA tickets.