[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/sci/ - Science & Math


View post   

File: 26 KB, 400x400, image.jpg [View same] [iqdb] [saucenao] [google]
6959005 No.6959005 [Reply] [Original]

Programmers on /sci/, how do you improve your programming skills?

I have been doing C# for about 3 years now(web applications, desktop apps) however i still feel that i am average at best. What are some ways that as a programmer i can widen/sharpen my skills?

I was initially interested in other languages and platform like java web development and phone apps, but since most of the time i had to be working on my main project i didn't really have time to explore..

Also general programming thread..

>> No.6959008

>>6959005
sicp

>> No.6959024

>>6959008
The book..?

>> No.6959408

>>6959005

The programming language of /sci/ence is supposed to be python. So perhaps you could add that to your repertoire.

But what I'm really curious about anon is do you actually know what it is that needs improvement, as in which areas of programming do you want to become proficient in?

>> No.6959534

>>6959005
Programming skill as in solving problems or using one language features to the max?

>> No.6959574

I've reluctantly become a master of PHP (and mySQL) through necessity. All of the places I've worked have used LAMP stacks, so I just learned by doing. Over and over. Started out in the 2000s barely being able to get an email POST form working.

>> No.6959585
File: 64 KB, 350x360, 1392032530179.gif [View same] [iqdb] [saucenao] [google]
6959585

what do you not know?
i'd personally recommend leaning, if not just exploring, languages of various degrees (i.e. lower level, C/ASM/C++ maybe, functional, Haskell, etc. if you want to branch out, but this should only be after you've mastered the basics (i.e. data structs + algos, learning all the 'interview questions' for your language (usually efficiency), then make a compiler/interpreter!

>> No.6959597

>>6959534
The former is more math than anything and should not be masqueraded as programming knowledge. The latter is best left to /g/, but I recommend getting a book or two about it instead.

>> No.6959604

>ASP

>> No.6959639

>>6959024
yes, work through it, don't just read it, literally do the work

>> No.6959641
File: 305 KB, 640x974, 1414364978661.png [View same] [iqdb] [saucenao] [google]
6959641

>>6959024

>> No.6959653

keep a list of open problems, whatever pisses you off about the code you're working with, things you wish were simpler, more elegant. then when you stumble upon a solution you can cross that one off. otherwise you'd just forget about it and ignore it.

generalize/abstract things that tend to repeat a lot. hard mode: find connections between things that look unrelated at first.

keep your ear to the ground: msdn, regulargeek.com, blog.cwa.me.uk, www.infoq.com, blog.cwa.me.uk, and so on. generally find yourself blog/news aggregators.

make sure you have your theory in place (data structures & algorithms, concurrency models, distributed processing, databases & scalability). people who have gaps here tend to fall back on low level framework/language constructs creating fucking monstrosities, while sometimes simpler solutions exist on a higher more architectural level.

>> No.6959831

I only know basic C++ and Visual Basic; what is the best tl;dr explaining each of the programming languages in 1-2 sentences? I am graduating this sunday (physics) and plan on teach myself more than what i currently know. Looking for a bump in a good direction.

>> No.6959839

>>6959005
I just read "The C programming language" over and over. Between these readings I write the rules on Leafpad. Sometimes I write in Deutsch. I do the same when I am learning chess.

>> No.6960222

>>6959641
>This is 1986
>you're going to MIT

wut?

>> No.6960226
File: 884 KB, 245x138, lolchoke.gif [View same] [iqdb] [saucenao] [google]
6960226

>>6959574
>a master
>of PHP

>> No.6960238

>>6959005
Gaining familiarity with a new programming language or development tool is something literally anyone can do.

If you want to be exceptional focus your efforts on as much theory and math relating to computation as you can.

>> No.6960262
File: 692 KB, 825x789, japanese-christmas.png [View same] [iqdb] [saucenao] [google]
6960262

One good way is to try out different programming languages. You're good at an OO language... fine. Try learning a functional or logical language. You'll be surprised at how it changes your way of thinking about what programs can do.

For example, while learning Prolog, I realized just how often I write loops that would be much simpler if I just had a generic backtracking algorithm. So I wrote in all the imperative/OO languages I know a similar sort of functionality, and I use it all the time.

Or, after learning Scheme (and later Ruby), I realized the value of having code that can create other code. Actually, I first really got the idea in Prolog, but first used it in a big project written in Scheme. Anyway, macros are friggin awesome, and my C++ code is now hardly even recognizable as such... but on the other hand, I can write half the code and have hardly any errors as I would were I writing vanilla C++ with no macros. (Templates are the first step to a proper macro system, but are a pretty poor substitute for many reasons.)

Ruby taught me the handiness of convention over configuration. I used to start all my Fortran programs with IMPLICIT NONE, but in retrospect, my hard-on for explicit typing doubled the amount of code I wrote for many years. So many wasted keystrokes, so much unnecessary debugging.

>> No.6960294

>>6959534
More of using the features to the max..