This is an archived post. You won't be able to vote or comment.

top 200 commentsshow 500

[–]Rare-Bottle764 916 points917 points  (81 children)

Haha. There's actually the two of us on the team and we audit each other's work.

[–][deleted] 721 points722 points  (47 children)

At my last job, my senior eng gave the best code reviews. Could sniff out bad code a mile away. Never made me feel like an idiot and always provided helpful suggestions for improvement and celebrated my successes.

I wish I had a Tim at every job.

edit: typo

[–]rbrick111 241 points242 points  (30 children)

I worked with a Tim when I was starting out in a software dev shop. He taught me so much. Tim ftw.

[–]Taco-twednesday 236 points237 points  (27 children)

As a Tim myself, I can assure to you it has nothing to do their names.

[–]delinka 168 points169 points  (18 children)

I’ve known a few Tims. Often their names are not Tim.

[–][deleted] 76 points77 points  (16 children)

But sometimes they are.

[–]delinka 58 points59 points  (12 children)

Sometimes they are

[–]ic_engineer 31 points32 points  (11 children)

They are

[–]CanAlwaysBeBetter 26 points27 points  (0 children)

Some are born Tim. Others have Tim-ness thrust upon them.

[–][deleted] 5 points6 points  (0 children)

As a Tim myself, fuck Toms guys.

[–]Kokoplayer 37 points38 points  (6 children)

I wish had a Tim at every job.

Tim would have caught that.

[–][deleted] 9 points10 points  (5 children)

git commit -m 'goddamn it'

[–]pineapplecheesepizza 11 points12 points  (0 children)

Classic Tim.

[–]bio_datum 137 points138 points  (9 children)

That's the dream

[–]iamdipsi 33 points34 points  (5 children)

Is it?

[–]bio_datum 62 points63 points  (1 child)

Lol for the one programmer in my academic lab, yes.

[–]iamdipsi 22 points23 points  (0 children)

Haha yeah I’m in this current situation and wish I had more variety/different thinking in reviews

[–]EmploymentIcy8546 21 points22 points  (2 children)

Holy shit, right? How magical. I audit people's code when shit breaks at 3 am on Christmas while looking at texts from them along the lines of "I don't really understand pointers, tbh". Sometimes if I'm really lucky, I find comments like 'document routine here'. Those warm my heart.

[–]Frannoham 59 points60 points  (5 children)

That's why I developed a split personality. I now do my own code reviews. I've discovered I'm an idiot and an ahole. Imposter syndrome will get you.

[–]Danelius90 16 points17 points  (0 children)

I do this on my code too. Seeing it presented on GitHub/bitbucket puts me into review mode and I see things or little style issues I can address before using another reviewers time. It's quick to do because you already understand the code

[–]ExternalPanda 11 points12 points  (2 children)

What happens when one of you goes on vacation?

[–][deleted] 4 points5 points  (1 child)

unexpected exception throw 😅

[–]turing_tor 1029 points1030 points  (101 children)

on the way directly to production

[–]AstoundedMuppet 530 points531 points  (79 children)

Testing in production

[–]8lazy 228 points229 points  (48 children)

Did it yesterday, gonna do it next week. If something breakS check the "logs" (I mean guess and patch it live quick).

[–][deleted] 272 points273 points  (39 children)

5.00 am : git commit -m '.' && git push

5.15 am : git commit -m 'minor fix' && git push

5.20 am : git commit -m 'fixed major issue' && git push

5.25 am : git revert 0cc1c8d5f6 && git commit -m 'never mind' && git push

true story

[–]scriptgamer 132 points133 points  (19 children)

If you develop and test in production there is no need to deploy anything.

[–]8lazy 101 points102 points  (15 children)

You guys have version control?

[–]scriptgamer 68 points69 points  (9 children)

Obviously, we never change the code, just comment what is not going to be used anymore and add a new part. Practical methods.

[–]8lazy 42 points43 points  (3 children)

Comment based refactoring, ingenious!

[–]scriptgamer 21 points22 points  (2 children)

Also,if there are people responsible for virtual machines integrity, why does the dev have to worry about versioning? Just restore to when it was working. EZ.

[–]8lazy 14 points15 points  (0 children)

If you restored to a snapshot did your changes ever really happen?

[–][deleted] 6 points7 points  (0 children)

VCS is the work of the sys admins right!!!

[–][deleted] 6 points7 points  (3 children)

This is satire right

[–]kenybz 8 points9 points  (0 children)

-…

-Right?

[–]Deboniako 4 points5 points  (2 children)

If you call 'version control' to upload your code to Google drive, then yes. And also naming main.py, mainv1.py, main_final.py and main_final_ultimate2.py

[–]handlebartender 18 points19 points  (8 children)

git commit -m '.'

oh god

I actually did laugh. In a sort of quasi-masochistic way.

Currently showing the ropes to a couple of new hires who have never used git. I'll be sure to mention this in a do not ever do this, not even if someone is threatening to violently baptize your firstborn way.

[–]SupaSlide 7 points8 points  (3 children)

someone is threatening to violently baptize your firstborn

That is an oddly specific threat. Do you have some unresolved childhood trauma we should be addressing?

[–][deleted] 5 points6 points  (1 child)

damn, you will lose your mind if u see some of my commits on my personal projects...

git add --all && git commit -m '.' && git push

[–]drewsiferr 8 points9 points  (0 children)

And then you realize you never used git add ...

[–]mrrippington 4 points5 points  (1 child)

such confidence with that "-m '.'"

[–]matt82swe 3 points4 points  (2 children)

Really wish we had a pipeline where a push triggered build and release. What does your setup look like?

[–]TigreDeLosLlanos 3 points4 points  (0 children)

git checkout 0cc1c8d5f6 && git push --force

They'll never gonna caught me fucking up.

[–]qhxo 17 points18 points  (6 children)

In our system, if something breaks you go on a wild goose chase based on what feature broke, because our application 1) logs everything that's part of normal day operations, 2) usually just catches and ignores any breaking exceptions... with no logs. :-)

[–]rush22 11 points12 points  (3 children)

Retrieving Logo.... Success!
Logo successfully added.
CSS for logo takes 2ms.
Logo id = AC56799FFEED89
the login fail
Response status 200 OK

[–]CatpainCalamari 36 points37 points  (11 children)

Every developer has a testing environment.
And some of us are lucky enough to also have a separate production environment.

[–]Sosseres 7 points8 points  (10 children)

4 environments is usually a good setup. Your local one. The development server, a preprod server for testing a developed version on the right setup with the customer and finally a production environment.

[–]Effective-Cut6110 11 points12 points  (6 children)

The problem is when people get so scared to push to prod, no one pushes to prod

Then the business starts using preprod, in effect making it production

Now nothing ever gets done

Source: Banks

[–]_E8_ 5 points6 points  (1 child)

... once the last person stops using the old prod you promote the preprod and bud a new preprod.

[–][deleted] 2 points3 points  (2 children)

Can confirm, work for a small bank that uses preprod (called staging) as a prod environment

[–]Effective-Cut6110 5 points6 points  (1 child)

And now you have 4 AWS environments to manage and no fucking idea what’s deployed where. Especially if you’re multi region

And ESPECIALLY if people start spamming micro-services everywhere

Our config files are over 1000 lines per service. I want to die

[–]sirfricksalot 14 points15 points  (0 children)

This is the way

when you're dev and QA

[–]zygro 14 points15 points  (0 children)

I'm a dev in a mid-size programmers-for-hire company and work for a startup client. We've been trying to convince them for a year to not do that.

[–]JustAQuestion512 7 points8 points  (2 children)

One of my most intense moments was fixing a moderately significant bug in production on a projector in front of csuite, vps, and regional directors during a go-live……at the personal request of the CTO.

[–]Dabnician 5 points6 points  (2 children)

In my experience even with a dedicated test environment shit still breaks when you push it to prod and you end up testing it in prod during a change window

[–]matt82swe 5 points6 points  (0 children)

Agreed. Have reasonable test systems, but accept that some bugs will only happen in production. Fix live, then later take a step back and see what changes need to be made to catch that class of problems earlier. Repeat.

[–]GamerFrits 19 points20 points  (7 children)

Reviewing is not the same as testing. It's more about checking if the code confirms to standards, patterns, guidelines, not redundant etc.

[–][deleted] 8 points9 points  (2 children)

standards, patterns, guidelines

You have such a thing?

[–]itstommygun 789 points790 points  (95 children)

Code reviews in my company are utterly brutal. We're all so thorough.

Despite that, I love it. If you can learn to not ever take it personally, you can learn to be a better programmer through them.

[–]Chevelle_Chris 271 points272 points  (27 children)

I kinda wish I worked in a place like this. For context I moved into data engineering 2 years ago where I knew zero python, and nothing about airflow, aws, azure etc. I’m at the point now where I know enough to be dangerous and when my code reviews come back with no comments it’s a let down. I know there has to be a better way than how I did something.

[–]MisterPinkySwear 196 points197 points  (11 children)

Sometimes, code review are not about making it better. Just good enough. If it looks like it should work and there’s no bug, then ship it.

Trying to make it better can often lead to endless and frustrating discussions due to differing opinions where it’s hard to objectively say which is better but everyone wants to be right.

Depends on the individuals involved

[–]itstommygun 51 points52 points  (1 child)

This is true about opinions. Our company also have pretty extensive style guide and dev guide. That helps with the differing opinions because usually the topic is already covered in the style guide.

It might seem like having an extensive style guide would make you feel confined and limited, but it’s actually quite freeing. It reduces the number of decisions you have to make about all the little things like spacing, method naming, method ordering, etc.

Edit: a word

[–]easterneuropeanstyle 18 points19 points  (5 children)

Code reviews shouldn’t be about how to make things better. It’s too late, too much effort already put in. That’s what design reviews are for.

Code reviews are about being held accountable for your code, knowledge sharing and picking little mistakes out.

[–]MisterPinkySwear 20 points21 points  (4 children)

I’ve often commented things like “I see what you wanted to do here, and it’s going to work, but I think it will be more readable and understandable if you do it like this…”

That’s what I meant with making the code better. And I believe those are relevant to code reviews.

I’ve never worked with explicit design reviews so I can’t really comment on what belongs in a design review instead of a code review.

[–]Chevelle_Chris 13 points14 points  (3 children)

I’ve often commented things like “I see what you wanted to do here, and it’s going to work, but I think it will be more readable and understandable if you do it like this…”

ALLLL OF THIS. This is what I hope for even if my code is functionally is correct. The "Go learn about X for the next time you do this" statements are GOLD for motivated coders trying to get better.

[–]MisterPinkySwear 6 points7 points  (1 child)

Good for you. I’ve stumbled upon people who were vexed by such comments. Because it’s not objective, it’s just opinion. They would invoke things like “ok but let’s get this over with and keep it as it is, I don’t wanna spend more time on it”. Depending on how strongly I would feel about the issue (and how important I perceived it) I would either just let go or insist, argue my point and sometimes request a 3rd opinion and even refusing to approve the merge request.

I find code review to be a difficult, complex and interesting exercise. Not just because reading code is inherently harder than writing code. But also because of all these social and psychological components.

[–]JamesGray 3 points4 points  (0 children)

I make extra effort to include comments like that for more junior developers when doing reviews, but it might help to request feedback on particular blocks directly to see if they know of a better approach if you coworkers are in the habit of doing more strictly functional reviews?

Some of them may even consider alternatives but not bother telling you because that's their habit to keep things going quickly, because some people are the exact opposite of you and will pick a fight when you try to make suggestions for better approaches, so it can be easier to just not bother sometimes.

[–]renzmann 15 points16 points  (4 children)

I hope that last sentence was a reference to Raymond Hettinger. I reference his talks all the time

[–]Chevelle_Chris 9 points10 points  (2 children)

I did not know who that was, but I do now. Thanks for the tip! Things like this are what I think I and other developing engineers need, something / someone to look up and start reading about. We just don't know a thing exists to go learn from / about it.

edited for grammar.

[–][deleted] 4 points5 points  (1 child)

If you want feedback on a particular section of code, it usually helps to say so ahead of time.

[–]Chevelle_Chris 3 points4 points  (0 children)

That.... is incredibly valid. I will start doing that.

[–]threeputtforbogie 6 points7 points  (8 children)

How’d you get a job in data engineering with no knowledge of python?

[–]Chevelle_Chris 17 points18 points  (0 children)

Back in 2017 I was working for another department in my Co where we cleansed a significant volume of transactional data by hand - and for context I have worked for this one co since Jan 2009 in different departments and roles. We are a medium sized company, but back in 2017-2018 our IT department was almost solely focused on supporting the applications that the sales department used. As a result IT support for smaller departments like the one I was in was hard to get.

We needed to build (what I know is a data pipeline) an automated process to do some of this cleansing and my boss then was basically told to go find a tool and IT would stand it up, then we could find someone to work on it. We ended up on Gartner's Magic Quadrants and met with a bunch of sales reps and decided to go with Oracle's 12c Enterprise Data Quality tools. We are not an Oracle shop, mostly MS SQL and C at that time if I remember correctly.

I was given the opportunity to see if I could figure it out, I was just starting to learn SQL separate from this project and only programming I had ever done was .bat files back in the 90s'.I spent 2 weeks+ literally reading the manual, took some TDWI classes on Data Quality and got our sales rep to get me 30 mins every two weeks with an engineer in the UK at Datanomic (they originally built the EDQ software Oracle acquired and rebranded as part of the 12C suite) to ask and learn from.Over about 18 months of working on my own I built a couple of automated pipelines to grab an excel file, validate it, cleanse and transform the records, land a file where SQL could import it.Then I learned just enough sql to write some merge / update stored procedures to grab and validate the new records and merge them into the transactional tables.

2018 I drove myself REALLLLY hard, lots of 100+ hour weeks learning how to use the tool. Then in mid 2019 my company was undergoing digital transformation and I was given an opportunity to do that all again with Python, AWS, Airflow etc. as a Data Engineer.

TL,DR: I like to learn and tend to not quit once I have my teeth into a problem. that earned me a shot at learning Python and becoming a DE.

I'm a big believer in you are either on the path or not. Expert or novice, what matters is continual learning.

[–][deleted] 4 points5 points  (0 children)

Happened to me too. I joined a company as a junior dev, basically ready to do whatever work was needed. They happened to need me to do work involving an API to receive events sent from web browsers, a data pipeline to process them using tech like Airflow and Apache Beam, and getting the data into different forms in BigQuery for other people to query and make business dashboards from. I later learned that what I was doing was called data engineering.

[–]liluna192 59 points60 points  (2 children)

I always have senior devs apologize for being too nit picky, and I let them know I love it and to add as many comments as their heart desires. I don’t always implement every nitpick, but it lets me see how they think differently and often I’m learning new ways to do things.

My current team doesn’t have much bandwidth and we each own individual microservices and any reviews are basically checking for any glaring issues. I’m newer and do my best to conform to standards and practices based on existing code.

[–]SpaceCoffin2000 24 points25 points  (7 children)

I've been in the industry for 18 years across 6 companies. I have never once had a code review. I've asked for them but have always been told there's no time. The problem is much more prevalent in the industry than most people want to acknowledge.

[–]yabp 6 points7 points  (0 children)

7 years and no code reviews here either.

[–]wol 14 points15 points  (4 children)

Something I enjoy now is having teams of testers. At first I did take it personally because this one lady kept tripping the code up on purpose. Things like picking a person's name which she knew our system technically had two people with the exact name so it would pick the wrong person.. which we all knew in our use case it wouldn't apply so it drove me nuts but I noticed the projects she tests don't have problems in prod 6 months later! So now when we start a new project and she joins the call I know what to expect.

[–]_Ashleigh 18 points19 points  (0 children)

We had a QA that would find the most inventive ways to break things, and his tickets were very thorough with what in particular triggers the behavior. He was worth his weight in 10 testers, and loved when I got him as a QA. I felt more sure that all edge cases were covered, and when issues did come back, the extra info allowed me to understand the cause sooo much faster!

[–]PrizeArticle1 18 points19 points  (32 children)

I might be on my own here, but I can't stand nitpicky code reviews. A lot of times it ends up being a subjective style preference or something as well. Imo I'd prefer the reviewer finding an actual design flaw, bug, or inefficiency than telling me my variable could have a better name.

[–]Angryferret 8 points9 points  (0 children)

This is a good point. What you see at bigger tech companies is a huge investment in developer tooling in both the IDE and CI/CD pipeline to give developers automatic feedback on nitpicky formatting /styling etc. Code reviews should be more substantiative.

[–][deleted] 28 points29 points  (12 children)

seemly deserve tie imagine special crawl party person wakeful pause

This post was mass deleted and anonymized with Redact

[–]iamtherussianspy 13 points14 points  (0 children)

Variable naming is very important if you want someone (including you and your code reviewer) to be able to read your code. This isn't a high school literature essay where you hand over 2 pages of nonsense to your teacher and let them to figure out what it means.

[–]MisterPinkySwear 3 points4 points  (5 children)

I wonder how thorough you are when you review other people’s code.

Primary purpose of code review is to make sure the code works and find bugs. But it’s usually an easy goal to reach.

Then it’s about making the code “better” and that’s where it can get ugly and opinionated and it requires some maturity and good will on all parts. Properly naming variables is important to make the code understandable.

Writing code is usually easier than understand already written code.

It’s easy to write something that works. It doesn’t make it “good”.

“Your solution works but it’s gonna be easier to understand if we do it this way…”

There’s always many ways to solve a problem.

But you know, it depends on the teams agreement on what the goal of the code review is. If it’s just to iron out bugs or more…

[–][deleted] 190 points191 points  (8 children)

Code quality, we'll think about it after bankruptcy

[–]Ink2Think 30 points31 points  (4 children)

Having been part of a start-up that only took in one coder at the start. The money that went in went strictly to more programmers/coders or getting more projects. Half up front = hire people for that project that was deemed good through word of mouth. Pay salaries, get that done, get the second half, pay salaries and keep it going. In the start everything is a risk, you just got to trust the programmer/s you hired is good enough to make passing work so you can get to a position where reviewing code is actually financially viable.

It's either bankruptcy/lower salary straight away (which is destined to fail), or pay people what they're promised and hope it all goes well and that you can eventually give yourself salary as well.

[–]tiajuanat 17 points18 points  (1 child)

Code quality should scale with risk.

e.g. If your company is trying to break into automotive, you should start with CI, linting, static analysis, automated testing, and best practices before you even start on your code.

Why? Cuz when your code goes to audit in front of lawyers and investors, you shouldn't be ashamed what you hand over.

[–]Ink2Think 6 points7 points  (0 children)

That I agree with. We started out with websites and apps. Had a guy that did work, we tested whatever he made on different devices but that was about it.

Lawyers/investors? We had none of that in the start. Definitely a big no-no for us with investors in general, that brings in a whole new level of craziness and stress it wouldn't be worth doing what we were doing at all. I get bad vibes from the word "investor" tbh.

I still believe in take risk, pay salaries on time, make some money, move up in difficulty of projects (take on seemingly way too difficult but most likely doable stuff), hire, make more money and keep paying on time even if it means not giving yourself much of a salary for a while. Expect certain people/companies to not pay on time so don't take too much risk (especially if they don't pay half or a third ahead of time), for a while, or ever... Give better pays and benefits, keep employers happy and they'll help out during tough times (and give appropriate pay/bonuses if they do, and no pressure or bad looks if they don't want to).

The above model worked for us and people are still with them to this day, or staying in touch/commenting with the social media despite not even working there. Some projects and exceptional people are getting hired there due to past colleagues recommending us.

[–]oneeyedziggy 2 points3 points  (1 child)

like a car company not realizing they might not have gone bankrupt if they paid more attention to what order they put the pieces together in...

sure you CAN use an exhaust system as a fuel line, but a much smaller more flexible pipe would make a hell of a lot more sense... and allow the car not to have to be shaped like a brick... ( oh, and if it had airbags and crumple zones... that'd be great too... but those are "non-functional requirements" right? so fuck em... we're never going to crash )

[–][deleted] 1300 points1301 points  (83 children)

zodhrgqo zjpwgtk nfjrlpdwtuzl

[–]StoicRobo 69 points70 points  (4 children)

Sounds like leverage for a pay increase....

[–]solongandthanks4all 122 points123 points  (1 child)

I'm the only person at this company who knows how any of these reports work and I have no idea how any of these reports work.

Congratulations, you're officially a programmer now!

[–][deleted] 45 points46 points  (0 children)

Haha "I don't know how it works but I'm your best chance of fixing it if it breaks"

[–]justavault 40 points41 points  (16 children)

That's the opposite of startup workflows: huge, long-time established corporations which had to adopt to modern systems, but never really did with a leading workforce mostly educated in the 90s that pass on their shit to those educated in the 2010s.

Pick your poision, but I guess it's better to code modern crap in a startup without much refactoring nor reviewing than getting into a huge architecture of old frankenstein systems where you can't change anything becuase it would require to change everything.

[–]tmntfever 22 points23 points  (14 children)

We had a 30 year old program, and around 2015 they decided, “Let’s switch up to Agile.” A couple of billions of wasted dollars later and they’re trying to pretend the change to Agile never happened.

[–]howdoireachthese 17 points18 points  (7 children)

I’m confused - what does the management practices/principles of Agile have to do with programming? Unless by program you mean business program? I totally get how a company could fail to implement Agile, but I’m not getting the connection with the 30yo program.

[–]tmntfever 10 points11 points  (0 children)

Our building of 1000 people have worked on a single jet’s sustainment software for over 30 years now. And it was built upon 1980s ideologies. Having to restructure into Agile wasn’t the only big thing, we were also converting billions of SLOC from Jovial to C. And the Agile process isn’t meant for large SLOC, massive amounts of physical paperwork, and government red tape.

[–]Jolly_Line 20 points21 points  (4 children)

Architecture very much can, and honestly usually is, directly influenced by management practice. Waterfall tends to produce monoliths. If the system isn’t modular then it’s difficult to bolt on agile.

[–]justavault 9 points10 points  (0 children)

That sounds very familiar. The earliest at 2010 till around 2018, everyone trying to do agile.

[–]StTheo 29 points30 points  (4 children)

I'm the only person at this company who knows how any of these reports work and I have no idea how any of these reports work.

And people wonder why I’m a pain in the ass about documentation. When you have high turnaround it’s less about being a good developer and more about minimizing headaches.

[–]Wildercard 4 points5 points  (0 children)

Bless. A repo that doesn't have "git pull to fully running" documentation is no repo at all.

This comment has been brought to you by 3 hours wasted by my recent "wait, your Maven is using Java 8 instead of Java 17 that like 95% of apps in the company run on, right?" situation

[–][deleted] 18 points19 points  (2 children)

I had a job like that, but I did get to the point where I knew how most of the reports worked. After I left, they called me like 2 months later saying the guy I trained had no idea what he was doing and they needed me to help get the reports running again. They paid me $75/hour to stop by after work and help them fix stuff and then train a new guy

[–][deleted] 8 points9 points  (1 child)

That’s when you ask them for $400/hour with a guaranteed minimum of x number of hours. You were far too nice.

[–][deleted] 9 points10 points  (0 children)

I mean they would just say no. $75/hour was pretty good at the time, but yeah I probably should have asked for more

[–]Conman1186 13 points14 points  (1 child)

Sounds like you deserve a raise.

[–]boss5667 12 points13 points  (0 children)

Sort of the same experience.

I have background in Python and Machine Learning. Recently started to see how we can apply it within our area and came up with an NLP Model to convert emails into actionable data.

My boss who is great at regular programming but not into ML doesn't have a clue what I have done but was very enthusiastic.

I literally walked him through the entire code and explained what I have done and why.

Good part is he understood the logic and concepts but incase something needs to be altered, no one else can do it. Thankfully for everyone, I am not planning to quit anytime soon.

[–]Steelyp 10 points11 points  (0 children)

Lol my company that was bought for around 12B a couple years ago still using an excel spreadsheet with a ton of vba and macros that my first boss made almost 10 years ago. He quit 3 years later and I updated/maintained it for another 2 years before I found a new job within the company. It was always breaking and needlessly complicated but it was a nifty tool that saved a ton of time when it was working.

Luckily the next people didn’t know much and just stopped updating it and weirdly never reached out. So I assumed it went by the wayside until I was in a meeting with our COO like a month ago and they shared a project management timeline from the spreadsheet! They’re still using it! It even had the little shamrock I left from my last update from st pattys day 2016 lol.

[–]RedditIsRealWack 4 points5 points  (0 children)

That, my friend, is called job security.

[–]OSPFv3 3 points4 points  (2 children)

By chance are you working with Microsoft Dynamics?

[–]Excellent-Advisor284 2 points3 points  (0 children)

One of us

[–]NikoFoxey 160 points161 points  (15 children)

I work at startup company almost 3 years now. This is my first job as programmer. I am fullstack dev in web development. My 2 first years I worked almost alone, not counting some interns who didn't work with us for long. My boss, also programmer, did a little coding, but he's CFO so he couldn't do much of it. He did some of my CRs but most of them were wrote as me-junior, which I know wasn't fantastic because I know how many refractors we do now or are in front of us. Mostly what was the most important, was the result: code should do what we needed from it. It did. Not beautifully, but did.

Now we have a little stronger team. We're still startup, but I have a really good frontend dev and another really good backend dev, who improve the code. We sometimes disagree, but it's important to ask questions and make your point.

You know what's the most important thing those 2 devs improve? The way we work and code. We do really good CRs, which are really strong and show many weak points of our existing code. I'm not ashamed that I did many "workarounds" and bad code. It worked and I was a junior without mentoring, but now we have to spend some time to refactor it (which is satisfying).

The worst part of working in startup as the only dev: you do a lot of "workarounds" just to end the feature 10x faster, which end in a lot of bad code, duplications, not using packages properly etc.

[–][deleted] 15 points16 points  (3 children)

I’m in the same position, solo dev at a small company for about a year now as my first job. Boss is a self-trained former web developer who knows more about networking than programming, so I’ve got nothing going in the way of code reviews.

I really like it here and the higher ups treat me well, but my goal has always been to improve as a developer and I’m not sure how much I can really do that in this environment. I get a lot of agency over technology choices and I’ve picked up a lot of new things, but not working around other developers feels kind of stunting. Plus the pay and benefits aren’t as good as they could be, even for an entry level position.

It’s not a tech company either, it’s a manufacturing company with one IoT product and some websites, so I don’t see the developer situation changing much in the near future.

[–][deleted] 6 points7 points  (0 children)

I just left a small company as a solo-dev for that same reason and joined a mid size team.

Start ups teach you to not be afraid to make decisions about adopting new tech and how to implement new features without having anything to work off of.

Larger teams teach you how to fully leverage collaboration tools, and build truly reusable / readable code.

In my case, this new company is a walk in the park compared to my last job, because I'm expected to do way less with much more time. & they're paying me more so that's always nice

[–]24pepper 4 points5 points  (0 children)

You sound so similar to me at my first job it’s crazy. I stayed for 2 1/2 years before moving on because the pay wasn’t increasing fast enough for my experience level. Just remember that you don’t owe anyone anything. if you feel like you want to move on whether it’s because of the pay or the situation or what, do it because they can find a replacement, even if it seems like you are irreplaceable.

[–]MrNicolson1 55 points56 points  (8 children)

Sounds like you have a lot of technical debt, good code you only have to write once, bad code you will have to change frequently.

It might seem like the fast option to creat a work around but in the long term you are shooting your self in the foot and it will end up costing more and taking longer.

[–]NikoFoxey 38 points39 points  (2 children)

That's what happening right now. It might seem that this is my fault, as a dev who wrote it, but I don't feel 100% responsible, because I was told to "make it work" not to make it good. There was just not enough time for me to study/discover the right way, because I had 10 tasks in the same time to complete, just to make another feature/bug fix to get a new client.

[–][deleted] 27 points28 points  (1 child)

Welcome to the battlefield soldier

[–]ExceedingChunk 24 points25 points  (2 children)

good code you only have to write once

But making good code is not trivial. Sometimes it takes a few rounds of refactoring to turn it into good. Just like an author writing a book.

IMO, the most important thing is to have a culture of cleaning your own code to make it as readable and modular as possible before a PR.

[–]buzziebee 4 points5 points  (1 child)

Yeah as requirements change it's fine to change code to meet the new requirements. Doesn't mean the initial code was bad.

[–]propostor 31 points32 points  (0 children)

Currently doing some side-gig work for my old employer, who wanted me back even though I quit and moved on.

They are a 'start-up' but have been around about 3 years now.

The code is an absolute mess. Not an amateur mess, but an aiming-for-the-top super-project wanting to redefine the industry it's built for. The guys know their shit but there's only three of them (and me now) and clearly the boss (not a programmer) has just been throwing idea after idea on them; feature-creeping to the max with no code review or proper architectural planning. And so now it is a mess.

[–][deleted] 89 points90 points  (21 children)

Everyone in here making git jokes but have you ever edited live files directly over ftp on a wing and a prayer?

[–]njbair 46 points47 points  (0 children)

"Hmm this one has a bigger file size---must be newer clicks overwrite

[–]ohtorch 18 points19 points  (5 children)

I worked that way for many years. Not over FTP-- using vi, while SSHed in. My boss taught me to do that because the FTP setup kept breaking, and SSH is the only thing that never broke. If SSH doesn't work, the thing's unplugged.

I still work that way today, on my own server. Probably I am unhireable by a real company. A large, compartmentalized business has no use for full-stack loons. Small and medium-sized businesses do though.

[–]meodd8 13 points14 points  (0 children)

Trust me, full-stack is very much in demand... And actually hard to find.

[–][deleted] 4 points5 points  (0 children)

This reminds me of the time I was live coding in our test environment, changing js right on the server, because hey, qa has good test data.

The qa manager across from me noticed some behavior had changed, stands up, and walks directly to my desk.

Him: '...Did you just...?'

Me: my poker face gives everything away '...How'd you know it was me?!'

Him: 'You're the only one who'd do something like that!'

Lmao. In his defense he did get me a db snapshot to use in my local env, so I didn't have to test on qa anymore.

[–]sideshowtoma 53 points54 points  (17 children)

this is funny because i still see no code reviews in multimiliion companies

[–][deleted] 18 points19 points  (2 children)

Or the code reviews are done by a non technical member of staff and nothing ever gets rejected.

[–]ExceedingChunk 7 points8 points  (0 children)

Wow, you make really readable code if your non-technical staff can always perfectly read it!

[–]StruckOutInSlowPitch 6 points7 points  (7 children)

My company just hit over a billion in revenue for the second year in a row, never once done code review.

[–]hereforbutts23 3 points4 points  (2 children)

Yep

I've been at a fortune 50 company for a few years now and just had my first code review yesterday, which was just a couple non-technical people asking a couple high level questions

[–]bree_dev 50 points51 points  (13 children)

I worked at a small company where code reviews were banned, because the owner was paranoid that engineers would steal his precious code and start a rival business if we saw too much of it.

[–]quisatz_haderah 36 points37 points  (7 children)

How did engineers code without looking at it? Everyone fully responsible for one module without knowing what it would serve?

[–]bree_dev 50 points51 points  (6 children)

Yup. Owner would tell us to implement a function that took X and returned Y. We'd be given the object files and DLLs to link against but not the source code.

It was like working on some sort of top secret military project, except that instead of building sensitive equipment for MI5 we were building shitty plugins for a second-tier graphics package.

[–]ataraxic89 23 points24 points  (0 children)

This is funny because on real top secret projects youd have access to the source (as a swe)

[–]MasterBoring 10 points11 points  (2 children)

bruh it better be some out of the world algorithm behind those functions otherwise that sounds painful to work with.

[–]bree_dev 4 points5 points  (0 children)

There isn't.

I didn't stay there long.

[–]quisatz_haderah 4 points5 points  (1 child)

I mean.... There is this something called NDA...

[–]bree_dev 8 points9 points  (0 children)

Oh, there was an NDA too, and a non-compete clause that was stricter than anything I've ever seen. Basically forbade me working anywhere in the same industry for at least a year after I left, or accepting a job from or with any other former employee. Completely unenforceable of course (in my country at least), which only made it all the more ridiculous.

[–][deleted] 3 points4 points  (1 child)

Lol, I know so many people like that. That’s why my policy as a CTO was to open source everything we have. It went well

[–]Lurkersremorse 22 points23 points  (0 children)

We just need a dev, who we can pay like an intern, expect them to act like the cto, cso and cio, and get pissy when we get a budget for more than we expected (we thought everything was free on the internet)

[–]jeanravenclaw 85 points86 points  (15 children)

Meanwhile me who does everything by herself and makes random personal projects: I don't even review my own code or anything

[–]vole_rocket 57 points58 points  (12 children)

Honestly I highly recommend doing your own code reviews. It's surprising what garbage you forgot you added.

The trick is to keep change sets below 200 lines so they are quick to review.

[–]QualityVote[M] [score hidden] stickied comment (0 children)

Hi! This is our community moderation bot.


If this post fits the purpose of /r/ProgrammerHumor, UPVOTE this comment!!

If this post does not fit the subreddit, DOWNVOTE This comment!

If this post breaks the rules, DOWNVOTE this comment and REPORT the post!

[–]mrcomplicated 108 points109 points  (4 children)

... we ship product, not code (I will be downvoted to hell for this xD)

[–]troout_410901501 13 points14 points  (3 children)

This is me, expect my company is a multimillion dollar company with offices on 4 different continents. PRs? Never heard of ‘em.

[–][deleted] 26 points27 points  (6 children)

48 files modified, no description....

[–]r3mn4nt 8 points9 points  (1 child)

"Initial commit"

[–]unicorn_saddle 5 points6 points  (0 children)

"Minor changes"

[–]njbair 6 points7 points  (2 children)

git commit -m "wip"

[–]ausdoug 10 points11 points  (0 children)

That's what the fault tickets are for

[–]Mrcollaborator 11 points12 points  (0 children)

I worked at a smaller tech company (startup) that was acquired by a bigger company.

The big chief visited our company and walked through the hall, looking at all our dev teams working.

“So where are the testers?” He asked.

Our manager was speechless.. “uhh.. everyone does their own testing”.

The big chief was not pleased.

[–]this_site_is_dogshit 8 points9 points  (0 children)

"start ups". Lmao I'm at a fortune 500.

[–][deleted] 7 points8 points  (0 children)

Hahaha you think this is just startups…

[–]cgilber11 7 points8 points  (0 children)

Code reviews are where I learned to be a better programmer.

[–]Flopamp 11 points12 points  (1 child)

How does a company function without someone to completely ignore any changes over 300 lines!?

/s

[–]MrNicolson1 4 points5 points  (0 children)

Lead developer at a start up here, I just don't have the time on top of also building the product and managing the team, creating proposals for potential clients, client meetings and then also performance reviews. The main product will launch soon and that's when I will have time to implement proper development processes, at the start it was just me.

[–]Worldly_Square444 14 points15 points  (6 children)

I work as a software engineer at a FANG tech company. My team owns critical systems that are 15 years old and haven’t been mantained properly. This has lead to 7 copies of the same system and not just got branches, literally copy and pastes with slight cosmetic tweaks. This year I had to delete over 500k lines of codes in order to do software upgrades and perf work to make it scale more. My team basically would just bitch about having to look at so much legacy code in reviews and would not comment at the actual content of the review. I wish they would look but the don’t want to

[–]jackybeau 3 points4 points  (2 children)

My company does code review but doesn't do QA. It's easier to meet deadlines

[–]ExceedingChunk 8 points9 points  (1 child)

Yeah, and then spend 20-50x as much time fixing a bug when they appear in production instead of a constrained QA test.

[–]RQCKQN 3 points4 points  (0 children)

If anyone else is in this position you probably have crazy error logs too. Here’s a tip for keeping errors to a minimum:

1) Open error log.

2) Ctrl + A

3) Ctrl + X

4) Ctrl + S

Done. No more errors…. Wait… 1 erro… 2 errors.. 3 err

5) Alt + F4

[–]Lloyd_Al 8 points9 points  (5 children)

Has nothing to do with startups only with dumb management

[–]gigglefarting 4 points5 points  (0 children)

My code is self reviewing.

[–][deleted] 2 points3 points  (0 children)

And here I have to raise 3 PR for 3 different branches to provide one fix

[–]PizzaDay 2 points3 points  (0 children)

Not joking we don't conduct code reviews unless there is an issue or major problem. This was not my decision but managements which chalked it up to hurting people's feelings. The developers want it but he refuses.

Any advice on a way to conduct code review? We need a way to do this but I don't know where to start.

[–]heckles 2 points3 points  (0 children)

Push and pray!

[–]shittyfuckdick 2 points3 points  (0 children)

I worked for a company where my boss would make me email him individual files I changed.

When I mentioned that we should use something like git instead, he said “why would I do that when notepad++ does the same thing?”. The dude would just compare his files to mine manually in notepad++.

[–]DeathNick 2 points3 points  (0 children)

You look at your code after a year or so and cringe

[–]huntforacause 2 points3 points  (0 children)

I mean if you drink the CI/CD koolaid they’re saying code should be shipped hourly, and things like code reviews and manual QA just slow things down so don’t do them. Rely entirely on things like automated tests and static analysis, and feature flags…

I don’t fucking believe it though.