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.
Wednesday, June 25, 2014
Thursday, June 12, 2014
60 days with C#
Two months have gone by. At this moment I’m not sure a “career”
alone is what motivates me and keeps me going with learning to code. I think it’s
… the code. I’m a geek. I love this. I love computers. I love motherboards, CPU’s,
GPU’s, I’m an avid builder and hobbyist, and I love following tech sites. I
love what’s inside. Development is just one more thing. However it’s more
intimate. It’s at its deepest level. It was going beyond what I’m used to
because it’s going inside and being
able to give life to something. It’s wanting to know why. So I am happy where
I stand at sixty days with C#.
So where am I?
Ok, well I can’t be the software development “judge” and
deem what I have mastered and how much of a “rock star” coder I think I am at
the fundamentals … but I would have to make the statement that I am pretty much
there. I have been exposed to every
fundamental element of the C# language. I will say again – fundamentals – of the
C# 5.0 language. However my education … has only just begun. And I hope it to
never end.
- Access Modifiers, Namespaces, and Scope
- Reference vs Value Types
- Boxing and Unboxing – Stack vs Heap
- Methods w/Polymorphic features – virtual/override
- Extension Methods
- Objects and Classes – Partial Classes – Abstract Classes -Inheritance
- Interfaces
- Structs and Enums
- Decision making – conditionals
- Exception handling
- Operator overloading
- Anonymous types
- Asynchronous programming – async & await keywords
- Generics
- Collections
- Generic Collections – .. List<T> .. Stack<T> .. Queue<T> .. HashSet<T> ..etc there are more of course.
- Using iterators to loop through these collections and understanding the IEnumberable<T> generic interface and its GetEnumerator() implementation.
- Delegates and their role with –
- Events
- Lambda Expressions
- Language Integrated Query – LINQ
As stating in other posts, Pluralsight has
been a huge help with amazing instructors like Scott Allen, Shawn
Wildermuth, Jesse Liberty, Dan Wahlin, and so many others.
Books from Adam Freeman and John Sharp as I listed in the last post. The most I
really learned from a book was in John Sharps book Microsoft Virtual C# 2013 Step by Step. This book broke every
component of the language down step by step and provided helpful coding
examples with real world scenarios in developing .NET applications with C#. Again,
I recommend it for any beginner developer just now trying to tackle the
language or a more seasoned developer who may want to inspect an element of the
language more closely.
So Where from here?
Well coding of course. I will always try to
master these core fundamentals and put them into practice by choosing an area
of the language to focus in. For me right now it is Web Applications with
ASP.NET MVC, Web API, and Entity Framework. For others it may be Windows Store
Apps, Windows Phone 8.1 apps using XAML, or even WPF and classic Windows Forms.
That’s the beauty with this language, it is used EVERYWHERE. In fact you
don’t even have to stick with just Windows. With the help of Xamarin you can develop applications
across Windows, Android, and even iOS using just one language – C#. Oh and don’t
forget video games and entertainment with Unity! There’s more than that, you
really should go check out how many solutions there are for developing video
games of all different sizes with C#.
So I will continue to code and stay fluent with
the fundamentals of the language while exploring new areas of the .NET
framework. Right now I am working my way through the Adam Freeman book I
mentioned in the last post and am actually choosing ASP.NET MVC to develop my
personal site and portfolio with, using Windows Azure as the hosting service; which
I would recommend using. It’s affordable, scalable, and of course integrates
nicely and directly with Microsoft tools like Visual Studio and WebMatrix. I will
also be reading the legendary C# in Depth
by StackOverflow.com legend, Jon Skeet. And while coding and reading I’ll
always be watching the latest trends online and following blogs, watching
videos, and reading as much as I can. After learning the fundamentals of this
language I now want to study good software development techniques and practice
writing effective and maintainable code. I also want to take advantages of
tools and techniques that sharpen our abilities and expand the rigidity of our
code, for instance using DI containers like Ninject and StructureMap where
needed, as well as Test Driven Development with Unit and Integration testing.
So this is an achievement for me. Moving
through the basics and now putting them into practice as much as possible while
always learning and wanting to improve. There’s always a lot to be reading about
so I’ll be staying busy. I will be creating some future posts about more in
depth information pertaining to the internals of C# and the .NET framework.
Showing code examples of some of these fundamentals and how they can be applied
when coming from another language or framework. It would be good to compare and
contrast some things I have observed. Before coming to .NET the only development
experience I had had was an introductory course using the basics of HTML/CSS
and about six months of Javascript. Just the concept of implicit vs explicit
typing (which yes, now in C# you can implicitly declare variables and let the
compiler decide what they are at runtime) and the concept of classes alone made
me feel like I was looking at something totally new. Well off to enjoy the rest
of my weekend. I’m feeling good about moving deeper into these technologies and
will continue to share these thoughts and feelings with you (and myself) as the
journey continues. I hope to have my site up and running as soon as possible so
I can have something other than my blog to show. I’m still working on setting
up dates for my first client project with the salon stylist so I can build a
commercial website for them (using ASP.NET) and hopefully get familiar with Git
very soon. I’m a little late on
that.
So, plenty to hear and see from me soon!
And one more note as far as a good bit down
the road, since I do love client technology and the strides that Javascript has
made as the language of all and any, I do want to dive deep into developing
with the MEAN stack, as well as
integrating client side MVC technology such as Angular JS in with .NET applications. … But that’s down the road.
One day at a time. Because I also have a Java class coming up in school I have
to prepare for. I’m sure you will see quite a few posts on my journey through
Javaland during that semester.
Hey I’m trying to get some more Twitter
followers ..and heck even find some more cool people to follow, so hit me up!
@dptech23
Subscribe to:
Posts (Atom)
