Hacker News new | ask | show | jobs
by bernardino 2908 days ago
I definitely agree. I took C first then Python. Where I took the courses, the C course was an intermediate programming course while the Python course was an introductory to programming course (I think this the case for many colleges, not entirely certain). Python, personally, seems like such a good introduction to programming language because the syntax seems so English-like. But otherwise, at my community college, after one takes the C course they usually go on to take a C++ course then a Data Structures course where the majority, if not all, the students use C++. All these courses being lower division.

I find it's a good skillset to have: Python for scripting, backend, and frontend with Django. C/C++ for other purposes I'm not entirely aware of, maybe if you like working with video games, browsers, operating systems, etc. Then a proficient understanding of HTML/CSS doesn't hurt, and anyways web development is pretty darn fun since designing and playing with things is cool. Those are my tools, or at least I like to think those are my tools: Python, C/C++, HTML/CSS.

Given what I mentioned above and the courses I have taken, I still don't feel like a programmer though. I mean you could give me a basic problem and I can probably write a simple, elegant solution in five hours or so but I'm going to have to look at the documentation or Google how to do some specific task. It might be that I've only taken lower division courses or only built stuff following tutorials online (Treehouse, etc), but I still don't feel competent and because of this, I've been thinking about finishing my degree in computer science but moving into product management as a professional job. I'm definitely going to try to program daily though.

1 comments

> [...] I still don't feel like a programmer though. I mean you could give me a basic problem and I can probably write a simple, elegant solution in five hours or so but I'm going to have to look at the documentation or Google how to do some specific task. It might be that I've only taken lower division courses or only built stuff following tutorials online (Treehouse, etc), but I still don't feel competent [...]

What's wrong with that? If you are able to develop working stuff by yourself, with help of documentation and WWW, it's perfectly alright - those are the tools you will usually have in the real world anyway. You can't keep all the details for various topics, or different library APIs in your head anyway.

You're right. It's just, from an outsider's perspective that has only worked blue-collared jobs (think meat clerk, greenskeeper), the technology industry's interview or working in technology as programmer seems a bit daunting, even especially as a minority. I'm still an undergraduate (spending a fourth year taking interesting lower division courses at my community college) but it might be a combination of imposter syndrome on my part and not feeling I know enough. I mean, again for instance, I can tell you off the top of my head how six sorting algorithms work and their respective o-notations. But if I had to write them? I would probably need the entire day and no one looking over my shoulder. I can write a fizz buzz program in ten minutes or so but I can't tell you off the top of my head how pointers work or how polymorphism works, I would have to look it up.

I just feel if I ever get a software engineering internship one of these summers, I will ask myself: what am I doing here? After all, I take a long time to write good piece of code. I'll think I'm holding my team back. If I'm building stuff on my own, in my own time, I'm fine and dandy. But otherwise, I'll be stressed and nervous.

Everyone starts somewhere. Take into account that you are just studying it from time to time. At work you will be actively doing things 5-8 hours a day, almost every day. Take your time, people generally expect even experienced programmers to take a month to catch up to speed on a new job. After month or two of such intensive training you will learn a lot too. Make sure that your learning is directed i.e. don't just solve problems, but figure out how and why they occurred etc. What approaches people took before you etc. In general, read a lot of relevant literature, especially articles and books. And after a year or two you will start hitting point of diminishing returns. There is really only so much that people need to know to do day to day work.

Then there is elusive experience, but that will come with time as you will observe first hand how silver bullets turn into legacy ;).