News for hackers. Stuff that matters.
Re:Teach Yourself Computer Science by karmicthreat on Sunday June 21, 2020 @11:31AM (#23592526)
One thing I'm always amazed by when casually talking to people about what I do is how they don't think they can do it. Many people think that software engineering and programming are some inscrutable thing. Sometimes I try to tell them that it is nothing special, it doesn't take a mega genius or math expert to do it. That the most important skill is just being able to solve real problems, soft skills and breaking problems into parts. As well as the ability to self learn and research. I get the idea that most people don't believe that though. Or they think its a humblebrag. Rant done, it's just frustrating that people limit themselves like that.
Re:Teach Yourself Computer Science by hnarn on Sunday June 21, 2020 @12:32PM (#23593031)
> the most important skill is just being able to solve real problems, soft skills and breaking problems into parts. As well as the ability to self learn and research.

Seeing a very non-technical friend of mine being completely immersed in games like "Factorio" and "Satisfactory" where the entire game is essentially just putting constantly more complex and valuable resources together in automated ways is fascinating to me. He will talk about efficiency ratios until someone stops him, and when he's not playing he's reading wiki articles to better understand the problems he's presented with. The sheer look of glee and pride when he gives a tour of all the automation around his base is infectious, and although he doesn't share my amazement at my conclusion, I can't help but think that he's already doing what most engineers I work with do every day, and he doesn't even realize it.

Sometimes I feel like there's so much untapped potential out there, people that would have loved to get their hands dirty with micro-controllers, soldering, programming and all the other stuff that could help them solve real world problems, but they were just never given the chance. They never had the mentorship or the right context to develop those skills. Instead, most programming is done under soul-crushing enterprise conditions, and a lot of teaching about programming is (understandably) only about whatever will benefit you in the workplace. When you're an adult, there's no time for play, so most programmers I know would rather do anything but write code and solve problems when they come home from work.

I'm not sure what my point is here, but it is interesting how people look at programming and software engineering as something so inconceivably complex. The way I see it, it's basically just digital plumbing and carpentry, as long as you know how to use the toolbox: and most people will never even try it.

Re:Teach Yourself Computer Science by YeGoblynQueenne on Sunday June 21, 2020 @02:43PM (#23594230)
>> The sheer look of glee and pride when he gives a tour of all the automation around his base is infectious, and although he doesn't share my amazement at my conclusion, I can't help but think that he's already doing what most engineers I work with do every day, and he doesn't even realize it.

One reason why I can't really get into Factorio. It's too much like work.

The funny thing is I do code at home, for fun, in my free time- or I used to when I had a clear line demarcating my "free time" from work time (I do AI research and I mostly work from home, so most of the time I'm working on something that I really have to work on). But Factorio is just ... too much like work.

... dah, I can't explain it :)

Re:Teach Yourself Computer Science by gridspy on Sunday June 21, 2020 @08:52PM (#23596555)
I understand what you mean. While I'm a Factorio fan I felt this way about the graphical-programming zachlike SpaceChem. Too much like work.

I approached Factorio like MineCraft but with the boring stuff automated.

To have fun in a game like Factorio, just mess around - you don't need to make a perfect factory, or compete with your friend.

Re:Teach Yourself Computer Science by laputan_machine on Monday June 22, 2020 @05:58AM (#23598662)
> ... people that would have loved to get their hands dirty with micro-controllers, soldering, programming and all the other stuff that could help them solve real world problems, but they were just never given the chance

Anecdotally, this was _almost_ me. I ended up going to university to study CS much later in my life than most people, and only because of a fortunate meeting with someone who was from that kind of background and 'guessed' I would be into it, and if I didn't, who knows what crappy dead-end job I would've ended up in.

How lucky I am to have 'made it' into a career I enjoy, and how many other people are out there who would love to have this opportunity, but instead are working in dull, menial jobs, just like I was before uni, is something I think about often.

I'm not sure how we get more people involved. There are 'STEM ambassador' (https://www.stem.org.uk/stem-ambassadors) roles in the UK. I'm not sure of their efficacy.

Re:Teach Yourself Computer Science by r3ll on Monday June 22, 2020 @08:01PM (#23608415)
There's a wonderful initiative in Suffolk, East of England, run by somebody I knew many years ago. Basically it's an educational club and community interest charity run/founded by a Matthew Applegate to teach kids and young people across Suffolk (I think there were also talks of expanding it to Norfolk.) all sorts of tech things like robotics, programming, game design electronics, and probably more now.

I don't know what it is about his style of teaching but he completely changed my view of IT and the IT industry. Before then, my main tech knowledge was from the at the time terrible exposure you got in rural schools back in the 2000s and taking electronics apart to try and see how they worked. I thought programming was way beyond me as I didn't do well at all in school and had major self esteem issues as a kid. Matt is one of the key reasons I gained a serious interest in technology and has helped probably thousands more like me. He showed me all it takes to learn anything is time, effort, and a healthy dose of curiousity.

Maybe other educators could reach out to him and ask how he does things differently? I'd love to see things like this crop up nationwide, I feel it'd seriously change the knowledge base of tech issues for future generations.

Relevant Links https://twitter.com/CCCSuffolk https://twitter.com/CCCCFSuffolk https://twitter.com/Pixelh8 (Matt's Twitter.) creativecomputingclub.com (Website appears down for maintenance time of writing.) https://www.linkedin.com/organization-guest/company/creative...

Re:Teach Yourself Computer Science by andrewflnr on Sunday June 21, 2020 @12:48PM (#23593171)
God, yes, all the wasted potential out there hurts my soul.
Re:Teach Yourself Computer Science by humaniania on Sunday June 21, 2020 @10:03PM (#23596842)
They're having fun and learning. I think it's OK.
Re:Teach Yourself Computer Science by andrewflnr on Sunday June 21, 2020 @10:13PM (#23596898)
In cases where the bulk of their time is wasted on a boring job when they could be learning and having fun all the time on something impactful, no that's not OK.
Re:Teach Yourself Computer Science by SZJX on Saturday June 27, 2020 @06:07AM (#23660768)
I think a major difference between most games and real problem solving at work is that the environment is massively simplified and a lot of wrinkles when dealing with the real world are ironed out. In most games you can just relax and not think too hard, I would say, and reap massive rewards, while in real life, rewards come in much more intangible forms after much harder struggling.

This could also explain why many would rather just play games than solve real-world problems when they come home from work. It requires a bit of discipline, desire and resolve I would say. But one should also realize that the rewards of actually going out to solve real-world problems and interact with real people are so much sweeter than the virtual rewards you earn in simplified and idealized games, in many aspects. I would also say that while many don't do it at home, there are still many people that do, and do an amazing job at it.

Re:Teach Yourself Computer Science by MarkSweep on Sunday June 21, 2020 @01:53PM (#23593767)
Maybe LabView would be a good way to get Factorio players into programming. The model is very similar: components laid out on a 2d grid, connected by pipes that transmit values.
Re:Teach Yourself Computer Science by gunibert on Sunday June 21, 2020 @05:43PM (#23595657)
I got into programming with LabView.
Re:Teach Yourself Computer Science by kharak on Sunday June 21, 2020 @07:24PM (#23596152)
I've played Factorio in the past and am playing Satisfactorio right now. I generally don't code at home or have any side projects.

Let's do some introspection as to why I prefer playing these games over coding at work:

1. Games are designed in a way, that speaks to intrinsic human values. For instance, in Factorio, the local Fauna wants to kill me. I have to build and design my base accordingly or will I'll perish. My work in contrast, is far removed from intrinsic human values.

2. Games are designed to be accessible, with every step yielding rewards right away.

2.1. Coding in an enterprise environment is full of complex task, which have to be broken down first.

2.2. Games such as Factorio increase complexity of task later on, but you always utilize mechanics you've already mastered.

2.3. Task in enterprise environments tend to always require learning new knowledge first (business domain, existing code base etc.) before being able to solve it.

2.4. Games allow me to start from scratch. Existing code bases, which I didn't build myself, require me to invest quit some time before I can even start achieving my task.

2.5. Often, these existing code bases require me to learn new frameworks. Games teach new skills/tools in seconds or minutes. Frameworks tend to require hours or days to digest.

3. Games provide visual feedback. My labor results in visible feedback inside the (virtual) world. Accomplishing a coding task tends to not result in any feedback (I do mostly backend). If there is feedback, it's normally in text form and of negative format (error logs).

4. In general, feedback in games is unambiguous, clearly tells you what is happening. No debugging. No frustration.

When I actually know everything that is required to solve a task and can concentrate on achieving the task in the best way, that's the moment I'm having fun. But normally, there is so much I don't know, tools I can use but have not mastered, that it feels like a mess. Even if you believe you have everything, reality tends throw some roadblocks along the way.

Now, why don't I code at home and do side projects?

That's in my first point. There is just nothing I could use coding for that solves problems I care about (intrinsic human goals). Even if I know how to write the next Facebook, I wouldn't do it because I really don't care. Well, there are some code solvable things I consider interesting, but they are out of scope in terms of my resources and abilities. Also, the way along would properly still suck for the most part, once it gets serious.

Right now, I'm learning some Math in my free time. Quit enjoyable, gives me new insights in how everything works. I tend not to have that feeling why learning new frameworks / programming languages. New insights are pleasurable to me, tech stuff just doesn't tell me anything interesting about the world.

Maybe some of you who don't feel the same can understand people like me a bit better (not saying that all non side project people have the same reasons).

Re:Teach Yourself Computer Science by jorblumesea on Sunday June 21, 2020 @01:16PM (#23593419)
Realistically, the amount of time it would take to teach yourself CS is immense. It doesn't take genius, but it's a ton of work. So when people think "they can't do it" they might be right from a life/work/time standpoint. I know many people that have tried to get into it and it's extremely daunting.

To learn anything, on your own, self directed, is hard for any subject. I think programmers and devs underestimate the amount of time they spend on "getting good". It doesn't feel hard when you got into it in high school, got a 4 year degree, then spent 10 years in the industry. But if you're 26, working in real estate and have a significant other, it's a huge ask.

Re:Teach Yourself Computer Science by Traubenfuchs on Monday June 22, 2020 @03:56AM (#23598119)
Frustrating? It's our greatest luck! If people would accept how easy programming is we wouldn't get paid that good for it on all levels.

Some jobs are protected by difficult, mandatory, exclusive education: Law, medicine, piloting. Software development is one of the least protected areas and we also face the threat of outsourcing. To most companies we are an unpleasant cost factor in need of optimization.

Unless you plan to become a manager or owner who profits from cheaper labor cost and more potential employees to chose from, do your part to keep people away from programming.

Re:Teach Yourself Computer Science by gonzo41 on Sunday June 21, 2020 @11:49AM (#23592659)
A lot of jobs are very linear, like taking a task though some steps and wrangling people to help along the way. I think programming in a professional context is a very unique job in how much fresh thinking is required most of the time. Even at low levels you really work in a very independent way and have to make serious choices. Having a ticket rock up for a JBoss 4 app written in Seam and Rich Faces becomes a challenge because yes I know the big topics like Java, App Servers etc but there's all this new old framework knowledge I have to reacquire to solve the issue. Most jobs are not like that.
Re:Teach Yourself Computer Science by bonoboTP on Sunday June 21, 2020 @12:09PM (#23592815)
There are two sides to this. On the one hand, yes, software needs fresh thinking because reuse is simpler than in other industries (not perfect, sure, maintainable/extensible/modifiable/modular code is really hard to write). In a lot of jobs people have to physically manufacture or process something and it requires effort for each new item. In software, if you write yourself a script that does the weekly maintenance on the server, then you won't have to type it every week. You still have to fix any new problems that inevitably pop up, but you don't have to do the exact same stuff over and over.

On the other hand, I think this attitude of programmers is too smug.

Many jobs that seem simple have to solve difficult problems and require engineer-like thinking. Sure some low-skill jobs, like cashier or mail delivery or truck driving don't require a lot of novel thinking on a daily basis. The bulk of the job is carrying out what you know.

But take for instance event organizers: no two events are the same. You need to negotiate the requirements from the client just like in software, you need to split up the work, plan it all out, execute together etc. Constraints often force you to be inventive.

Or how about lawyers? Even in mundane affairs, like divorce, no two cases are the same. There is probably more in common between one corporate mobile app or CRUD system and the other, than the circumstances of two divorce cases.

How about doctors? Sure some of it is routine, like much of a GP's work. But in complex surgeries they need to come up with a specific strategy and plan for the individual patient.

In fact, I think most jobs paid at the level of software engineers require a similar amount of novel thinking. The contrast is not software vs rest, but well-paid professional jobs vs low-paid, low-skill repetitive jobs (physical and mental as well, like office paper pushing).

Furthermore, many software jobs are really 9-5 "manufacturing". Not every dev is John Carmack. There's a huge demand on really simple business stuff and the very same functionality gets built over and over again by different companies for different business clients. These may be lower paid than the fun Google-level research-like creative software jobs, but they are out there. So top software jobs should be compared to the top of other professions, not just to any "white collar" job (because in the latter case you also have to include the "code monkeys" in the software jobs).

Re:Teach Yourself Computer Science by himinlomax on Monday June 22, 2020 @07:38AM (#23599123)
> Many people think that software engineering and programming are some inscrutable thing

It's not inscrutable, but it's not something everyone can do. And among those who can, not all of them necessarily enjoy it. It takes a high enough IQ (whatever reservations you might have about IQ tests, there's no doubt they match with programming ability) as well as an appropriate disposition.

I mean you wouldn't expect every single person to be able to play music or paint well enough to make a living out of it. I sure as hell wouldn't want to be a lawyer, I doubt I could even do the job at a mediocre level if my life depended on it. (Not that I dislike the field: I watch more law-related Youtube videos than I'd normally care to admit, which reinforces my belief that I'd suck at it.)

Re:Teach Yourself Computer Science by cutemonster on Tuesday June 23, 2020 @06:38AM (#23612136)
> whatever reservations you might have about IQ tests, there's no doubt they match with programming ability

If you happen to have some article or research in mind it'd be interesting to read

(Or maybe you read sth long ago and didn't save any links / references)

Re:Teach Yourself Computer Science by himinlomax on Tuesday June 23, 2020 @07:22AM (#23612472)
Have you taken or even just looked at an IQ test? The kind of things they make you do just look like the type of tasks a programmer has to handle day in and out.
Re:Teach Yourself Computer Science by cutemonster on Tuesday June 23, 2020 @11:04AM (#23614815)
Raven's Progressive Matrices.

I would expect good results to be strongly correlated with an ability to learn and be good at software -- and therefore I was curious about if you had read something related to that.

> just look like the type of tasks a programmer...

Hmm, I think RPM looks very different from writing code. Maybe you had other tests in mind? (Then I'm curious about which?)

Re:Teach Yourself Computer Science by dennisgorelik on Sunday June 21, 2020 @10:50PM (#23597027)
> being able to solve real problems, soft skills and breaking problems into parts. As well as the ability to self learn and research

You are implying, that most people can do that. I think only about 15% of adults can do what you listed.

Re:Teach Yourself Computer Science by peteretep on Sunday June 21, 2020 @11:45PM (#23597200)
And only about 50% of people employed as programmers.
Re:Teach Yourself Computer Science by cutemonster on Tuesday June 23, 2020 @06:40AM (#23612145)
And of them only 10-20% do it okay well (I think)
Re:Teach Yourself Computer Science by jlj on Sunday June 21, 2020 @12:38PM (#23593094)
There is a steep learning curve to go from scripting out some solutions, to understanding good design patterns for production quality code, and to run and deploy an application. I have a non-technical BA degree and it has taken me years to feel competent at building software, and every day I have to push myself to learn new things. And the learning is often "two steps forward, one step backwards." It's not for everyone.

> Rant done, it's just frustrating that people limit themselves like that.

"If I can do it, so can you" isn't a fair judgement. Everyone is different, and CS/programming has many complexities that not everyone is interested in putting in the time commitment to learn it.

For me, with time and experience it has become easier to put a solution together, but it still not easy work and many times I am mentally exhausted by the end of the day.

Re:Teach Yourself Computer Science by abiogenesis on Monday June 22, 2020 @02:24AM (#23597738)
It's usually the other way around for me. People I talk to generally think that they can be software developers without much effort.

I even met one guy who said that he wrote some HTML back in the day and it was easy, so he was thinking of making a career in software development as it wouldn't take him more than a few weeks to pick it up.

Re:Teach Yourself Computer Science by josefrichter on Sunday June 21, 2020 @12:35PM (#23593063)
Disagree. You need very good, structured, abstract thinking. Most people don't have that. Even many developers don't have that or aren't very good at it.
Re:Teach Yourself Computer Science by astura on Monday June 22, 2020 @02:23PM (#23603752)
And even among the people who have it many can't stand stuff like programming - you have to have a particular type of mindset/disposition to be successful.
Re:Teach Yourself Computer Science by globular-toast on Sunday June 21, 2020 @06:00PM (#23595751)
> That the most important skill is just being able to solve real problems, soft skills and breaking problems into parts.

Do you really believe this? I'd be interested to know what you do for a living.

Programming requires the ability to grasp abstract concepts which most people simply do not possess. Talent is a thing. I'm terrible at composing music even though I enjoy playing it. I have no talent. Most people are terrible at programming.

I have to conclude that anyone who thinks this is very young and/or has never actually tried to teach someone how to program.

Re:Teach Yourself Computer Science by p4l4g4 on Sunday June 21, 2020 @11:58AM (#23592743)
I completely agree!

In my experience, this is often due to a lack of interest. Most people (including myself) often just want a product to work. When something fails to work correctly or you want extra features, you bring it to a shop to get it fixed. When you're not too interested in the process of fixing it, the process behind it can feel like magic.

I feel this way with most products I own or buy. For instance, for me, getting my car fixed can feel like this at times.

Getting deeper and deeper in computer science learned me that I could potentially learn allot, as long as I'm interested enough! Debugging a car couldn't be much worse than debugging a computer system, can it? You probably shouldn't start with some high end car, but an older example should be doable, right? This attitude got me through most of my college years. Sometimes you have to adjust the bar a little (or a lot) , but in the end, you probably can pull it off.

Re:Teach Yourself Computer Science by nnoitra on Monday June 22, 2020 @01:42AM (#23597560)
I beg to disagree becoming a solid software engineer requires a lot of intelligence and persistence as well as a certain mindset.

Sitting down and staring at a problem for 10 hours with very little progress can be extremely demotivating for some.

To just get a job in software, the skills that are needed aren't really high though.

Re:Teach Yourself Computer Science by boycaught on Sunday June 21, 2020 @12:11PM (#23592842)
Agree. This is a skill that can be acquired. No great computers scientists or programmers are born, they are made. Unfortunately, a vibrant interest and curiosity in core skills of mathematics, logic, and even writing (communications) is pounded out of lot of people early in life, and it makes computing seem inscrutable, unattainable and probably even boring.
Re:Teach Yourself Computer Science by rozularen on Sunday June 21, 2020 @11:43AM (#23592607)
For me it's exactly the same. Usually I try to explain them saying something along those lines but halfway through and I already find them distracted or confused