top | item 14442235

(no title)

Guyag | 8 years ago

I think GP hits the nail on the head there with the homework analogy, and you with yours. Just talking to my friends in other careers about the work that I do makes me check time and time again just how many assumptions of knowledge I make when talking about anything vaguely technical (which is possibly a criticism of how I explain things, but also/even if so says lots about this issue).

What surprises me is the lack of consolidated resources addressing these basic pain points. I don't think it would be hard to come up with a list of examples just by looking at a normal work day and taking a step back; really evaluating where you're relying on basic knowledge to do even the most mundane of tasks. Once you've been doing this for a few years those tasks are just that - mundane - but for beginners it's having difficulty with those basic parts that is a real turn off. "How will I ever be any good at this if I can't even download code off this thing called Github". If someone could point me towards some kind of existing resource covering a bunch of different areas in this way I'd be really interested in having a read.

On a related note, I'm reminded of one of Dan Luu's related essays on debugging [1], which I recommend reading if you haven't already.

[1] https://danluu.com/teach-debugging/

discuss

order

PretzelFisch|8 years ago

My Cousin smart kid had to come over at midnight because he had his first java assignment outside the ide. Couldn't compile because class path was not defined right on windows. Things like that scare people or pop their confidence.

erikbye|8 years ago

That just sounds like the professor didn't teach them about Java classpath before telling them to use a CLI; or this kid didn't read the course materials.

usmeteora|8 years ago

to be fair, I've been coding for 8 years and have never coded in a Windows operating system outside of an IDE, and in general I don't use either, and have not since Computer Science 1.

For a job, I had to get python working on Windows, and it took me a few days to get it in stalled correctly on Windows. Even after years of coding experience.

The issue with Windows is it is designed to explicitly hide the backend functionality, and modular accessing and modifying of it to the front end user, so when you do need to do something of the sort, it's more difficult than linux, and even after using linux operating systems, macbooks I find difficult to work with because comustomizable things are hidden to the average mac user.

That being said, a linux operating system is probably daunting for a first timer.

HOW I LEARNED COMPUTER SCIENCE

I only minored in Computer Science, and like others, did not even know what it was until I went to a tech college for Electrical Engineering. I grew up in the deep south low on the socioeconomic scale, noone in my family even went to college ever so I just had had no exposure to computers or even the idea of computer science before.

It seemed cool but daunting.

1. I got a part time job in tech support to help myself get acquainted with the parts of computers and technology that you need to learn so that when you do Computer Science you can focus on Computer Science.

That side job was 15hours a week over two years and it helped me learn alot about troubleshooting, viruses, computers, I reimaged hundreds of computers and learned how to make my own isos, take apart and put together computers.

It made my computer science courses in relation seem ideal and the technical bottlenecks of working in different environments whether operating systems, relatively trivial but yeh, I had to double up on my time commitments and turn my college job into tech work to catch up.

2. once I learned what a linux operating system was, I started using only minimal versions of linux, so I would be forced to learn more about how computers work to do everyday needed tasks, along with all over layered projects and school work on it. This helps ALOT.

You want to print something, you need to install or update the drivers, you want a functionality that you didn't know could never not exist on a computer, now you learn how to figure out what to download, what rpms are learn alot about options you have from opensource packages many people have made.

Now you are aware of hundreds of gaps/needs in functionality that have not been written so you could try something and have a realistic project to work on.

You have access to other peoples code...etc...

All of this from googling about printing drivers and why you have access denied....

the learning curve is steep but its hard to learn about this world any other way.

WHY I DID NOT MAJOR IN COMPUTER SCIENCE

In regards to Computer Science, there were a few reasons I did not end up majoring in it despite really liking it, and now taking coursera courses from Stanford and Princeton to supplement my desire 5 years post graduating to go back and learn more and shift to full time software development.

As a disclaimer, these are all really a result of my mental approach/reaction to a growing desire to learn more Computer Science.

1. I really didn't have the self esteem that I could do it in four years.

I knew I could excel at Electrical Engineering, but Computer Science seemed like a whole new world I could not learn in four years.

2. I went to a pretty good engineering school, and the kids in Computer Science had basically been coding since they were 8, so for me I felt like the competition was high and I could not stand a chance.

3. In retrospect that was not the case, and in fact the people I did know in Computer Science were very welcoming and encouraging to me coming into it, but I really didn't believe I could do it.

I regret that approach now, and I could blame it on all things academia in Computer Science, but it was really my reaction to the sentiment echoed here already that it takes years to really feel comfortable with Computers, programming and all of it in context so you aren't constantly wondering what youre not understanding or spending hours trying to set up varied work environments because you've never used a terminal before.

It is a continual effort and Computer Science, more than any other major or practice, is a new lifestyle and way of thinking, and a lifelong commitment to learning.

For me, I have continued on this path and continued to code for years after college and work on independent and group projects, and taken on coding work in my jobs in relation to electrical engineering. Just now at 26, being first exposed to Computer Science at 18, do I feel confident about my ability to learn and do well as a software engineer that is not a code monkey, working on computationally challenging problems where scaling, algorithms and data structures are a core part of design and implementation to make something successful.

You just have to keep trying, and in general, in regards to computer science or elsewhere, this weeds out alot of people.

SOME INTERESTING THINGS

As a final note, I would say the most daunting part of Computer Science in college was the perception I had about the experience and practice of Computer Science majors versus mine. I felt really ignorant in comparison and had no realistic way to convince myself I could compete and do well amongst kids with 10+ years experience.

Perhaps the value of this post is to say. I overcame alot of obstacles socioeconomic and otherwise to get into college in the first place.

I made a 4.0 in a private high end highschool and had and have a good work ethic and intelligence.

I even went to an engineering school and majored in Engineering.

Despite all of these layers of statistical thinning, I still didn't feel I could cut it as a CompSci.

If it is challenging for someone who is otherwise very smart, exceeding well by all academic metrics, has a good work ethic and is already in a school offering a good Computer Science program, wants to learn Computer Science, takes entry level Computer Science courses and makes As in them, and still doesnt feel confident about Computer Science, then there is definitely something about Computer Science, that sets the barrier high for learning.

It's definitely a DIFFERENT way of thinking, and I think the barrier to that new way of thinking is not a barrier for learning in most other places perhaps maybe save linguistics, which is also extremely difficult to become proficient in if you did not grow up in a multilinguistic environment or are not constantly saturated in living in a multilinguistic community.

You need to saturate yourself in a new way of thinking, and for me it is incredibly rewarding and translates into every other part of my life and allows me to think more objectively and logicially, creatively and efficiently than I have knew I could, but I think it is the way of thinking that is the learning barrier, along with the multilayered skills needed to navigate complex computing environments, that keeps people from Computer Science.

alasdair_|8 years ago

I still remember a lab where one of my friends was up all night trying to find an error in his Java (1.0) code that ultimately came down to having a single character lowercase instead of uppercase.