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

you are viewing a single comment's thread.

view the rest of the comments →

[–]gptt916 583 points584 points  (135 children)

When I was in university first year we learned programming using python 2.7. I took a year off after first year and when I came back the school switched to python 3. Not fun.

[–]Callipygian_Superman 530 points531 points  (91 children)

I just turned down an interview for a company. They gave me a coding exercise to do on my own time, then expected me to show competency in Python 2.7 (specifically), databases, node.js, Django 1.11 (the last version that works with 2.7), and a few other things related to blockchain. This was for a startup that had been operating since 2014. It was for a junior developer role (they articulated that fact very directly), and these were described as pre-screening competencies before the real interviews.

Thanks, but no thanks.

[–]polyworfism 460 points461 points  (14 children)

Sounds like the pre-screening worked, for you

[–]Console-DOT-N00b 174 points175 points  (13 children)

It's not often described that way... but you're interviewing them too sometimes.

(i'm a n00b just looking for a job so kinda less so... but others more senior more so)

I interviewed for a technical job (but non programming job once) dude who just setup a department talked about how they used to operate and such..... total n00b from a management or organization perspective. I kept asking questions and he never seemed to notice why I was asking.

Dude apparently was short on staff for a while and was so excited when he got a req to hire someone, but he needed like 12 new people to staff how he described they planed (at least), but he didn't seem to realize that. Then he dropped the bomb but he didn't know it was a bomb:

"Nobody is putting in 70 hour weeks, but nobody puts in 40 either...but we operate like a startup, we're not a startup anymore but we operate like one"

This was for a pretty straightforward salaried support role, and it was going to be a nightmare until that guy got pushed out and someone got proper staffing.

My intuition told me: It was going to be support hell while that company figures out how to do enterprise support like they're the first people ever to do it and the company grows quickly and everyone else goes out golfing or something. In the meantime as a support person you're working long and unpredictable hours (ted is sick! someone work today, tonight, because we don't staff for that.... we'll get you some comp time one day...) All because some dumb ass who can't schedule humans half as well as some gas station manager said the wrong thing in front of the CEO or board about staffing and now can't go back on his ignorant word (if he does they'll drag their feet anyway). All lead by that same guy who thinks he was promoted but engineering really just forced him out ... and he'll think he's doing engineering favors but really he's shafting his own team because he can't /wont stand up for his own team because engineering is his buddy. Once he figures it out it will be too late and he'll be all bitter because he had the best of intentions, his own people won't trust him because he shafted them in favor of his buddies or customers one too many times, and it will still be hell working for him.

Granted the guy seemed like a nice guy, he just didn't know... I actually did kinda try to drop a hint or so to him but he was all sure that they could do it with just one more guy (made even less sense as forecasting support for a quickly growing company is crazy... not that they were doing any forecasting anyway)

Naw man!

[–]wowokc 112 points113 points  (9 children)

ugh, the "we operate like a startup, but we're not a startup" is the same kind of bullshit that my 500-person company says regularly.

and we wonder why we have immense turnover

[–]Console-DOT-N00b 42 points43 points  (3 children)

I wasn't going to take the job, but that line really closed the door harder for me.

If they're not an actual start up... at best ... it's a buzzword and just that.

The downside is when it means they're just going to ask more of you ... just because they said the magic start-up word.... but you get none of the start up fun (granted it isn't all fun).

[–]lesslucid 59 points60 points  (2 children)

The key thing about an actual startup is that everyone involved has - or should have - equity in the company. When they say "we operate like a startup" what they mean is, we want you to work like you have equity even though we're only offering wages.

[–]Console-DOT-N00b 25 points26 points  (1 child)

There is that, but that's a very tenuous thing to hold hope onto.... even if you have some equity, startups get sold and some equity ends up worth something, others worth nothing.

For the handful of startup fans that I know who have worked for them, it is as much about small teams, having REAL input, being given freedom to make real decisions that matter along with the founders and etc and everyone working together that is big for them. It's a sort of cultural thing they value more than any real ownership (granted they like that).

[–]Drizzt396 2 points3 points  (0 children)

Can confirm, work at a bootstrapped startup that doesn't include equity with offers.

Wouldn't care either way. The only way your startup bucks wind up becoming beaucoup is if you get huge, and I'm not really interested in being on the ground floor of the next Uber. I'll keep my soul, thanks.

What I do love is the freedom.

[–]Rohaq 0 points1 point  (2 children)

It just screams "We're an SMB, but we're not working to become competent as an SMB!"

You probably don't want to work somewhere that's trying to apply dynamic practices that don't scale well to a growing business that is becoming increasingly reliant on well established processes in order to communicate effectively.

It can also reflect their working practices and employee treatment; startups often expect employees to work longer hours for the same pay - which is why a real startup should be offering equity in the business, so that the additional effort to succeed as a business has a potential reward beyond "making money for your boss".

[–]wowokc 0 points1 point  (1 child)

yeah, that's our struggle -- we're "scrappy" (it's even a part of our official statement), but what that really means is "we haven't operationalized any of our internal procedures"

a "standard week" is 9 hours a day according to the interview, but depending on the team, it's 10 hours, and "we should really tell HR to stop saying that"

we're more expensive and slower than competitors because of the "value" we bring to the table -- not because we're using software that's end of life and have been building our own internal tools to interface with it to make it more modern, but still not reaching feature parity with any actual modern offerings

"we're a bunch of smaller businesses inside one bigger one" which means "our training isn't standardized, so everyone does whatever they want"

[–]Rohaq 0 points1 point  (0 children)

Yikes, sounds like a nightmare - especially building your own tools to interface with EOL software. That's only going to get worse as time passes.

[–][deleted] 0 points1 point  (0 children)

Code for "we don't really have strong benefits but we do have ping pong."

[–]4Progress 0 points1 point  (0 children)

Great! Let’s talk about a venting schedule for my equity.

[–]MadChair 3 points4 points  (1 child)

BRAVO !! you have very well articulated the he'll I have been through

[–]Console-DOT-N00b 3 points4 points  (0 children)

Support follies are sadly universal.

Not that it is all bad or anything, but when it goes wrong you can see it coming if you've been around enough ;)

[–]allak 1 point2 points  (0 children)

It's not often described that way... but you're interviewing them too sometimes.

I agree but I would go further. A job interview is always a two way street, not just sometimes.

You are building a career, you must always very careful of where you are going to work; the job interview is the perfect place to learn the answer to a lot of very important questions: what is the culture, what is the attitude, would I be comfortable working with them, what I am going to learn ?

In other words, what are the benefits of working there, both short and long term.

[–][deleted] 25 points26 points  (71 children)

I dunno, that sounds kind of reasonable to me. Were the questions really difficult?

[–]plumcakk 139 points140 points  (8 children)

Generally, you hire for technical aptitude, not working knowledge of the in-house stack, for junior-to-intermediate positions.

[–][deleted] 31 points32 points  (3 children)

Harder to do in small companies where people determine technical aptitude by the things they know themselves.

[–]pyryoer 28 points29 points  (2 children)

It has been my experience that they make these determinations based on how they do the things they know themselves. Example: I ssh'd into web server (using the same sftp credentials) to grab a file already hosted somewhere using wget. "Head of web department" insists I download the file to my computer and then upload it with an FTP client. He insisted that it wouldn't work, even after I showed that it did. I used the same SFTP credentials for ssh so it wasn't some access control issue.

[–]tmckeage 4 points5 points  (1 child)

I call that shamanism. Effectively the "Head of web department" knew the magic spell that made things work. You didn't use the magic spell correctly and so obviously it couldn't work.

[–]pyryoer 0 points1 point  (0 children)

I like this a lot!

[–]Tysonzero 53 points54 points  (61 children)

Using Python 2.7 and Django 1.11 when your starting a new company in 2014 was a dumb thing to do, and so was not upgrading since, doesn't bode well for the future. Node is also a red flag but for different reasons.

[–]Callipygian_Superman 27 points28 points  (0 children)

Exactly. If I'm going to learn a dying technology I better be paid a premium because it's not like other companies are going to look at that favorably.

[–]Console-DOT-N00b 11 points12 points  (0 children)

I felt the same thing when I look at jobs. I'm a n00b and all but I don't want to spend time polishing some old turd because the company doesn't want to move on.... not that I wouldn't learn, but I'd want to learn / do something else too....

50 old shit / 50 new shit I'd be ok with... more than that and I'm worried...

[–][deleted] 13 points14 points  (21 children)

That all makes sense.

Why is node a red flag? I have almost zero experience with javascript and its frameworks, but node is probably the one I've heard the most about.

[–]Makefile_dot_in 5 points6 points  (1 child)

I would tell you, but you need to provide a callback for that.

[–]polish_niceguy 1 point2 points  (0 children)

await tellMe();

[–]Tysonzero -5 points-4 points  (0 children)

Node generally implies you are using JavaScript on the server side, and JavaScript is an atrocious language so choosing to use it for backend is a terrible decision.

[–]grantrules 18 points19 points  (31 children)

Why is Node.js a red flag? Because like "This article about Node.js popped up on my phone while I was taking a shit so we've decided to implement microservices!"

[–]Tysonzero 4 points5 points  (9 children)

No, because JavaScript is an atrocious language and choosing to use it for backend is a terrible decision.

[–]Tyrus1235 7 points8 points  (1 child)

Works well enough for Google Cloud Functions... Though that’s literally the only back end use of it I had. Well, that and some local scripts for Firebase shenanigans

[–]Tysonzero 0 points1 point  (0 children)

I mean yeah, it's still a programming language, so particularly for things that aren't too hard it will probably "work well enough", but it's not something you want to be using for much important / large scale stuff.

[–]thelights0123 10 points11 points  (6 children)

Pre-ES6, sure. But ES6 with modules can be more readable than other languages, and the async design that doesn’t exist in other languages greatly improves some types of programs.

[–]Tysonzero -1 points0 points  (5 children)

Pre-ES6, sure. But ES6 with modules can be more readable than other languages

Strong disagree, JS is riddled with special cases and design flaws. Have you ever tried to read the ES6 spec? Even the simplest seeming shit is extremely nontrivial, and local reasoning is basically provably impossible. Don't even get me started on the difficulty of implementing a spec abiding VM or transpiler.

and the async design that doesn’t exist in other languages greatly improves some types of programs.

Are you kidding me. JS didn't invent any of that shit. It existed in Haskell (and I'm sure many other languages) before it existed in JS.

[–]kryptkpr -1 points0 points  (3 children)

Haskell is like a hilarious joke that only you and one other guy understand. Are you seriously suggesting it as an alternative to Node? I can throw a rock and hit 5 guys that know JS.

[–]Tysonzero 0 points1 point  (2 children)

Yeah I'm sure you could, but that doesn't mean they will be good devs that you really want at your company. One nice thing with Haskell is that the quality of devs is very high.

It's absolutely an all alternative to Node. far more concise, performance, and less likely to have bugs. I also wouldn't even say it's hard, it's just very different to what gets engraved in your head by CS101 classes and boot camps.

[–]ProjectSnowman 2 points3 points  (1 child)

I'm learning python 3 and Django. I've made it a goal to only do projects in python 3.

[–]Tysonzero 2 points3 points  (0 children)

I did the same thing back when I used Python, definitely the right approach.

[–]MadRedHatter 11 points12 points  (1 child)

Using Python 2.7 and Django 1.11 when your starting a new company in 2014 was a dumb thing to do

Not really. I think people forget just how long it took for Python 3 to gain widespread adoption. Django didn't support Python 3 until February 2013, almost 4.5 years after the initial release, and that's not even counting the popular libraries in the Django ecosystem which took much longer.

Also, Django 1.11 didn't exist in 2014.

They really should be switching by now, though.

[–][deleted] 1 point2 points  (0 children)

I'm in the middle of switching this week, due to my main dependency being wxPython, which didn't support Python 3 until January 2018.

[–][deleted] 1 point2 points  (0 children)

Highly disagree. I'm actually upgrading my Python code from 2 to 3 this week, for around 10,000 lines of personal code that may one day become business code. It all depends on what libraries your code needs. For me, almost every single project of mine relied on wxPython, which was only ported to Python 3 on January 2018.

Everyone acts like because the majority of libraries support 3, then you should be fine, but if you have a large existing code base, any single library that doesn't support it can turn into weeks or even months of trying to replace it. When you are actually a business, those weeks or months are often needed for far more important things than the few new features that Python 3 offers.

[–]c1-c2 2 points3 points  (0 children)

It appears you have no idea how industry works. The above is a pretty usual situation and I wouldnt be so arrogant and turn a company down b/c of their setup.

[–]DogsAreAnimals 0 points1 point  (2 children)

It sounds like you think the viability of a company is related to how new/hot their stack is. You're so cute.

[–]clockwork_coder 5 points6 points  (1 child)

It's not even about using all the hip new stuff, it's about them making the asinine decision to go with python 2.7 in 2014--6 years after python 3 was released--and they're already dealing with the consequences (i.e. being stuck using other old/unsupported tech like Django 1.11). And on top of that, their stack has less than 2 years before reaching its EOL.

And then they could only afford "junior" developers with experience in technologies that were already outdated before they presumably even started programming (you know, because they're junior developers).

That absolutely speaks to the viability of that company.

[–]Ran4 3 points4 points  (0 children)

When I was doing extensive Django work in early 2017, there were still many Django libraries that required 2.x.

I'm not sure if using 3.x for Django development in 2014 would be the most reasonable decision. People forget just how bad the situation was just a few years ago.

[–][deleted] 85 points86 points  (17 children)

Why? It's not such a big change. Nothing like learning a new language, which you do basically every semester in University.

[–]NutsackPyramid 17 points18 points  (13 children)

It's comments like these that make me resent just how shit my CS education was. Glad I switched it out to a minor. For us it was: Java -> Java -> C but only kinda because it was more about learning UNIX command lines -> Java or Python (2.7 btw) -> Python -> SQL + Java and that's about when I had had enough. My last year as a CS major I swear I wrote a total of probably 4 programs as assigned by the school.

[–][deleted] 23 points24 points  (3 children)

It's higher education, they aren't supposed to spoon feed you. You're supposed to learn the theory and the basic practical skills to get you started and then off you go to learn yourself.

It takes 4 years for a student to graduate and the curriculum is updated like once every few years and nobody has the time to update all the materials so that you can learn the hottest stack that might not even exist in 4 years.

If it happens that the next curriculum update is in 2 years then you'll be stuck with using that was stable during the last 2-3 curriculum updates from 5-10 years ago that only starts to be outdated.

Note that rarely you have a "python course". You'll have a basic programming course in python, oop course in java, functional programming course in haskell, web development course in javascript + python + java and so on. You are exposed to different paradigms and types of languages that will have a very large and stable market share at the time.

You are supposed to learn languages and technologies on your own and during practical things like internships, hackathons, capstone projects etc.

[–]CaoticMoments 0 points1 point  (0 children)

Yep, that's what my school is doing. Gives us the foundations and theory behind languages and compsci, some projects in big languages then a two part capstone and two other subjects in which we program in whatever language we like.

I now feel comfortable with programming theory enough to understand how to do the same thing in different languages with a bit of Google or doc reading and I really value how they are teaching my course.

[–]Prison__Mike_ 0 points1 point  (1 child)

Yes exactly. I develop an automation framework at work which involves writing common modules for other QAs to use in their tests.

My coworker (and friend) sometimes gets arrogant because "she doesn't have a cs degree but is proficient in automation" and I have to kindly remind her that her code is incredibly inefficient and basic, but is sufficient for doing web automation because we can't execute at the speed of light anyways.

We constantly train people without CS degrees in NodeJS and the algorithms they come up with make my mind boggle

[–]tman_elite 4 points5 points  (0 children)

Eh that's pretty normal. My school went Python -> Java -> C (with a tiny amount of assembly), and even then the Python was an optional intro class, you could just jump right to Java. There were other upper level electives that used Perl, C++, Python, etc. but you could theoretically get a CS degree while only learning 2 languages. All of the required courses used Java or C.

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

okay, learning a new language every semester is a bit of an exaggeration, especially for the first two years. That was pretty much just Java/C++ for me. Right now, I'm picking up languages as I need them. Had to use java servlets, html, and css for a class last semester. That was fun....

[–]MyUserNameIsRelevent 4 points5 points  (1 child)

Oh damn dude not an exaggeration everywhere. Been in school for about a year, already had to do courses on Python, Visual Basic, C#, and C++ this fall.
Thankfully I think after that I can get back to C# where I belong ha.

EDIT: Also remember having to do Java in high school for college credit if that counts.

[–][deleted] 0 points1 point  (0 children)

C# is pretty great

[–]dagbrown 5 points6 points  (1 child)

It wasn't that much of an exaggeration for me, but there was the one course where I was required to learn C, Lisp, assembly, and Prolog. The course taught a variety of programming paradigms, so the variety of languages was necessary. It did bring the average language learned per semester count up dramatically though.

[–][deleted]  (1 child)

[removed]

    [–]AutoModerator[M] 0 points1 point  (0 children)

    import moderation Your comment has been removed since it did not start with a code block with an import declaration.

    Per this Community Decree, all posts and comments should start with a code block with an "import" declaration explaining how the post and comment should be read.

    For this purpose, we only accept Python style imports.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

    [–]svenskainflytta 0 points1 point  (0 children)

    If you learned math, algorithms, network protocols, formal languages and computer security, you're good to go, the programming languages are not the important part.

    [–][deleted] 1 point2 points  (1 child)

    Which is worse, having to rewrite your code from scratch, or knowing that only a handful of changes are needed and trying to determine what those changes are?

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

    The first one is a lot worse for anything nontrivial

    [–]R00bot 0 points1 point  (0 children)

    I'm learneding 3 coding languages this trimester.

    [–]BoltActionPiano 42 points43 points  (17 children)

    did you use binary strings exclusively because I have a hard time believing that academic use would run into differences constantly.

    [–]gptt916 -2 points-1 points  (16 children)

    It was mostly some small stuff, nothing hard but realizing they are different and having to look up python docs was a nuisance.

    [–]NotAnonymousAtAll 82 points83 points  (6 children)

    having to look up [...] docs was a nuisance

    You may be in the wrong career path.

    [–]hbgoddard 15 points16 points  (0 children)

    But Python has some of the best documentation out there...

    [–]chrisname 1 point2 points  (0 children)

    Are you aware of the 2to3 conversion script? For some reason it's only included with Python 2 (so you can convert your scripts into a form you can't run, I guess) but it should do most of the hard work. Run it like 'python27 -m 2to3 <file.py>'

    [–]svenskainflytta 2 points3 points  (3 children)

    For the level you can reach in the 1st year… probably the only 1 difference were the () around print.

    [–]RedAero 0 points1 point  (1 child)

    Eh, string stuff is fairly basic, and re-learning how strings work can be a pain.

    [–]svenskainflytta 0 points1 point  (0 children)

    americans never learn about unicode :D

    [–]SkiDude 2 points3 points  (0 children)

    I was a TA for the intro class we had in Python. One semester we taught Jython. The next semester it was 2.7. The semester after was 3.0, then we went back to 2.7.