Wednesday, June 25, 2014

When learning to program .... don't forget to actually program.

For those reading into my journey you know that there have been obstacles in my self education. Work, balancing my college education, etc., But most importantly is just learning something new and something so broad and empowering as software development. I'm not using the term "Web Developer" anymore. Is there really a web developer? I mean, I suppose if you create static web sites for a living. No, you develop applications .. which is also software - which can very much run on the web and with web services. I really don't know what application on any platform doesn't use a service to communicate with an outside source to return data. So we're all just "developers" or of course, "engineer". But semantics is far from my point right now ..

If this blog never takes off ... I'll know that it was because of my random tangents ..

Moving on..

With this it seems hard to come up to speed quick in this atmosphere. I don't think it can be done. I do read blogs and hear stories about people learning a technology and they were able to leave their job in a matter of months and start new careers in the world of development. While that is very much the case, and I do find those stories inspiring, especially Joshua Kemp and Iris Classon. While these individuals were able to find entry level positions using one language/framework ... if you were to visit their blogs now you'll see they aren't just writing about the language they started with. It's because they can't. When I look at job postings in Nashville I see a minimum of three different languages and frameworks even if the job title mentions only one. It's because this new age of technology requires an app to do everything. Not saying that a company would expect a developer to proficiently develop a full stack application alone (not saying that hasn't happened either) but if a company hires a C# programmer to take on an MVC data project then it would make pretty good sense for that developer to know what Javascript does and/or be able to survive in a mess of SQL commands. Bootstrap, Knockout, Angular, Web Api, data formats like JSON and XML .. to me at least, a non employed aspiring developer/student, that this is just the standard of the industry? Constantly learning new technologies because the job at hand no matter the platform is usually requiring a team effort with these technologies intertwined. So coming from the unemployed aspiring developer ... this is hard! I know that .NET and C# is the craft I want to forever perfect (at least today) but I'm not going to post my resume to many places without having some Javascript work to show or even if it is with client side C# and WPF - the ability to implement web services and concurrency. This is a modern world with new technologies, new needs, new possibilities, but new developers? Basically the way I see it is you better have a passion for learning and adapting ... and at the same time writing quality code of course. I make out lesson plans for myself. My degree isn't even in "Software Engineering" or "Computer Science" It is in "Computer Information Technology" so 80% of what I know is based on self education. I make timelines and I think a lot about what I do and what I do it for. This post is talking about the skills that new developers need to be exposed to before considering employment, but my motive isn't employment. I think it went through my mind in the beginning and believe me I really do want to earn a living doing what I love, but that's just it. I need to understand what I love and why I love it. I devote a lot of money and a lot of time to what I do not because of the promise of a large salary and a comfy chair ... but because it's what I can do to make a difference and what I can do ... to be me.

So .. pretty much the first part of this is saying that things in this industry move quickly and I feel that I have a lot to take under my belt before I can even get started professionally. I don't think one skillset is going to cut it even though that one skill set may be good. And if I do land a job on just the notion of programming C# code .. I can't see any reasonable development operation taking too long before the demands of my own job require me to be exposed to more. There's a lot to learn.

Now ... about how I kinda screwed the pooch.

While learning a new skill, it seems that one of the skills itself that is a pre requisite to the learning the craft of software development, is patience. 

Let's not forget more discipline than I think I was even born with. ..

I do mess with code every day and whenever I am exposed to a new concept I will open up a new project in Visual Studio  ... but it's not enough. I read too much. I watched too much. But didn't code enough. I'm hurting from this now I think ... yes, I also worry too much. But still .. there were many times where I read over concepts that I didn't fully understand and just continued reading and watching videos and then at some point I came back to code an entire application and realized I had screwed up. My time definitely wasn't wasted because I can see and understand the code and I understand what it means in my head but when you sit behind the compiler it is a different story. It's probably easier to understand a foreign language than to fluently speak it and master its laws. You have to know why you're doing what you're doing. You should sit behind your screen, open up a new project, and code that feature over and over and over until you grasp it fully. I would probably be farther than I am now if I had done that but still I am coming along pretty nicely. However, how do you know that? You don't. I don't have any beautiful repositories to flaunt. So my advice to anyone reading this who is just starting out ... just make sure to program. Make sure you code and fully understand everything without moving onto the next section. The reason I mentioned patience above earlier is because I'll be reading through an MVC book and trying to code my websites and then will randomly turn on a Pluralsight course for Windows Store Applications. That literally happened ... right now. I'm spending my day off tomorrow working on a Windows 8 application. But hey, that's just me. I see something and I wan't to do it right then and there. I'll pull up the documentation and find the answer to my question. Hopefully a trait I carry with me as I mature in my craft. 

Well this post has been long enough. This is another post about personal reflection for me. I share with you some personal things I encounter as a wide eyed developer and maybe you have had the same thoughts in your head as well. 

No comments:

Post a Comment