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 Get told to stop working on whatever I’m working on
20 Some new problem is now problem number 1
30 Get about 70% done fixing the problem (it’s functional but ugly, just need to wrap up this mess so it doesn’t become tech debt…)
40 GOTO 10
Mostly I make JIRA tickets.
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
- 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 DevOps guy and seem to spend most of my time fixing AI slop. It’s supposed to mean automating builds, tests, scans, deploys, compliance, etc, so the other developers can focus on product code and all the process just works
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 parens 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. So I don’t even get any advantage from it
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.
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.
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
10% creating bugs, 90% fixing bugs.
They pay developers to put bugs in and then they pay them to take bugs out.
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!!
0% figuring out what the customer wants? I envy you.
learn new js frameworks an cry when i see agent641@lemmy.world’s jira tickets
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 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.
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”
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.
See you at Masters!
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 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 client success, with teams presenting ROI reports to clients and/or analyzing incoming data for variance etc. We need solid people, with real experience.
For sure! I’ll DM you
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.This was a good insight. Also good notes on how it works in the real world, ha!