Help I live in a country where senior devs create CSV columns and don't use the keywords "extends" nor "implements



  • The real questions :

    1. What is a senior dev(+10y) supposed to know?
    2. What is a dev with (+/-) 5y experience expected to know?
    3. And an entry level programmer?

    Having lived here(South Korea) my whole life and worked with the senior devs this country offers, I no longer have any idea if I know above average, average or below average by American/West European standards. (Let's not fight over whether one should use American standards or Korean standards or whatever standards)

    The senior devs I've met, don't use "extends" or "implements" in a Java web project. They use Spring and iBatis. Funny you can use Spring but not the implements keyword. This means there is no interface defined at all!

    I worked with two companies so far and some other freelancers, all the devs were way more seniors than I.
    None of them could avoid creating CSV columns in the database. I asked them why, the answer came as, "This is easier".related DBA.Stackoverflow question that I wrote

    Oh Also, no transaction management, which means in a series of inserts and updates there will be some records updated but not all of them. But the business logic, so to speak is clear that these operations are not meant to be split.

    One company I worked, used a messaging app, pretty much like old MSM messanger, to share the code that each developer modified. Yes, there was not even an SVN server. I installed the easiest I could find(Visual SVN) taught the others how to use it. I didn't/ still don't know all the operations but my gut yelled that exchanging source code files over MSM was VERY WRONG

    The company I"m working at right now has +100 employees has about 11 mil USD annual sales.
    The problems are the same. I'm still working with columns with comma-separated values, no inheritance, no interface, and no foreign keys sometimes.



  • Your gut instincts are right. Most likely, those senior devs don't have X years of experience, they have 1 year of experience X times...



  • Usually, a dev of 3yrs and 10+yrs of experience are expected to know similar depth of things. The only difference of expectation is based on the role of his job.

    That said, I think most of the problem you've outlined (Except proper use of interface which is depending on whether the candidate is responsible to foundation building work. If not responsible for it the other developers should follow what is the current code style rule to avoid greater confusion) should be understood by someone with less than 2 years of experience.

    And btw most of the programming jobs I seen have mixed level of :wtf: , it's just you have bad luck to land on a job with more :wtf: than average that I've seen.

    Feel free to look for other place to work in your free time. What you sense you no longer suit in a place, it's time to move on.



  • @cheong said:

    should be understood by someone with less than 2 years of experience.

    By "understand" do you mean should know how to properly use? Normalisation and basic OOP?



  • @LB_ said:

    hose senior devs don't have X years of experience, they have 1 year of experience X times

    +1000 THIS!!



  • I don't think your experience is far out of line with the US.

    Take The Joel Test:

    Do you use source control?
    Can you make a build in one step?
    Do you make daily builds?
    Do you have a bug database?
    Do you fix bugs before writing new code?
    Do you have an up-to-date schedule?
    Do you have a spec?
    Do programmers have quiet working conditions?
    Do you use the best tools money can buy?
    Do you have testers?
    Do new candidates write code during their interview?
    Do you do hallway usability testing?

    Most companies in the US get maybe 4-6 of those. My company, which I love and think is amazingly competent, gets 8. And the test doesn't even include things like, "do your developers know how to normalize data?"

    You can debate some of the rules (giving web developers the best internet connections money can buy is a big factor in why websites are so bloated, for example-- or that the big insurance company I contracted for technically hit like 9 of those but never produced any useful software for reasons the rules doesn't cover), but it's a good general guideline.



  • Normalisation and basic OOP should be learnt before they graduates (assuming that they're from CS or related discipline), so yes, I mean "know how to properly use".



  • Thanks. Your comment gives me some idea of what you can expect from an entry level, Jr, or a Sr.
    I thought I was crazy(well not really crazy but I was frustrated) to think these senior devs were incompetent so I took to philosophy and have been reading books like The Consolations of Philosophy by Alain de Botton, and specifically "Consolation for Frustration with Seneca"



  • Yeah I thought I was crazy so I have been reading books like The Consolations of Philosophy by Alain de Botton, specifically the Consolation for Frustration with Seneca helped me a lot not to get too frustrated about the apparent anti-pattern everyday.


  • Fake News

    @LB_ said:

    those senior devs don't have X years of experience, they have 1 year of experience X times

    Worse than that, it's like the movie Groundhog Day, except that Bill Murray never breaks out of the loop.



  • Your case is not unique to your country. It is prevalent all around the world.



  • Would you care to share your experience a little?



  • Well, in my case, I am considered "junior" if counting the years working and yet, I had to implement source control solutions, set up automated build systems, development guidelines and teach the "seniors" how to goddamn use source control. Before I entered my ex-company, they were just passing around source code using zip files with version numbers in the file names. Don't even try to ask how merge is being done.

    Oh and I had to help design the goddamn system architecture and rewrite most of the code base on my own because, every single "senior" "engineer" was just hacking their way through the code base without consideration.



  • I had to introduce a VCS too. Out of curiosity, what country might that be? I mean where you had to do those things. If you don't feel like answering this question, feel free to refuse.



  • A particular south east asian country that like to boast that it has the best IT industry in the region which I usually cringe every single time the mainstream media mentions it.
    Thankfully, I am out of the region because most software companies I worked for in that country, the good engineers are not appreciated for being critical, but the white elephants are always praised for being "productive"



  • Thanks.



  • If you want an example of what a real senior programmer looks like, read some of https://database-programmer.blogspot.com/. This guy knows his job well.

    @Ascendant said:

    I worked with two companies so far and some other freelancers, all the devs were way more seniors than I.None of them could avoid creating CSV columns in the database. I asked them why, the answer came as, "This is easier".related DBA.Stackoverflow question that I wrote

    I did work with an atrocity like that. The thing was, these DSV (delimiter-separated values) were everywhere: in the database columns (because the developers had no freaking clue about normalization), the parsing was all over in application code (because the developers had no freaking clue about how to use a database), passed to the most arcane JavaScript code I've ever seen. It wasn't like they were trolling, or made it deliberately arcane; it, by all means, looked like they genuinely meant it and believed it was a good thing to do (because they knew no better).

    To top it all, delimiters used in the different parts of code were all different. And despite they used the Text::CSV_XS module that can parse it lightning-fast and the code to invoke it didn't look like invoking Satan, they only used it for bona fide CSV files uploaded by the user, not generated by the system.

    Also, the product was Perl+MySQL, but the programmers were blakeyrat types that failed to acknowledge Windows is not the most suitable platform to run these, and had multiple kludges all over the code that made it sort of runnable on Windows, and which had to be removed so the product was usable on the actual deployment platform we've used.

    Maybe they have over two decades experience and call themselves senior, but I'd rather call them senile.

    Oh, and by the way: this monstrous atrocity was developed in the United States, presumably in Florida. The names were implying white folks (guys and one gal who got promoted away AFAIR), so there you have it.



  • @WPT said:

    A particular south east asian country that like to boast that it has the best IT industry in the region which I usually cringe every single time the mainstream media mentions it.

    I was actually thinking of moving to that country for work. Did not know it sucked.Can you elaborate more ?

    I do hope we're talking about the same country.



  • @wft said:

    I did work with an atrocity like that. The thing was, these DSV (delimiter-separated values) were everywhere: in the database columns (because the developers had no freaking clue about normalization), the parsing was all over in application code (because the developers had no freaking clue about how to use a database), passed to the most arcane JavaScript code I've ever seen. It wasn't like they were trolling, or made it deliberately arcane; it, by all means, looked like they genuinely meant it and believed it was a good thing to do (because they knew no better).

    If your RDBMS does not support something like pivot join or cross apply, I'll say it's understandable for some cases.
    If it does have those support, that simply a case of DBA not doing his job, or in the case where DBA does not exist, lazy programmers not learning new and better way to do their job.



  • Maybe I've been lucky enough, but I have worked with very competent people over the years, maybe because around here those who can't, can make a living (at least with the construction boom ongoing) on other less mental fields like construction or waiting tables. In general people around here are pretty competent and if I can accuse some of the projects I've worked on are of over-engineering with damn too many abstractions. But this is something you can expect of any complex JEE/.Net enterprise project.

    Education/training might be also a big problem, since (correct me if I'm wrong) most of the stuff related to software engineering comes from the west in English and by the time it reaches SK and is translated we've already moved to a new JavaScript framework 👯

    It might also had to do with the Asian mindset as @NeighborhoodButcher has explained before (he might want to have a word on this) were everything done there is better (just because) and those fancy western ideas are a barrier for productivity.

    Now, if I was doing an interview for a senior position at my workplace, I would focus exactly on what you feel is missing: abstractions, architecture, performance, maintainability and vocation. What @LB_ said is mostly true but one thing experience should give you is the ability to spot problems, to know how to define an "architecture" so other developers can work with, which is maintainable and is easy to understand. And most important of all, any good developer with lots of experience has to have the ability to say the magic word: NO! For example:

    👺 No, you won't use Dart for this new project.
    👹 No, we won't a hybrid app for a mobile video app.
    👽 No, we will not stop doing code reviews because you think they're stupid.

    Another problem you might find with "seniors" is that they've been working those 10 years at the same place, with the same people, with the same problems, with the same technologies, with the same everything:

    👴 guys! I've found this cool thing called jQuery!!!

    If you're new on a place like this, it's obvious your :wtf:  to go to the roof.



  • @cheong said:

    If your RDBMS does not support something like pivot join or cross apply, I'll say it's understandable for some cases.

    The exact use case (one of them, at least) was a burndown chart as used in construction. You have items on your estimate, and you know the timeframes, so those are projected onto time intervals and a monetary value is produced (you cannot add tonnes of cement to number of pillars, but you can add dollars to dollars). If spending gets behind, you can see the "actual performance" curve get behind or shift if you have had a delay.

    I mean, this is not something you can code overnight, but it's far easier to do full relational, given that estimates and performances are all there; instead, it was all done in Perl, loops within loops, lots of shared global state. The months and years were encoded as integer according to some arcane patterns. You could not even compare "planned" vs "actual" using SQL, and the calendar handling wasn't even a reusable component, you had only this fucking bedsheet of a CGI script.



  • @Eldelshell said:

    Education/training might be also a big problem, since (correct me if I'm wrong) most of the stuff related to software engineering comes from the west in English and by the time it reaches SK and is translated we've already moved to a new JavaScript framework 👯

    Isn't Slovak in a bit of decline in Slovakia? Like, why bother translating to Slovak when Czechs already did the job and everyone understands Czech anyway?



  • I'm confused. Are you referreing SK as Slovakia? I think Eldelshel meand South Korea.



  • Well, it's basically the traditional "Chinese" mindset or "Indian" mindset (should stop generalizing Asian) that the managers have. And managers use buzzwords without knowing what they actually mean. A lot of issues are sugar-coated over to make the organization look good.
    Basically, no matter how shitty the product or the service is, it just need to look good and sell. Effort to make the service/product look good > Effort to actually make the service/product good.

    Most organizations in the country run on that mindset. So, there are times (most of the time) when development decisions without consulting any developers, resulting in ridiculous deadlines.

    Basically, software development is treated like a sweatshop, developers are treated like swappable code monkeys.



  • @Eldelshell said:

    Another problem you might find with "seniors" is that they've been working those 10 years at the same place, with the same people, with the same problems, with the same technologies, with the same everything:

    The experience has at least two axes: the obvious time, and positive/negative.

    @Ascendant said:

    I'm confused. Are you referreing SK as Slovakia? I think Eldelshel meand South Korea.

    You're right and I'm wrong. I've seen SK and mentally substituted an ISO code for the country. I'm used to ISO damn too much when it comes to currencies and countries.



  • @cheong said:

    lazy programmers not learning new and better way to do their job.
    My opinion is that, you, as a programmer may not know how to optimise your query like a boss. However, normalisation is something too essencial such that you would not have graduated from your computer science department if you didn't know that.

    Maybe I'm too harsh to impose such high standard?



  • I totally agree with you. And further more, this boils down to corruption. Simply these companies are lying. Lying that they are deceiving the clients who cannot verify the soundness of the architecture.



  • @Eldelshell said:

    since (correct me if I'm wrong) most of the stuff related to software engineering comes from the west in English and by the time it reaches SK and is translated we've already moved to a new JavaScript framework 👯

    Language barrier would be a handy and merciful excuse for these senior developers.



  • Just working 2 years in that environment, I gave up trying to make a change in the mindset of the management, and start to implement proper solutions without their approval, resulting in getting into arguments with the management. Usually, that would result me in getting fired based on their mentality but they could not find a replacement for me, as I was involved (data architecture and design) in every single development project that the company was working on. It was a rather negative environment.
    Luckily, 4 months ago, I was offered a position elsewhere in another company in another country, when I dropped the bomb on management. 😄



  • @wft said:

    Also, the product was Perl+MySQL, but the programmers were blakeyrat types that failed to acknowledge Windows is not the most suitable platform to run these,

    What does that little swipe mean?

    There's nothing wrong with Windows that prevents Perl or MySQL to run well. If they don't, it's the fault of the developers of Perl and MySQL. (And I know MySQL runs fine in Windows, in any case.)



  • So does Perl, for that matter. It's just overflow from the 'these things were designed for *nix and work better there' for some definition of better.


Log in to reply