HN user

smckk

78 karma
Posts2
Comments31
View on HN

The main reason for this is because self-taught programmers FOCUS ON ONE LANGUAGE. I realized that I went through all the courses I needed to learn from university in different programming languages for some strange reason, and that just left me all over the place as a developer.

It is an easy fix, teach only one language for the 6 core areas of programming, namely:

1) Intro to programming (variables, loops, conditions etc. up to functions) 2) Complexity management, usually OOP 3) Building a GUI (it is not trivial and needs to be a course on its own) 4) Connecting to a database (also not trivial) 5) Data Structures and Algorithms 6) Compilers and programming languages (basically popping the hood of programming)

In school, after learning OOP in Java we switched to web dev and learned javascript and php. We completely abandoned learning GUI and DB for java.

Algorithms was taught by a visiting lecturer in C++ and after mid-sem we switched to Data Structures in java??

The universities are doing a fine job, but please just stick to one programming language for these core areas and everything will be great.

I came to this conclusion before AI took over. It will be interesting to see how AI changes the Computer Science curriculum in the years to come.

Social media is lipstick on a pig. There's verbal and physical abuse, exclusion, name-calling, stalking and all sorts of inhumane behaviour towards each other in real life. Social media just digitizes that and is a reflection of the ugly parts of the socializing aspect of human life.

The ~10% good that comes from keeping in touch with people, for example, is not really worth it especially for kids.

Whatever you do you are going to have to deal with the negative aspects of society in-person, and we've all kind of accepted that. Social media just doubles the problem.

Could a not-too trivial example like the difference between a Java sudoko solver and a lisp version with all the bells and whistles of FP such as functions as data and return values, recursion and macros be used to illustrate the benefits?

I disagree, you are future-proofing yourself as the software development industry has no relatively fixed career-path. What you are using today is very likely to evolve you need to be highly educated to adapt successfully.

As we know from Moore's Law, new tech will emerge and it would most likely be based on existing tech you should have learned from school.

You are going to be just as well-paid as a networking, hardware or general software engineer and it will look good on your CV.

Also this forum is littered with << after all these years in tech i feel like i know nothing >> career existential angst. So learning that stuff in school would avoid that issue.

Stay in school kids. ;)

Rushing throw math for Computer Science/Engineering courses has become necessary, mainly because there is a lot more CS to learn,(data science, ai and lots more to come) but it comes at a cost.

I am constantly running into people who feel like they are missing something in their CS pedagogy without this rigorous math knowledge.

After many false starts to correct this, I think a good plan would be to enrol in an affordable long distance or online course in math - so it's not full time - and stick to a timetable and deadlines in order to faithfully complete the work and become as familiar with the material as it pertains to you, just passing where you need to pass and diving deep when it directly affects you and your work.

As a developer you need to have a Documents, Downloads and Development folder. I was always shuffling things around in documents and downloads till i realised I need a Development folder. I'm sure i read it somewhere but never took it seriously. It is one of those things that needs to be included in CS 000 (how to use command line, github etc.)

I recommend the Deitel[0] series for Python and C family languages like Java, C# etc. With hundreds of complete examples to follow (not code snippets) and exercises to challenge you, you will do better with these books as a beginner.

My strategy is to get to the 10th chapter of the book skipping the exercises, then go back and try them with a better overall understanding of the language and its nuances.

Great series.

[0] https://deitel.com/

Applied Economics: Thinking Beyond Stage One by economist Thomas Sowell[0] explores this in good detail, applying it to political and economic policies, in his book.

Housing policies, medicare and today's problem of defund the police can be better analysed if the framework of second-order thinking is used to view the pros and cons of such policies and their subsequent ramifications.

Second-order thinking is a great mental model to have and helps us address some of the cognitive biases that get in our way when making choices.

To me this form of thinking is evident in chess, the evaluation necessary to make a single move gets us to look at the consequences after the third and fourth move before a final decision is made.

I believe when the time allows for it we should really consider the future ramifications of our actions before making a move.

[0] https://www.amazon.com/Applied-Economics-Thinking-Beyond-Sta...

Let me change your mind.

Ocean's 12 is one of the greatest movies ever made.

It is a reality TV-esque take on the lives of master thieves. This begs the question, what does the life of a master thief look like? Is it that of the Night Fox? A wealthy, sophisticated French aristocrat, well-educated and very serious about his craft. Someone who has mastered the art of capoeira to evade security laser beams for example, and goes to such great lengths to be the best?

The second question is that of why? Why do you do what you do? What is the Night Fox's motivation for being a master thief? The relentless pursuit of perfection and pulling off the greatest heist ever? Just becoming the best for being the best sake?

I would like to present a real life example to you: the ongoing Messi versus Ronaldo debate. Is the greatest football player an inimitable, natural-born artist or a perfection obsessed workaholic who probably owns a cryogenic chamber in which he sleeps every night to maintain peek physical fitness?

With these questions in mind, a second and third viewing of the Ocean's 12 movie will help you decide the debate of who is the greatest thief of them all.

If you were disappointed because you were looking for a heist movie with cool gadgets and mind-freak tricks, you can google "heist movie" and watch whatever pops up first (Now You See Me).

Ocean's 12 is for philosophical rumination.

Space startups have really taken off over the last decade, thanks to big players like Blue Origin, Space X and Virgin Galactic. There are a lot of other entrants, in what can now genuinely be called an industry, thanks to dedicated startup accelerators like the Founder Institute Space Program.

"Opportunities are flourishing today in Space Tech. There's now an increasingly connected ecosystem to support even pre-seed stage aerospace founders - and Founder Institute can increase any aspiring space technology entrepreneur's chances of success, by providing the necessary founder mindset and key network connections" [0]

[0] https://fi.co/insight/founder-institute-space-tech-virtual-2...

No. Would you then learn assembly to understand C better? Once you have the basics of syntax and semantics your next step is the OOP and FP paradigms used in Python for simple programs. Then a deep dive for a solid grasp of data structures and algorithms would be the last step. After you have these 3, you should be able to write mid to high level programs comfortably.

Which of these 3 aspects do you feel C would help you understand better?

Maybe you are asking this question because you want to understand programming languages and how they work in which case a course in compilers and programming languages from a MOOC would help.

Time to do this - a minimum of one week. Learn all the contents of a chapter over a period of one week. This includes answering the questions at the end of the chapter. If you happen to finish the contents before the end of the week, rest and start the next chapter the following week.

Just look at the bibliography of any book, it is usually more than 6. So that's how many books you have to read on average to remember what you read, let alone deeply understand the material. The whole idea of trying to remember and understand from one reading is a fallacy. The best thing is to re-read the book again or read multiple books on the same subject.

Great job. I am learning to build apps in android. Currently most of the tutorials and even books I come across have quite small examples to follow, usually 2 activity files and 2 layout files. Honestly, the progress to building a substantial app is a bit slow because the projects are so small.

This is an open question to all.

I want to know how you made the jump to 10+(activity and layout) files in a project, what resources lead you to getting to this level?

Pick one programming language and learn the hell out of it.

One way of deciding which language to choose is by surveying the top ten languages over the last 5 years and comparing it to the most common language most of your courses will be taught in. If your school is teaching Pascal or COBOL, the survey of relevant programming languages will help you avoid making the mistake of learning a “useless” language.

Then pick a nice tome, (I personally use the Deitel series) and just go through it faithfully for the next few years of college and after until - and this is the important part - you complete it.

You want a book with complete examples - not snippets of code. You have to type out these examples and have it run. This works in the skill of being able to write complete code of up to 200+ lines without breaking a sweat. A very valuable skill to have going into your senior year and the first few years of work. You don’t want to learn this on the job.

Learn the fundamentals of the language(loops, conditions, etc), learn data structures and algorithms and then learn to create GUI applications. Learn networking and databases. Learn everything in that one language. Again it’s important that you pick a general-purpose language to learn. You are not picking a language for its speed or unique characteristics, you simply want a language in which you can do everything.

And after all this learn to make simple games in that particular language or any other broad projects that you find interesting. I recommend game programming because it usually brings every part of the language together in one application, helping to keep your broad skill set sharp.

I’m also going to throw in a schedule you can use. Ideally aim for one week to complete a chapter, meaning a minimum of 2 hours every other day within a week. This weekly consistency will probably set in after your first year but if you stick to it, I can promise you from personal experience that you will master programming.

Weeks.

Segment your time to complete things into weeks. Months have too much wiggle room and days are too tight. Most people don’t even have the weeks option displaying on the digital calendars (phones, laptops) they use.

For long term projects of any kind using the week as a unit of time is the best way to cross the finish line.

This is possible for personal projects and for entrepreneurs. If you can get into this time frame in an organisation you are going to have a much easier time with your projects.

Another important point is not to overload the time either, if you end up completing something within a few days do not move to the next phase within that week. Stick to the schedule.

I'd recommend a look at this book http://blough.ece.gatech.edu/3020/focs.pdf .It will show you what you've been missing in the preface and the first chapter. An interesting point by the authors was that this was the way they felt CS should be taught, with the fundamentals and all presented side-by-side with the code. But when you think about it(from mathematics for example) we need accountants who use mathematics effectively without having to understanding Fermat's last theorem...