Jump to content

What to learn next in programming?

TL; DR: 

Know programming levels 1 & 2. What teach self next? 

 

Long version:

I was in college studying, but dropped out for my current job-however I want to get better at programming in my spare time. 

 

At work I basically just modify scripts in Unity 3D. Nothing majorly complex. Most troubles come from unfamiliarity with the project itself. Time will teach me more. (Studying the project is out of the question.)

 

In college I was last studying Programming 2 (though I knew all the concepts beforehand thanks to you guys. <3. It’s how I got my job.) 

I’m fairly intermediate in C# with Unity, and some .NET things. I’m not sure but I think all the cool stuff is done with C and C++. I know python and other languages do things well.  I’m not about to have this topic become a language war. If you have a recommendation of a language for a specific task, that helps, though please don’t counter people’s recommendations. I’m not using C to style a website. 

 

What do I do from here? Now that I can write any boring calculator, what do I move onto to do interesting things? I feel like an expert in writing anything that is enclosed in the application itself. I don’t know how to interact with hardware, file formats or anything. 

 

I was going to write an OS for my arduino, however I don’t live in my country anymore so it’s kinda bye bye. 

 

What do you recommend starting to study? 

Any mathematics you recommend studying? I stopped learning math after algebra-trigonometry in high school. 

 

Are there any iPhone compilers you recommend? I don’t have an x86/x86-64 pc for myself at the moment. 

Link to comment
https://linustechtips.com/topic/909102-what-to-learn-next-in-programming/
Share on other sites

Link to post
Share on other sites

try learning some more concepts, even if you think you know it all

 

sololearn.com is a great way to gauge yourself, they even have skip test that basically let you skip the intro parts of a class if you pass the test; so basically you could skip to the more advanced stuff you may not know; in addition they have a ton of languages that you could familiarize yourself with if you're curious, its all free too

Link to post
Share on other sites

2 hours ago, fpo said:

Any mathematics you recommend studying?

linear algebra has a lot of useful concepts for programming. Especially if you ever want to get into machine learning.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

3 hours ago, fpo said:

TL; DR: 

Know programming levels 1 & 2. What teach self next? 

 

Long version:

I was in college studying, but dropped out for my current job-however I want to get better at programming in my spare time. 

 

At work I basically just modify scripts in Unity 3D. Nothing majorly complex. Most troubles come from unfamiliarity with the project itself. Time will teach me more. (Studying the project is out of the question.)

 

In college I was last studying Programming 2 (though I knew all the concepts beforehand thanks to you guys. <3. It’s how I got my job.) 

I’m fairly intermediate in C# with Unity, and some .NET things. I’m not sure but I think all the cool stuff is done with C and C++. I know python and other languages do things well.  I’m not about to have this topic become a language war. If you have a recommendation of a language for a specific task, that helps, though please don’t counter people’s recommendations. I’m not using C to style a website. 

 

What do I do from here? Now that I can write any boring calculator, what do I move onto to do interesting things? I feel like an expert in writing anything that is enclosed in the application itself. I don’t know how to interact with hardware, file formats or anything. 

 

I was going to write an OS for my arduino, however I don’t live in my country anymore so it’s kinda bye bye. 

 

What do you recommend starting to study? 

Any mathematics you recommend studying? I stopped learning math after algebra-trigonometry in high school. 

 

Are there any iPhone compilers you recommend? I don’t have an x86/x86-64 pc for myself at the moment. 

Code for android?

 

Sorry, I need to mention it. I am an android fan.

Sudo make me a sandwich 

Link to post
Share on other sites

4 hours ago, fpo said:

What do you recommend starting to study? 

You could look at various open source projects on GitHub or whatnot. Since you mentioned you wanted to do an OS, you could look at the source code for MINIX (which is much easier to digest than say Linux) or the stuff in https://www.state-machine.com/

 

If you're looking for ideas of what to do you can either find something you wish you could automate or make the task easier or just poke at a topic of interest and go from there.

4 hours ago, fpo said:

Any mathematics you recommend studying? I stopped learning math after algebra-trigonometry in high school.

Discrete math covers a ton of lower level concepts in computers. Graph theory is also a good place to start with intermediate algorithms. The two are often tied together and they're not really that hard to pick up and learn.

Link to post
Share on other sites

Sorry for such a late reply! Thanks for all the input. 

General Winter

Spoiler
On 3/24/2018 at 10:15 AM, General Winter said:

try learning some more concepts, even if you think you know it all

 

sololearn.com is a great way to gauge yourself, they even have skip test that basically let you skip the intro parts of a class if you pass the test; so basically you could skip to the more advanced stuff you may not know; in addition they have a ton of languages that you could familiarize yourself with if you're curious, its all free too

Thanks! I'll definitely look into this and do as much as I can. I like the C++ they have. I loved doing codecademy to get basic syntax learning. 

1

reniat

Spoiler
On 3/24/2018 at 11:45 AM, reniat said:

linear algebra has a lot of useful concepts for programming. Especially if you ever want to get into machine learning.

Thanks! I'll try and learn some more advanced mathematics. 
Any places you recommend to learn? I was thinking Khan Academy but if you have any other suggestions I'm listening. 

 

wasab

Spoiler
On 3/24/2018 at 12:59 PM, wasab said:

Code for android?

 

Sorry, I need to mention it. I am an android fan.

I tried installing the SDK but was having issues. I like APP inventor though. Just need an Android phone haha. Sorry, I love my iPhone.

 

M.Yurizaki

Spoiler
On 3/24/2018 at 2:45 PM, M.Yurizaki said:

You could look at various open source projects on GitHub or whatnot. Since you mentioned you wanted to do an OS, you could look at the source code for MINIX (which is much easier to digest than say Linux) or the stuff in https://www.state-machine.com/

 

If you're looking for ideas of what to do you can either find something you wish you could automate or make the task easier or just poke at a topic of interest and go from there.

Discrete math covers a ton of lower level concepts in computers. Graph theory is also a good place to start with intermediate algorithms. The two are often tied together and they're not really that hard to pick up and learn.

I'm going to look into it. I'd like to play with an easy kernel. 
Any suggestions on ways to learn how to automate? Is it just learning API that interacts with Windows directly or is there any other way that one may suggest? 
I'll see if I can learn some higher mathematics. Do you recommend any places to learn? I'm thinking Khan Academy might be good but if you have other suggestions I'd love to hear. 

 

 

Link to post
Share on other sites

3 hours ago, fpo said:

Any suggestions on ways to learn how to automate? Is it just learning API that interacts with Windows directly or is there any other way that one may suggest? 

I was thinking stuff like making a script, either with Windows' bat or ps scripting or a Linux shell script. Maybe an easy and practical task is to make a script for file syncing a backup drive.

Quote

I'll see if I can learn some higher mathematics. Do you recommend any places to learn? I'm thinking Khan Academy might be good but if you have other suggestions I'd love to hear. 

All my education was through school so I don't know where else I could recommend :/

 

If you don't mind trying self-learning, I'm sure you can find old textbooks nobody wants somewhere.

Link to post
Share on other sites

@M.Yurizaki, ahh okay. I wrote a .sh script that looped through sl and sl-FA if that counts for anything haha. I hear Lua and Python are scripting languages. Do they compare to bash and whatnot? I know they have programming extended functionality though I’m not sure their original purposes. (Aside from being easy to learn.) 

 

I may look into powershell though my end goal is stuff like network programming, and game engines. Program a program to make games that work over networks. 

I’m not sure if there’s a natural progression, or if I should dive into a specific discipline of programming. 

 

As for math, if I was in my home country, we have a good calculus tutor. If I go back I’ll likely seek him out. Otherwise I’m going to go with the find old textbooks idea haha. 

 

Thanks!!! 

Link to post
Share on other sites

23 minutes ago, fpo said:

@M.Yurizaki, ahh okay. I wrote a .sh script that looped through sl and sl-FA if that counts for anything haha. I hear Lua and Python are scripting languages. Do they compare to bash and whatnot? I know they have programming extended functionality though I’m not sure their original purposes. (Aside from being easy to learn.)

Shell scripting is more about trying to automate a task you would do in the command line. A common use case I've seen is setting up the command line environment so you don't have to repeatedly type the environment variable assignments. I made one for Lubuntu so when I have a fresh install of it, I run the script and it installs the other packages and such that I need for the development work I do on the side.

 

Python to me is more for cranking out some kind of app really fast. Usually for testing or some other random engineering tool.

Link to post
Share on other sites

On 3/28/2018 at 10:13 AM, M.Yurizaki said:

Python to me is more for cranking out some kind of app really fast. Usually for testing or some other random engineering tool.

But you can also script with python can you?

Sudo make me a sandwich 

Link to post
Share on other sites

Just now, wasab said:

But you can also script with python can you?

A Python script is a script through a Python interpreter, which is different from shell scripting. Python is designed to write applications, shell scripting designed is to automate/simplify stuff you would've done manually in the command line.

Link to post
Share on other sites

39 minutes ago, M.Yurizaki said:

A Python script is a script through a Python interpreter, which is different from shell scripting. Python is designed to write applications, shell scripting designed is to automate/simplify stuff you would've done manually in the command line.

I think the confusions comes from the fact that many developers (i'm definitely guilty of this) blur the line between application and script. If i write a 30 line python "application" as a tiny automation tool, i'll refer to it as a script nearly every time. 

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

I'm going to give the contrarian boring opinion: learn to consult on enterprise platforms like SAP or Mulesoft. It is neither fun nor rewarding, but there is an abundance of work and if you pick a good niche the pay is princely (especially in the US - if you stay away from high COL traps like NY and the valley.) You end up learning solid programming skills, gaining valuable business experience, and learning how to deal with people (which is one of the least common and most valuable skills in IT) while putting enough money away to start a business after a few years.

 

Learning to write structured, well architected, and documented code that other people can extend is very helpful if you plan to open source your creations or make them into products. Learn to use small methods and classes, avoid excessive abstraction and clearly document your code. Principles like the law of Demeter, composition over inheritance, thread-safe and asynchronous design (depending on your language of choice) and other more cross language skills are important. I've met multiple programmers who had better technical skills than I, but their illegible code or lack of good practices cost their employers tens of thousands of dollars.

 

Also, I strongly suggest learning how to negotiate salaries (and contracts), Patrick McKenzie has a great post on this:

https://www.kalzumeus.com/2012/01/23/salary-negotiation/

Web Developer and Java contractor

Link to post
Share on other sites

Learn ultra fast yet ultra accurate typing. Invest in a keyboard better than the qwerty to help you do this. The faster and more accurate you can type out codes, the super more productive you are. With it you can easily tape together a working software in just a one night coding marathon.

Sudo make me a sandwich 

Link to post
Share on other sites

3 hours ago, wasab said:

Learn ultra fast yet ultra accurate typing. Invest in a keyboard better than the qwerty to help you do this. The faster and more accurate you can type out codes, the super more productive you are. With it you can easily tape together a working software in just a one night coding marathon.

Code writing speed != more productive. So long as you're not taking the piss quality or work is much better than speed.

 

You can get coders that just rattle out 100s of lines of working but trash code.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to post
Share on other sites

7 hours ago, vorticalbox said:

Code writing speed != more productive. So long as you're not taking the piss quality or work is much better than speed.

 

You can get coders that just rattle out 100s of lines of working but trash code.

My coworkers in a nutshell. 

 

Edit: will have official reply to thread later. 

Link to post
Share on other sites

7 hours ago, vorticalbox said:

Code writing speed != more productive. So long as you're not taking the piss quality or work is much better than speed.

 

You can get coders that just rattle out 100s of lines of working but trash code.

But that’s what code review with others is for right?

Sudo make me a sandwich 

Link to post
Share on other sites

1 minute ago, wasab said:

But that’s what code review with others is for right?

It is if you like have people get so many comments that they have to abandon and re-make the review 4 times before merging to dev :D

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

4 minutes ago, wasab said:

But that’s what code review with others is for right?

if all the coders all write trash then a review will do nothing. 

 

we use node at my work place and I take pride in clean reusable code. for an example

 

https://repl.it/@vorticalbox/HHscrape

 

which will be the start of the next version of my twitter bot then main function is this

 

got('https://news.ycombinator.com')
    .then(loadBody)
    .then(getLinks)
    .then(processLinks)
    .then(processTags)
    .then((urls) => {
        console.log(urls);
    })
    .catch(console.error);

 

it is super easy to see what the this program is doing without looking at any other functions. My code isn't perfect but when you have functions nested inside other functions its a mess and hard to follow.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to post
Share on other sites

5 minutes ago, vorticalbox said:

I take pride in clean reusable code.

this. I do mentoring for newer engineers at my work, and taking pride and ownership in their codes quality is a huge part of what I try to teach them. That and how to write unit tests, because universities are awful at teaching that apparently.

Gaming build:

CPU: i7-7700k (5.0ghz, 1.312v)

GPU(s): Asus Strix 1080ti OC (~2063mhz)

Memory: 32GB (4x8) DDR4 G.Skill TridentZ RGB 3000mhz

Motherboard: Asus Prime z270-AR

PSU: Seasonic Prime Titanium 850W

Cooler: Custom water loop (420mm rad + 360mm rad)

Case: Be quiet! Dark base pro 900 (silver)
Primary storage: Samsung 960 evo m.2 SSD (500gb)

Secondary storage: Samsung 850 evo SSD (250gb)

 

Server build:

OS: Ubuntu server 16.04 LTS (though will probably upgrade to 17.04 for better ryzen support)

CPU: Ryzen R7 1700x

Memory: Ballistix Sport LT 16GB

Motherboard: Asrock B350 m4 pro

PSU: Corsair CX550M

Cooler: Cooler master hyper 212 evo

Storage: 2TB WD Red x1, 128gb OCZ SSD for OS

Case: HAF 932 adv

 

Link to post
Share on other sites

@vorticalbox, your code brings tears to my eyes that not all people write code like 

 

Quote

var gxfbk; 

if(!(afci + PH.CS(4))) gxfbk = CS(); break;

Else {

}

Where CS is a function without a type declared that exists in every script and returns a different value every time and sometimes returns values of functions that return values of functions. 

 

How does my boss have 10~ years experience? No comments nor documentation... 

 

*rant ends* I could say more but I just ended it. 

 

Also, still not my official thread reply. 

Link to post
Share on other sites

10 minutes ago, fpo said:

your code brings tears to my eyes that not all people write code like 

in a good way i hope.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to post
Share on other sites

20 minutes ago, fpo said:

It’s a shining light of hope that maybe there are people out there... somewhere ... naming variables and functions by typing out the full 5 letter words.... *sigh* 

I do try, though in my last function "urls" is no longer urls but items so I should rename that at some point.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to post
Share on other sites

3 minutes ago, vorticalbox said:

I do try, though in my last function "urls" is no longer urls but items so I should rename that at some point.

I can forgive you as long as you use proper, consistent spacing and only use 1 arithmetic operator per line. 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×