10-13-2021, 07:08 PM | #1 | ||
Go Reds
Join Date: May 2001
Location: Bloodbuzz Ohio
|
PING: Programmers
The pandemic did one good thing for me - I quit bartending after about 10 years of doing so, and decided to get back into school. I would say the process leading up to re-enrolling has been a slow burn, but the pandemic expedited things.
I decided to hop into a community college program focused on software development. This is my first semester actually taking classes geared towards this field, and I'm crushing 3 of the 4 classes. The class I'm struggling with the most is the most important one. It is Intro to C++. I'm getting the basics and while it's still not second hand nature for me, I know that I can eventually hang in this field. However, I am struggling. This class is completely online, so I have no interaction with an instructor - I mean, they are there, but not responsive, or very late to respond - I mostly watch assigned YouTube videos and then do my own external googling to solve problems. So each week we have a new assignment, and each week I find myself going backwards, copying and pasting basic code to get a start and then cycling through past tutorials to build out whatever it is I'm supposed to do. It feels very fraudulent (and also, not very efficient), I don't feel like it's sticking. I guess my question is if anyone has tips on how to better go about learning this crash course.. i.e, any websites I should be directed to, etc. Last edited by korme : 10-13-2021 at 07:10 PM. |
||
10-13-2021, 07:16 PM | #2 |
Grizzled Veteran
Join Date: Nov 2013
|
__________________
"I am God's prophet, and I need an attorney" |
10-13-2021, 07:23 PM | #3 |
Head Coach
Join Date: Dec 2002
Location: Maryland
|
Bah, half my programming is cutting and pasting stuff from other sources. IMO the biggest thing is having a plan for what you want to do, then finding the functions, libraries, or similar programs that you need to get there. Figure out the logic first, then worry about the syntax. Especially if you have to deal with a number of different languages.
(Then again, I'm probably a bit of a programming fraud too. )
__________________
null |
10-13-2021, 07:42 PM | #4 | |
Go Reds
Join Date: May 2001
Location: Bloodbuzz Ohio
|
Quote:
I mean, that is nice to hear. My brother's neighbor kind of told me the same thing. I'm just worried about getting *too* reliant on the web and not actually picking up on this stuff, or the bigger picture. Maybe I just need to get a better focus. |
|
10-13-2021, 07:43 PM | #5 |
Go Reds
Join Date: May 2001
Location: Bloodbuzz Ohio
|
So maybe I shouldn't be freaking out after only playing with this stuff for 7 weeks?
|
10-13-2021, 09:17 PM | #6 |
Head Coach
Join Date: Dec 2002
Location: Maryland
|
Yeah, probably too early to freak out. Really the important things IMO are understanding control structures, how variables work, how function calls work, scoping, objects, libraries. I guess for C++ (which I have not used in oh, 20 years) there's the whole compiling aspect. I more deal with scripting languages so that's not a worry. But I'd say nail down the theory behind how things are supposed to work and worry less about syntax. (I mean, syntax is important for actually getting something compiled, but you're going to be dealing with different syntaxes across different languages but the building blocks will stay the same for the most part).
__________________
null |
10-13-2021, 09:36 PM | #7 |
Solecismic Software
Join Date: Oct 2000
Location: Canton, OH
|
I've been doing this (mostly in C++) for about 30 years now. New development often means searching online and looking through differing opinions and code segments. I am terrible at remembering syntax. If Visual Studio didn't have auto-complete and variable hints for functions, I'd spend half my time reading manuals.
Sometimes the language changes, like the vector stuff, because no one likes rigorous garbage collection and the ability to control array sizes dynamically opens up new avenues. But get the concepts down and you'll have the ability to evaluate the quality of what you find in searches. I think a solid grounding in C++ gives you the ability to handle many of the modern scripting-type languages that seem to drive a lot of things these days. Many people are also using Go Language, which is essentially a large subset of C++ on the fly with less overhead and some nice shortcuts. I've started using it instead of perl for quick data-only analysis. Don't be afraid to ask questions. There are a lot of programmers out there who think it's great fun to say, "only a moron would ask that, you should do this instead." And then they mention a function that barely tangentially relates to what you're trying to do. It's unfortunate there are a lot of those people out there, so you learn not to take it personally. The best skill you can have with this is the ability to keep trying things out, not to be afraid to spend a couple of hours going down some road that might not lead anywhere. It happens all the time - even decades after getting to a decent level of proficiency. I know what you mean about feeling fraudulent. There's no guarantee in programming that you will learn the concepts that will allow you to evaluate your own code. That just takes time. Like writing, only practice, in the end, will get you to the next level. If you have that curiosity, stick with it. Nothing's better, even decades later, than seeing a complex algorithm come to life properly. |
10-13-2021, 09:42 PM | #8 |
Head Coach
Join Date: Oct 2002
Location: Colorado Springs
|
I would also reccommend, if you really want to get into coding. And if you have the extra time. Come up with an idea for a side project you WANT to do, doesn't even have to be huge, and do it. Doesn't have to be anything you show anyone, just something cool you'd like to do.
Btw Jim, I didn't realize you were at least partially a Perl guy. So few of us left. |
10-13-2021, 09:51 PM | #9 | |
Solecismic Software
Join Date: Oct 2000
Location: Canton, OH
|
Quote:
My first job after graduation was working in AIX on a RISC/6000, developing transaction programs. I don't even remember the names of half of the languages I've used along the way. There was once a full FOF game engine running on perl/cgi. You could chose a team and call the plays. Couldn't for the life of me figure out what to do with it. Neither could my producer at EA, so I never did anything with it. |
|
10-14-2021, 07:49 AM | #10 |
assmaster
Join Date: Feb 2001
Location: Bloomington, IN
|
To follow up on the copy/paste stuff -- most of my professional career has been leaning heavily on sites like Stack Overflow for examples of how to do things/solve problems I couldn't figure out on my own.
Watching how other people attack a problem similar to the one I'm facing usually results in a lightbulb moment where I finally understand the underlying logical "how". But if all else fails, I'll just copy/paste and document the link I stole the solution from. :P (You're a leg up on me, though. I got into programming 20 years ago without any formal training. There were things I knew how to do, but didn't understand that they were standard programming problems until my son was a computer science major in college.) |
10-14-2021, 08:26 AM | #11 |
College Prospect
Join Date: Nov 2006
Location: High and outside
|
I'm just a hack programmer and I agree with what everyone else says about "copy with pride" but -- and it's been 30 years since I've been in school -- can you do that in an education setting? I know the schoolmarm won't be standing beside your desk as you code but how much are you allowed to "research" while you're taking your final?
|
10-14-2021, 08:53 AM | #12 |
High School Varsity
Join Date: Jun 2002
Location: Boston, Ma
|
I second everything Jim said.
Like every software developer out there, I copy/paste all the time. My only caution would be if you don't understand the code you are copying. If it's syntax, I wouldn't give it another thought. Even in a language I use every day and have for years, I don't get the syntax right without intellisense. And things change quickly in software development. Even if you get the syntax of one language nailed, you will soon need to learn another. As long as you understand the underlying concepts of software development, that will carry over from language to language. When I was learning (30 years ago) we didn't have Stack Overflow and open source code. If I was going to copy something it was gonna be from a physical book and it wouldn't be exactly what you were looking to do. So you had to take the concept and make it work for you. |
10-14-2021, 12:16 PM | #13 |
Grey Dog Software
Join Date: Nov 2000
Location: Phoenix, AZ by way of Belleville, IL
|
Good discussion. When I was learning (and still do this), I focused on completing this process:
1. high level design for the program - something like: a. Read in data from table into a first name and last name data structure. b. sort the data structure alphabetically. c. Output name combinations into a text file. 2. Non-syntax based code that meets each guideline: a/b. set recordsetFName = ODBC call to table FName, order by FName.Name asc set recordsetLName = ODBC call to table LName, order by LName.Name asc c. open output file "Names.TXT" For each recordsetFName entry, loop through recordset LNAME Store each combination in output file close output file 3. Now code based on item 2 If you have to look up item 2 to get the proper syntax, no biggie. Atleast you have done the design and algorithm layout on your own. That is the key to coding. As you get better, you will know more syntax offhand. Last edited by Arles : 10-14-2021 at 12:30 PM. |
10-14-2021, 12:31 PM | #14 |
Hall Of Famer
Join Date: Jun 2006
Location: Chicago, IL
|
Everyone here is giving great advice. My one add-on is to stick to it. It's one of those things that will just start clicking at some point.
Also, I still spend a lot of time looking up dumb shit on StackExchange. One of my favorite tweets.
|
10-14-2021, 03:06 PM | #15 |
General Manager
Join Date: Oct 2000
Location: The Satellite of Love
|
Not much to add. Like everyone else, I still google things for the 100th time, copy and paste old code from previous projects, lean heavily on my IDE to do half of the work for me.
Like Castlerock said, when you're done the googling and the copying, if you understand what your code is doing, you're good. There's also a lot of programming communities online. Subreddits, Discord servers, etc. If you're frustrated at the lack of response from the teachers, you could try the /r/cpp_questions subreddit (never used it so can't vouch for it). I haven't used C++ since the early/mid 2000s (and I hope I never have to again) so I don't know any specific Discord servers for C++ noobies but I'm sure they exist. |
10-16-2021, 10:31 AM | #16 |
Go Reds
Join Date: May 2001
Location: Bloodbuzz Ohio
|
Thanks, guys. A ton of encouraging stuff here. I'll deep dive into all of these links and appreciate the tips. It's just a bit overwhelming, but then again, I'm learning something almost completely from scratch, so I suppose it shouldn't be a walk in the park.
|
10-16-2021, 11:39 AM | #17 |
Grizzled Veteran
Join Date: Nov 2013
|
I'm sure all the programmers on this board will laugh at/be outraged by this story
Confused governor says looking at webpage's HTML is criminal hacking
__________________
"I am God's prophet, and I need an attorney" |
10-16-2021, 12:51 PM | #18 |
Head Coach
Join Date: Dec 2002
Location: Maryland
|
Aghast, yes.
__________________
null |
10-17-2021, 09:52 PM | #19 |
Go Reds
Join Date: May 2001
Location: Bloodbuzz Ohio
|
Just finished my midterm project - remember this is an intro class, so it's very basic so far. Anyways, I built a program that basically has you enter a qbs game stats and it spits out the QB rating. This was 105 lines of code, it took me over four hours and it takes about 10 seconds for the user to complete the program. Lol. Coding. How exciting!
|
10-18-2021, 09:34 AM | #20 |
assmaster
Join Date: Feb 2001
Location: Bloomington, IN
|
The first iteration always takes the longest.
Now, if there was an equivalent RB rating, you could throw up a program that calculates that in like 15 minutes (change the formula, change the input field names, add any new fields, etc)...but you've got the methodology down for solving this type of problem. Now you tuck that code into your personal library and just recycle it any time you encounter a similar problem. |
10-18-2021, 03:19 PM | #21 | |
General Manager
Join Date: Oct 2000
Location: The Satellite of Love
|
Quote:
It took me an embarrassingly long time to learn this lesson. I wasted so much time hunting down code in old projects instead of being proactive and creating a personal library of reusable code. |
|
10-18-2021, 08:40 PM | #22 |
assmaster
Join Date: Feb 2001
Location: Bloomington, IN
|
I think that's probably true for all of us. It took me an embarrassingly long time to realize that as a web developer, 90% of what I do is just a variation on a theme.
I've always assumed that somewhere out there are "real programmers" who solve brand new and interesting problems on a daily basis...but I'm not smart enough to be one of them. I know my lane and I stay in it. :P (The other side of that coin is that once you're a web developer, you have to avoid the temptation to interpret every problem as one that can be solved by creating a form/sanitizing the input/doing database transactions. When your primary tool is a hammer, every problem can look an awful lot like a nail.) |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
|
|