I've been working as sysadmin for at least 5 years now and I quite enjoy the IT field in general.
Somehow, I was never interested in programming much but always wanted to learn something easy for personal usage. As a sysadmin I need scripting skills; so I learned shell scripting without much difficulty. From there I also tried to learn Pascal, Delphi, BASIC and most recently python.
My problem is that, when I try to learn programming, I just can't apply what I learn from the books to the real world; putting knowledge into practice. For instance, I understand there are data structures, algorithms, variables, lib's, if-then logic, etc. Still, I just can't understand how to apply these things when I want to do real things. I will want to do something as simple as parsing web page; I draw up a quick algorithm like get a web page, find a word on it and write the word to file. On the paper, everything looks simple but when I get to coding it I get stuck right from the start.
I try read code of the real programs but that just totally confusing especially big parts with many classes so i'm just quickly lost a trail what this code do. I think I may just lack some fundamentals to see the big picture, but don't really know what these might be?
My best bet was a shell scripting language, and I have no problems writing complex scripts but I would like to push further. Recently, I read around 5 or 6 python books because everyone say it's so easy even kid can code something. Still, not much luck; python is good and easy but I can't make something more complex than a prodecurial style code like in bash. I'm competent at easy things but stuck when I need more complex things. In college I was also not a math and tech guy, and I like to study non-tech stuff mostly like economy, psychology.
- What kind of resources can help me break through the barrier of translating book-knowledge into coding skills?
- If I am good at scripting, what might be a language that fits with the higher level concepts of scripting? I want to leverage the more sophisticated elements of skills I currently have to kindle my adaptation of or to similar languages.
- Is there a particular series that is better at explaining the complicated concepts, rather than focusing on the details? Authors with a broader stoke may be able to aid more than ones who focus too much on initially distracted minutia.
Thanks to everyone for attention and advices. For some reason i can't comment answer's so i comment here.
Well, probably i'm really trying complex things from the start and i should start small but i'm tired of useless examples and "hello worlds", anyway i already try them and in one python book(forget the name) we write the phonebook application from the scratch - it's interesting from the beginning but getting boring to the end. I think many programming books have this problem they offer examples that cut off from the real world and stuff people want to write. I understand more practice is the key to learning and when i have such tasks i surely would try to implement it. What for a language i choose python right now because it's easy, cross-platform, have a good community and can be used for everything from simple scripts to web sites. But i think it's stupid to develop yet another ftp client for example even for a learning perspective because i know i have good client already and no one would be use mine. I have only complex systems in mind that would be cool to create.
Back to my confusing problem - i mean i just cant imagine stuff i want in code. For example i want emulate car driving in program - i understand how car work, i can break car for a parts for simplicity like transmission, pedals, etc. but how to describe that in code? Just can't imagine that. I also have problems with OOP i understand some concepts in theory but in code i don't understand some things. I bookmarked Head First Design Patters book but don't read it yet(i heard Gang of Four is hard to understand for newbies) maybe you can recommended something else on OOP?
I want to understand fundamentals too - here what i mean from sysadmin point of view. i can understand what dns does in general and know name translating to ip and in reverse but it's not much helpful when i debug dns problems. What i need to know when debugging is exactly how DNS protocol works what ports, traffic messages look like and stuff - thats what fundamental. Same goes for OS you can use it not knowing what kernel and file system is but it limit you understanding and usage of system. I think i have the same problem with programming i understand building blocks, syntax but i don't see a underground picture for effective usage of that and understanding how exactly ideas converted to code. Maybe you can advice me some books on that topic? I did a googling but don't find anything useful on that topic. Thanks.