Jump to content

Need advice for progressing with programming

Cool Guy

Hi, 

So, I wouldn't consider myself a fluid programmer.  I know a bit about data structures & algorithms, a bit about computer science.  But while many of my mates are programming applications and such.  I can help debug software but never actually create anything from scratch because I just don't know where to start.  For me it's less of developing algorithms but actually using system APIs and stuff, like how would I detect the amount of cores on an OS using Java?  

 

Do I just have to keep Googling all the time until I find out and remember that?  Or is there some documentation I can use?  I'm enrolled in a software development course which includes c# and Java.  I know a bit about both, enough to write some basic software and yet I don't know where to start. So while I might sound like a total noob, I want to start making projects and I would like a little direction about where to actually start. 

 

Any advice would be appreciated, even if it's hard and bones.  If it's honest, then I'll take it. Thanks.  

Link to comment
Share on other sites

Link to post
Share on other sites

13 minutes ago, Cool Guy said:

Hi, 

So, I wouldn't consider myself a fluid programmer.  I know a bit about data structures & algorithms, a bit about computer science.  But while many of my mates are programming applications and such.  I can help debug software but never actually create anything from scratch because I just don't know where to start.  For me it's less of developing algorithms but actually using system APIs and stuff, like how would I detect the amount of cores on an OS using Java?  

 

Do I just have to keep Googling all the time until I find out and remember that?  Or is there some documentation I can use?  I'm enrolled in a software development course which includes c# and Java.  I know a bit about both, enough to write some basic software and yet I don't know where to start. So while I might sound like a total noob, I want to start making projects and I would like a little direction about where to actually start. 

 

Any advice would be appreciated, even if it's hard and bones.  If it's honest, then I'll take it. Thanks.  

So you aren't interested in Python?

Link to comment
Share on other sites

Link to post
Share on other sites

Same question (I just don't know how to follow without answering)

Link to comment
Share on other sites

Link to post
Share on other sites

Sup fellow Kiwi!

Python is a great place to start. And many lessons can be found on platforms like Youtube or Khan Academy.

I personally learnt the basics using Batch scripts.

Samuel Edwards

- IT Engineer and Media Producer -

Religious theology diploma and over half a dozen certificates in Advanced Computing and IT.

Current Project:   Mineral Oil Cooled PC

Just trying to be friendly and help where I can. Have yourself a great day!

Use @SamuelJE for friendly tech help :)

 

 

 

Main PC - "The Genesis"

Mobo   -   Gigabyte GA-H170-Gaming 3

CPU     -   intel i5-6600K 4Ghz on water

GPU     -   MSI GTX970 "Red Dragon"

Case    -   Zalman Z11 Plus (Custom RGB Obviously, It's 2017 bro...)

OSD     -   Crucial 275GB M.2 SSD

SSD     -   Crucial 250GB SATA SSD

HDD    -    4TB WD Green x 2

Disp     -   LG ultra wide Gaming Monitor

 

Secondary PC - "Jonah"   (Mineral oil PC)

Mobo   -   Gigabyte GA-B250-DH1

CPU     -   intel i5-7500 Under Oil

GPU     -   Nvidia GTX 660 (Favorite and first ever GPU)

Case    -   A Fish Tank W/ Custom Engineered Mounting System (Custom RGB Obviously, It's 2017 bro...)

OSD     -   Crucial 275GB M.2 SSD

HDD    -    2TB WD Green

Disp     -   LG ultra wide Gaming Monitor

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

The single best way, in my experience, to learn how to use any programming language is a project-based approach.  Pick or find a thing you want to do--maybe program a game, or a Twitter bot, a generative art maker, or some quality-of-life programs you expect to use often--and then google the hell out of how to do the different parts of it.  The fact that you're enrolled in a course right now might give you some natural projects/things to do, but there are a bunch of websites out there that collect programming-oriented problems (Project Euler for computational mathematics; Rosalind for computational bioinformatics/genetics; Kaggle for machine learning; etc etc) if you want something different (and something that a lot of people have already done, so there should be plenty of resources available).  The downside to a do-it-yourself project-based approach, though, is that you'll tend to learn a few parts of the language very deeply, but you may never pick up on the breadth of what can be done with the language.  A more formal class will tend to, in my experience, give you the inverse, where you get a good sampling of everything but don't necessarily get to dive super deep into any one thing during the course itself.

 

Usually, if you can find some sort of official documentation for your language (e.g., Python's documentation, which is excellent), that's a good reference to always keep on hand.  From time to time you should skim through parts of the documentation you're not familiar with--you may not use all the features of a language, but you might learn about something you wouldn't come across otherwise.

Link to comment
Share on other sites

Link to post
Share on other sites

A lot of my learning was reading other people's code and figuring out what was going on. If you can compile, run, and debug their code, even better, because you can start studying how the code works and why things are the way they are. To that end, you could probably lurk around places like GitHub or https://openuserjs.org/ to see what they do. Otherwise scouring the internet (stack exchange is best) and documentation are the two biggest resources I've found.

 

Though to answer this question since it's bothering me...

3 hours ago, Cool Guy said:

... like how would I detect the amount of cores on an OS using Java? 

The best you can do is ping the OS for system information. However, this information is more or less useless for applications. Spawn as many threads as you think you need. The OS will schedule them accordingly. Don't think "Oh, there's only four cores, so I should only spawn three more threads". For instance, Explorer at the moment on my computer has 77 threads spawned. Firefox has 88.

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, Cool Guy said:

Do I just have to keep Googling all the time until I find out and remember that?

Essentially yes. Even the most experienced of us need to do so from time to time.

12 hours ago, Cool Guy said:

 Or is there some documentation I can use?

Usually a language will have some form of official documentation. Some do a better job than others however.

12 hours ago, Cool Guy said:

I can help debug software but never actually create anything from scratch because I just don't know where to start.

12 hours ago, Cool Guy said:

So while I might sound like a total noob, I want to start making projects and I would like a little direction about where to actually start. 

In my opinion, and I keep reiterating this each time one of these kind of threads appears, you should start learning and practicing the theory:

On 2017-6-19 at 10:03 PM, Nuluvius said:

It depends on what you want to do, where you want to go and what you enjoy doing.

 

Learning a language i.e. understanding a given syntax is fine for starting out. However that alone is nowhere near enough in order to be considered well rounded, capable and actually being productive out there in the industry. To accomplish those then one really has to be concerned with the larger picture; I am specifically referring to theoretical concerns such as:

 

Principals, Practices and Patterns

Methodologies

Paradigms

These are some basic concepts that I consider (based on my own experience) to be particularly important to be started on as early as is possible, in parallel with your syntax play. The earlier that one begins to understand, ingrain and practice these concepts then the better really.

 

Be Aware of

Some Particularly Useful Sites

I mentioned that it is important to understand where you want to go and what you want to do because these factors will also have an effect on the theory that you will be expected to understand and practice.

I lifted that from a recent thread, sorry that I didn't have the time to tailor it for you. Essentially it's the theory which is also language agnostic that will likely give you the tools that you are in need of.

The single biggest problem in communication is the illusion that it has taken place.

Link to comment
Share on other sites

Link to post
Share on other sites

Basically this is something you get a feel for with experience. If you know the syntax of a language and are just having trouble breaking down a complex real world problem into lots of small abstract problems you can easily code then I suggest you sketch things out UML style before you begin coding. If your issue is knowing the syntax then have a syntax cheatsheet around as you code. Overall though you'll get better at this with time. Taking courses may help with getting this experience faster. 

Link to comment
Share on other sites

Link to post
Share on other sites

Also start with simple projects. Even if it's something that appears to be done a million times over, do it anyway. Like find a simple game (simple as in you can do it with a piece of paper and a pen) to program. Look on Wikipedia for a random sorting algorithm or something and implement it based on the design. 

 

Sometimes when I get bored I go find a random problem to "solve"

Link to comment
Share on other sites

Link to post
Share on other sites

If you don't want to do all the "dirty work", like interacting directly with System APIs, you can use 3rd party libraries. I use Qt Framework a lot, but that's for C++. I'm sure there are libraries for Java too. They make our lives much simpler by abstracting all the tedious tasks (e.g. you can create the standard Windows File-Open dialog with just one line of code)

 

C# can be associated more with traditional desktop applications, while Java is preferred for use with server-side applications, websites, etc. Visual Studio has good C# project templates, that can help you with the GUI part of the project. You can create UWP apps using C#, which allows you to design the UI of your app using a dedicated designer (Am afraid I don't know much about that...)

 

If you're looking for project ideas, here's a page from LTT. If you want ideas for projects, you needn't even search for them - your computer is full of them! Text Editors, Spread-sheet Creators, Web Browsers, Media Players, Compression Utilities, Image Editors, IDEs (Integrated Development Environment - e.g. Visual Studio, NetBeans) and even Games.

 

I'm currently developing a simple IDE for Java using Qt and C++ - You can do the same with UWP, .NET, and I think even Java. Also, you can learn more languages, like Python, HTML5, Javascript, etc.

 

The possibilities are limitless - you are only bounded by your imagination! Good Luck!

Nothing to see here ;)

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, Anand_Geforce said:

If you're looking for project ideas, here's a page from LTT. If you want ideas for projects, you needn't even search for them - your computer is full of them! Text Editors, Spread-sheet Creators, Web Browsers, Media Players, Compression Utilities, Image Editors, IDEs (Integrated Development Environment - e.g. Visual Studio, NetBeans) and even Games.

All of the ones from the "your computer" section seem way too difficult for a novice.

 

I'd suggest making simple board games as they can offer some fun at the end and are rather easy to make. Also I'd suggest focusing on just making use of the console at first. Basically make a backend before really consider how to make a gui for it.

Link to comment
Share on other sites

Link to post
Share on other sites

On 6/27/2017 at 7:51 PM, Cool Guy said:

Hi, 

So, I wouldn't consider myself a fluid programmer.  I know a bit about data structures & algorithms, a bit about computer science.  But while many of my mates are programming applications and such.  I can help debug software but never actually create anything from scratch because I just don't know where to start.  For me it's less of developing algorithms but actually using system APIs and stuff, like how would I detect the amount of cores on an OS using Java?  

 

Do I just have to keep Googling all the time until I find out and remember that?  Or is there some documentation I can use?  I'm enrolled in a software development course which includes c# and Java.  I know a bit about both, enough to write some basic software and yet I don't know where to start. So while I might sound like a total noob, I want to start making projects and I would like a little direction about where to actually start. 

 

Any advice would be appreciated, even if it's hard and bones.  If it's honest, then I'll take it. Thanks.  

A couple things:

 

1) Get used to using Google and come up with an intelligent bookmark system for coding references.  It doesn't matter how long you code or how good you are, you're going to constantly run into problems you don't know how to deal with and you're going to be referencing coding sites a lot.  Having a good organization structure for your bookmarks is key because it will let you find relevant info again later.  I break mine down by language and primary task... so if I run into a JavaScript/jQuery error or snippet it goes into that folder, if I run into a SQL problem it goes into that folder, etc.

 

2) Start small and just start DOING, don't pick a huge application or you'll never get anything done.  Writing from scratch is pointless, professionally you're likely to never write from scratch unless you start your own development company and create applications from the ground up.  I'd say that 99% of all day to day coding is dealing with other people's poorly designed code (with no documentation) and trying to figure why in the hell it's so messed up and how to fix it.  If you really want to write from scratch break things down into manageable parts, i.e. what kind of database needs will you have, what kind of user input/interface do you need, what kind of information are you dealing with, etc. 

 

3) Get good at refactoring code and learn SQL inside and out.  If you are a database rockstar companies will love you, because a lot of performance issues stem from poorly written queries and/or poorly designed databases.  No one cares about a sweet looking UI if it takes two minutes to load a page, and just because a page loads in a second with 100 records doesn't mean it won't take 2 minutes with 10,000.

Link to comment
Share on other sites

Link to post
Share on other sites

Read the documentation

Read the documentation

Read the documentation

This is the golden rule of learning API's and general Syntax, and is an easy gauge of how well a given API will be to work with. (example, UE4 and Unity are fairly easy to learn and work with, Lumberyard is a pain in the ass because it's documentation isn't anywhere close to usable right now)

CPU - Ryzen 7 3700X | RAM - 64 GB DDR4 3200MHz | GPU - Nvidia GTX 1660 ti | MOBO -  MSI B550 Gaming Plus

Link to comment
Share on other sites

Link to post
Share on other sites

On ‎29‎/‎06‎/‎2017 at 7:28 PM, ElfFriend said:

All of the ones from the "your computer" section seem way too difficult for a novice.

not so compression can be done from cmd so write a batch script to compress you data then back it up to a drive or use python to only copy files with a newer changes date. 

 

even a simple browser in win forms isn't that have, it'll suck and run on IE rendering engine bit that doesn't matter. 

 

a text editor wouldn't be too hard either loading and saving files, styling will probably be a bit harder but hey that is why we learn. 

 

what I currently do I pick a task that I do quite often on my oc then build a script to make it quicker/easier. 

 

my last script was a multithreaded pdf downloaded for worksheets for the kids, enter a url and it downloads all the pdfs on the page saves so much time. 

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

Link to comment
Share on other sites

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

×