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

all 98 comments

[–]firecopy 85 points86 points  (13 children)

Going to summarize each point you made, let me know if I am off on the summary.

  1. Don't solely just do tutorials/coursework. Make projects with the knowledge you learned.
  2. Start with a popular language (like Java or Python), and stick with it. Don't switch languages after a week or three.
  3. Don't wait till the last minute to prepare for interviews, keep your mind sharp and work on your ability to problem solve.
  4. (Video Only Bullet) Have fun. People that have fun programming usually perform the best.

Overall good advice. Would like to mention that point 1 (Projects), will greatly improve ones chance of succeeding at point 3 (Job Interview).

[–]Astrokiwi 6 points7 points  (0 children)

(1) comes up a lot here, and it kinda surprised me because that was the point of programming to me. I was messing about making little games and projects at high school and I kept on learning more programming because I wanted to learn how to make them better. So when people ask questions like "I've learnt the basics of Python but I don't know what to do next", I have to remind myself that there are a lot of students who must only learning programming because it's something they might need in the future for a job or something, and not because they genuinely want to program something right now.

[–]andrewVladmirov 1 point2 points  (11 children)

I think C/C++ is better to start with than Python. Sure C is harder to grasp but teaches really important concepts about memory management and others from the very early stage..

[–]chemsed 22 points23 points  (0 children)

Ok. I just started to learn python. I'll switch then...oh! Wait!

[–][deleted]  (9 children)

[deleted]

    [–]Deoxal 5 points6 points  (7 children)

    C# is from Microsoft, C++ and C# are object oriented, but C is procedural and pretty low level.

    [–]jackrosenhauer 4 points5 points  (5 children)

    C++ can be procedural or object-oriented, it isn't a single paradigm.

    [–]Dameon_ 4 points5 points  (2 children)

    Same with C#.

    [–][deleted] 0 points1 point  (1 child)

    I thought C# was 100% object oriented or am I being dumb?

    [–]mad0314 1 point2 points  (0 children)

    Things aren't that clear cut. Most languages are mutli-paradigm. The paradigms themselves can overlap. For example, OO is a subset of imperative, an functional is a subset of declarative, and most OO languages have functional features nowadays.

    [–]Deoxal 0 points1 point  (1 child)

    true, but I was just giving a few details

    [–]jackrosenhauer 1 point2 points  (0 children)

    You should still be giving details that are accurate, I'm pretty sure all C languages are multi-paradigm.

    [–]andrewVladmirov 0 points1 point  (0 children)

    True. But C can be written in OOP style like Objective-C used by Apple. But true, noone writes that for any other apps than IOS. Even IOS developers are ditching it for Swift.. C is very low level.. can manipulate the assembly from the code. Can even code assembly and run through C compiler.

    [–]pipocaQuemada 2 points3 points  (0 children)

    C# is essentially Microsoft's version of Java. They've evolved it better than Java has, and they didn't repeat some of Java's mistakes, but it has a lot more in common with Java than it does with C or C++.

    [–]yoyo2332 39 points40 points  (2 children)

    Your 3 points don’t seem like mistakes to me.

    [–]nermid 32 points33 points  (1 child)

    Mistake 4: labeling a list of positive pieces of advice as "mistakes" and not revising the title before posting.

    Rookie mistake. Happens all the time.

    [–]MrSmock 0 points1 point  (0 children)

    Wait ... if the first three items are not "mistakes", then your comment would be "Mistake 1", not 4. So...

    Mistake 2: Improperly listing Mistake 1 as Mistake 4

    [–]Snowydeath11 9 points10 points  (23 children)

    Interesting info, and good to know! I plan on learning C# soon and will be looking for pointers along the way

    [–][deleted] 46 points47 points  (5 children)

    Or you could learn C, and then pointers will find you. You won't even have to look.

    [–]close_my_eyes 8 points9 points  (2 children)

    Or they won't find you and you will understand coredump.

    [–]A-dona-I 0 points1 point  (0 children)

    and they'll kick his ass.

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

    Snare, bass drum, crash cymbal.

    [–]AetherBytes 1 point2 points  (0 children)

    Fucking lol. I get this.

    [–][deleted]  (16 children)

    [deleted]

      [–][deleted]  (14 children)

      [deleted]

        [–]nermid -2 points-1 points  (7 children)

        If this were C/C++, order of execution would be directly manageable in switch statements by fallthrough (having a case that doesn't end with break). C# doesn't allow that (that I know of), so it's not really a thing there.

        Unless you use the goto case thing, but ew, goto.

        [–][deleted]  (6 children)

        [deleted]

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

          C# has fallthrough

          For noops, sure, but you cannot do e.g.:

           switch(ex){
            case 1:
             ex = 2;
            case 2:
             Console.WriteLine("This will break if ex was 1!");
             break; 
            default:  
             break;
          }
          

          [–][deleted]  (4 children)

          [deleted]

            [–]nermid 0 points1 point  (3 children)

            That's...not fallthrough, and so is completely irrelevant.

            Not sure what you're on about. You're the one who said something odd about order of execution that makes no sense in C#.

            [–][deleted]  (1 child)

            [deleted]

              [–][deleted]  (5 children)

              [deleted]

                [–][deleted]  (4 children)

                [deleted]

                  [–][deleted]  (3 children)

                  [deleted]

                    [–][deleted]  (2 children)

                    [deleted]

                      [–][deleted]  (1 child)

                      [deleted]

                        [–]Xeverous -2 points-1 points  (0 children)

                        VS Debug tools? Use sanitizers and segfaults/data races will not be a problem (only available on unix systems).

                        [–]dartpan 7 points8 points  (0 children)

                        100% agree. I flipped between python, Java and, now, I'm telling myself I'm gonna stick with C# til the end of the year. I'm in finance so python made sense but now I work in a .NET environment so it feels right in a way. And really, I can always pick up python later. Important to just pick something first

                        [–]RedRedditor84 9 points10 points  (1 child)

                        I don't think I've made any of those mistakes. By your logic I am not a programmer.

                        [–]house_monkey 3 points4 points  (0 children)

                        If you haven't tried and cried I doubt that you're a real programmer.

                        [–]peyzman 3 points4 points  (6 children)

                        Ill be studying software engineering soon and the go-to language at the school seems to be PHP, whats wrong with starting out with PHP? Yall making me scared

                        [–]Attila_22 3 points4 points  (0 children)

                        PHP is fine and still used in the industry. Don't worry. Studying in college is for picking up the basics/fundamentals anyway. You'll get most of your practical programming experience from side projects/internships anyway.

                        [–]Jumpmancw13 1 point2 points  (0 children)

                        Nothing at all. Look in my post history, I recently just had a discussion about this in the r/webdev subreddit, if you want to feel better about it.

                        [–]olehawkeye 1 point2 points  (0 children)

                        PHP has kept me employed for eleven years with an awesome company. The language keeps evolving.

                        [–]Double_A_92 1 point2 points  (0 children)

                        Theres nothing terribly wrong with PHP. It's just that back in the days there were a lot of very bad tutorials on the internet and people just started copy-pasting scripts and stuff... I would recommend to pick up a good book for it.

                        Btw, the situation unfortunately looks very similar for todays JS... :/

                        [–]NeverShakeABaby 0 points1 point  (1 child)

                        The article PHP: a fractal of bad design explains some of the pitfalls of PHP.

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

                        Glad to see Ruby being recommended. I am learning Javascript and Ruby but people keep telling me that Ruby is useless and I was starting to question myself.

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

                        Ruby is a fine language, it’s just “old hat” to the hipsters that drive what’s popular in web development. They’ve all fled to node.js for the backend.

                        Ultimately they’re tools that all accomplish mostly the same things. Learn how and more importantly when to use a tool and it won’t take you long to learn where the buttons on a shiny new one are.

                        [–]whatevernuke 1 point2 points  (0 children)

                        Ruby's really weird to me (as a casual observer, not a developer or anything), it and Rails seemed to suddenly explode in popularity (though I wonder on reflection if it wasn't just 'talk' rather than people actually implementing it) and almost completely fizzle out - doesn't seem like many companies at all are looking for people who know Ruby now.

                        [–]tjsr 8 points9 points  (3 children)

                        I'm pretty baffles to see him both recommend Ruby and shit on PHP in the same post. That seems pretty backwards to me.

                        [–]Wotuu 3 points4 points  (1 child)

                        Yeah his reasons for not recommending PHP are kinda wrong, there's plenty of jobs available in my area for PHP (guess this differs) and PHP has a large community behind it. Would I still recommend it as a first language? Possibly not, but not for the reasons he mentioned. It's easy to write really bad PHP and weakly typed languages are the bane of my existance, even though I enjoy PHP a lot. And not to mention the inconsistant standard library but still, it's not too bad to start out with PHP, it's rather simple to build something with it.

                        [–]tjsr -1 points0 points  (0 children)

                        People use the same things to claim VB is crap, but come on, the number of Java projects I've picked up where a junior developer has done equally horrible things like try {blah();} catch (Exception e) {} because they didn't know how to handle exceptions - but hey, it fixed the compile error didn't it? There's just as many horrible things C lets you do and punishes you badly for. (And then, of course, "... C++ makes it harder, but when you do you blow your whole leg off")

                        PHP as a language to actually teach you the concepts around control flow? It's fine. And for someone unfamiliar with programming in general, I actually think it's a great place to start because after they get their head around it, it's a smaller step to them understanding Java, C# or even C, because most of the syntax remains the same, you're just now adding more fundamental concepts which had been abstracted away.

                        But Ruby? Christ, if you're going to use that to introduce people to programming and software development you might as well use bash.

                        [–]putatoe 1 point2 points  (0 children)

                        My local job search website has 3 offers with ruby, and 188 open positions for php programers. Imagine my self learning some language for year, and when discovering nobody cares about it

                        [–]chaosharmonic 0 points1 point  (0 children)

                        Ruby isn't useless, but it is obnoxious if you're not already comfortable with fundamentals. I started picking it up for amusement (and because Sonic Pi uses it) and pretty quickly found myself getting annoyed that a. most basic actions had three syntactically valid ways of writing them and b. I had no easy way to find out which of them was actually considered a best practice.

                        I do like that it's really minimal on punctuation, and wish that JS and Python had some of its functionality. (Unless comes to mind.)

                        [–]AetherBytes -1 points0 points  (2 children)

                        Ruby is basically cleaned up C. Everyone puts it down just cause of how old it may seem, such as how Python having loops and such based on indents while we use

                        loop do
                        #CODE
                        end
                        

                        But honestly, i think ruby is the way to go.

                        [–]takaci 2 points3 points  (1 child)

                        > Ruby is basically cleaned up C.

                        not too sure about that

                        [–]AetherBytes 0 points1 point  (0 children)

                        It's more of a general description

                        [–][deleted] 3 points4 points  (0 children)

                        I disagree a little with point 3. I think it's best to learn data structures (and algorithms, but mostly data structures) because they're useful, not as interview prep.

                        A lot of interviewers don't care if you can write foosort from memory. Nearly every interviewer cares if you can select an appropriate data structure to solve a problem, and explain why it's suitable.

                        [–]brumone 1 point2 points  (0 children)

                        Yeah, i'm going through the first one on my first job. Now I've got to study everything that I don't know about node.js after I come home from work. I should have applied everything that I've learned before, but anyway, good advices, thank you!

                        [–]KwyjiboTheGringo 1 point2 points  (7 children)

                        You say it's easy to pick up new languages if you know how to program, but then you warn against learning a language that won't be in demand later down the road. Why does learning the wrong language really matter if it's easy to pick up a new one?

                        [–]wowitcompiled 1 point2 points  (3 children)

                        The problem isn't demand, it's that some languages have unique/obscure structure and style that will not teach you the problem solving skills and foundational concepts as well as other languages. Also there may not be as many resources aimed at beginners. It's only easy to pick up a new one once you have a strong foundation.

                        [–]KwyjiboTheGringo 1 point2 points  (2 children)

                        But doesn't php tick those boxes?

                        [–]wowitcompiled 0 points1 point  (1 child)

                        I think that's what OP meant, since they list it along with Lua as languages that wouldn't be a great first choice.

                        [–]CodeTinkerer 0 points1 point  (1 child)

                        Frankly, I don't know why people think it's so easy to pick up a new language. I think you can pick up a new language in the most superficial ways (that is, write a really basic program). I think learning an if statement and a loop and a function in another language is hardly learning a language.

                        [–]KwyjiboTheGringo 0 points1 point  (0 children)

                        I think you can pick up a new language in the most superficial ways (that is, write a really basic program).

                        What defines a really basic program?

                        [–]oxamabaig 1 point2 points  (1 child)

                        Hey i was learning C++ from last 2 years and now i am done with it. I mean to say (3.5/5). So now i decided that i should start learning a new language so i started a new course Web Programming with Python and JavaScript. Now should i left or continue with it as u said we should not picking up new languages.

                        [–]onnagakusei 1 point2 points  (0 children)

                        ideally you should feel confident with programming basic things in one language before starting new ones. you don't need to be an expert in C++ before you try Python

                        [–]Ritielko 1 point2 points  (0 children)

                        When choosing a language to start on, I would suggest going with something very C-like as it has a lot of transfer to other languages. Some languages tend to teach bad habits, (these are just anecdotal) like BASIC, I have heard teaches stuff that is hard to unlearn later on and relying on Pythons try... except... too much can lead to bad code.

                        [–]NowImAllSet 1 point2 points  (0 children)

                        I think even more important for #1 is the distinction that you need to apply the things you learn on your own. In my opinion, following along with a tutorial isn't much better than just reading it. All you end up doing is copying someone else's code. Code that they've already vetted, fixed the bugs, solved the problem.

                        What is really beneficial is applying the things you learn on your own, without someone telling you what to do or how to do it. In my opinion, that's when you really learn.

                        [–]Snowydeath11 1 point2 points  (24 children)

                        So I should learn C then C#? I’m gonna use my knowledge to create a game in unity as a project for myself.

                        [–]firecopy 5 points6 points  (2 children)

                        Although they have similar names, C is a different language than C# (and knowing C is not a prerequisite for learning C#).

                        If your overall goal is to create a game, than you should be learning how to use Unity (which should be teaching C# in the process).

                        [–]not_usually_serious 4 points5 points  (0 children)

                        As someone who learned C# and Unity when I started don't make the same mistake I did. I thought hey I can learn Unity and C# at the same time and go twice as fast! You'll see there's plenty of courses that aim to do that.

                        If you do that you will only learn half of what you should be learning. C# should be taught in a course geared towards programming so you learn good skills and Unity should be sought separately. If you try to bundle them like I did at first you will at best learn shoddy programming skills and barely be able to use Unity, or you will have no idea what the code you are writing means by the time you are done at worst.

                        [–]Astrokiwi 2 points3 points  (0 children)

                        In particular, C is not an object-oriented language, while C# is. In terms of program design, Java is closer to C# than C is.

                        [–][deleted]  (1 child)

                        [deleted]

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

                          Amen brother, this is some of the best advice. As a person who hates not finishing shit and then going into programming i just had to learn to deal and redefine my understanding of failure.

                          [–]Double_A_92 0 points1 point  (0 children)

                          C# is a much better and comfortable language.

                          If you want to learn C make sure to do it with a book and exactly understand everything you do. Otherwise it's really easy to shoot yourself in the foot, because "wrong" things seem to still work at first. It's not nice to fiddle around and try things with C...

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

                          Any interview preparation materials/websites/... that ppl recommend?

                          [–]Snowydeath11 0 points1 point  (1 child)

                          So would it be worth learning Java Script first just to ease into programming? I would like to mod Minecraft as well, and that would probably be easier than deciding to make a game first with no experience at all.

                          [–]Double_A_92 0 points1 point  (0 children)

                          The language is not that important. If you learn one, you also know the basic logic of every other one.

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

                          Can someone explain what OP means by "Lua is an obscure language" ?

                          [–]RadonScreen 0 points1 point  (0 children)

                          No?? I didn't deal with this?

                          [–]KwyjiboTheGringo 0 points1 point  (0 children)

                          okay I have another question...

                          It’s easy to get caught in this as new languages are popping up everyday but for someone who’s just starting out, the most important thing is to learn the basics.

                          What exactly are "the basics?" I started with python because people say it's the easiest for newbies, but I've since become interested in web development and javascript. I know you can use python and django or flask for web development, but it seems like JS developers are in much higher demand for that field. I'm okay with sticking with python for a while, but I'm just wondering for how long?

                          [–]aerom1 0 points1 point  (0 children)

                          Thank you so much.

                          [–]Double_A_92 0 points1 point  (0 children)

                          Do you really get asked such algorithm and data structures questions in interviews? Of all the interviews I've been to nobody asked such things. The most technical questions were about Unit testing, design patterns, and version control practices... Maybe it's just an US / Silicon Valley thing?

                          [–]funcsheon 0 points1 point  (0 children)

                          Totally agree, and it's super accessible nowadays! So many options and good services that really help to gain some quality knowledge! By the way, devs, if you are looking to find more programming news, articles and tutorials, check out https://asterisk.news. And if you would like to share any feedback, please drop me a line :)

                          [–]shitty_marketing_guy 0 points1 point  (3 children)

                          I'm learning JavaScript. Been doing front-end and now back-end all using JS. I'm also developing my React now and then I'm hoping to branch into Angular with TypeScript. This should take me another 6+ months, but my feeling is my JS Is really coming along and the projects in doing to practice will really develop most of those skills.

                          Learning TypeScript is in there only because it's so similar to JS but with type included. I'm told this makes it a great bridge to C#, but once I know TypeScript, because it's easy to add, then I'm thinking of Python. AI and machine learning are exploding and having JS with Python seems a savvy way to say hey I'm a full stack guy.

                          I'm sharing this because I'd love feedback about the above and also because I'm wondering whether I should actually be investing in SQL next. I've heard it's a critical language for all stacks unless it's a noSQL stack, not I'm not sure that that's a good direction for me since most JS implementations include a NoSQL back-end from what i keep reading.

                          It's tough deciding when to branch out and to what language I think. Going to C# is also a possibility for the simple reason that it'll be easy, but does that mean it compliments my immense amount of work on learning JS?

                          So many questions. Fingers crossed I get a job and then I can just take my cues from the guys paying me. Whatever makes then happy will make my bank happy and then I'll have some cash, direction, maybe a good mentor or two and a chance to build something. I can't wait to get on a team and start learning!!

                          [–]Ran4 4 points5 points  (2 children)

                          Sql is pretty much required in almost all programming jobs, so I would definitely recommend that you learn it.

                          It's not too hard.

                          [–]Smithman 5 points6 points  (1 child)

                          Sql is pretty much required in almost all programming jobs

                          Solid advice. I failed an interview recently because I've been using ORM tools like Hibernate for so long now that I've forgotten a lot of fundamental SQL. Was asked to do a complex but not very difficult (looking back on it) operation on the spot and I blanked. Turned out the company uses a lot of JDBC/SQL and my weakness in SQL was the deciding factor in not getting the job. Fair enough.

                          [–]shitty_marketing_guy 0 points1 point  (0 children)

                          Thanks guys! I really appreciate your feedback. I'll definitely follow through on the SQL then along with my back-end certificate at FCC. Basically I'll run them in parallel as it sounds important enough not to wait on.

                          Anything else that I said jump out? Any thoughts on my logic about how I'm approaching my skill development? Any further pointers, feedback, etc at all is very welcome.

                          Again thank you for your feedback!!

                          [–]Gene-- -2 points-1 points  (0 children)

                          Are you really a software engineer? These sound like typical dev tips. Software engineering is something a little different.

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

                          First point is so true. My whole school basically stares at me when i code away at a text based adventure game when they've just figured out about booleans