Showing posts with label Javascript. Show all posts
Showing posts with label Javascript. Show all posts

Friday, November 18, 2016

Playing around with ASP.NET

I am an aspiring web developer. The last several months I've been learning C# and working my way around the .NET framework in order to get promoted to work as an automation engineer.

Turns out I can get going on the web stuff with my newfound C# skillz! Visual Studio is an excellent tool that isn't very hard to learn and it turns out ASP is built right into it to churn out quality websites.

For those not familiar with ASP.NET let me tell you what it is. It is an open source and server-side web application framework. It is designed for web development and you can make a wide variety of web pages/applications with the various frameworks. This solution comes from Microsoft.

My limited experience learning ASP.NET helped me realize something important. Web development, and development in general often involves taking a framework, adding your components, and tweaking the things that are already there. 

I've often envisioned software development starting out by staring down an empty IDE and building something from scratch. I'm sure many successful projects start out that way. But the many tools at our disposal often build out common parts of our application so we don't have to. Kinda cool!

While building a website I knew that I'd like to give users the ability to create their own accounts with an email and a password. Not only that, I wanted to add an email verification step to the registration process. Turns out all of that is already built into ASP.NET!

MSDN has a lot of resources to help you get up and running. Although a lot of tools are offered, there is a great deal of flexibility in how you would like to build out your web app. Do you want two-step verification? What methods do you want to provide a user to recover their account in case they forget their password?

I'll share the website on here when I'm happy with it. For now, let me drop some of the resources I've been using.




These are all straight from the source. MSDN is an excellent resource for everything in the .NET framework.

Sunday, September 18, 2016

Finally an opportunity to prove myself.

Tomorrow is gonna be big. I'm having my very first training meeting with one of the test automation team leads. There's been a lot of preparation leading up to this and its finally time to start proving myself.

This is a situation that all self-taught programmers eventually face. Spending countless hours of personal time coding through online tutorials, book problems, and side projects will finally culminate to the moment that you can show your stuff to an interviewer and potential employer.

This begs the question: "when am I ready?"

When working through a traditional CS degree these steps are typically a little more straightforward. Go to university, start out in the CS program, apply for internships junior and senior year, and upon graduation start applying for jobs. So what happens if you're 26 years old, have a pre-med bachelors degree, and realize coding is your true passion?

If I had all the answers to this I would be writing a different kind of blog. Maybe when I'm on the other side of this and hacking for a living I'll spell it out for you guys. I'm right in the trenches with you. And full disclosure, I'm not heading into an interview tomorrow. Things are quite as intimidating as that. My company needs more automation engineers that are familiar with the product and that have prior QA experience. I think they'll be a little more forgiving of my shortcomings than an average cold interviewer. But that day is going to come. The day that I walk into a white-boarding interview and answer questions about algorithms and FizzBuzz.

So back to the question that was begged for. When will you be ready? There isn't one answer for everybody but I have a couple thoughts on the matter.

Learn the syntax and the ins and outs of an OOP language. It could be Ruby, Python, C++, Java, Javascript, ect. I chose Python because I've heard its a very beginner friendly language. If you are interested in a certain type of programming career then research which programming language will be the most useful and go with that.

Once you start feeling somewhat comfortable with the syntax start doing side projects. These should start out small and slowly ramp up as you continue to learn how to use new tools and techniques. These side projects and the material they cover will by far be the most important thing prospective employers will see so make sure you take it seriously. Lots of good ideas for side projects can be found HERE.

Take the projects that you are proud of and put together a portfolio, preferably on the website Github.com (more on that in a future post).

Once you've amassed a sizable portfolio focus your attention on interview prep. Interviews in this industry are unlike any other. You will be expected to demonstrate not only your knowledge but your ability to think on your feet under pressure. There are a lot of resources to begin prep. My recommendation (based on very little experience) is working through the book Cracking the Coding Interview.

After some of the more difficult problems become solvable, you're ready to start applying for jobs! Because of the lack of degree and experience you'll want to apply to a lot of them. By a lot I mean dozens every week. You'll get interviews, you'll rock the interview, and you'll lock down the job I just know it!

I'd like to get more in depth on each of these steps as I continue to write in this blog. In the meantime, wish me luck for tomorrow!

Sunday, September 11, 2016

OBJECT-ORIENTED PROGRAMMING

Last month I finished The C# Player's Guide. My boss plopped it down on my desk one morning in July. "You'll have to get through this book before you'll start pair testing with the other automation engineers." Challenge accepted, hefe. In about a month I got through each short chapter and came out the other end with a heck of a lot of C# smarts. 

 The first half of the book has a C# syntax flow where everything makes sense and has a clear progression where the last subject builds on the next one. Then thing start getting crazy. What I was surprised from the book was how abstract the concepts were getting. The simple explanations of C# syntax such as variables, classes, methods, and loops gave way to subjects such as inheritance, method and class overloading, aggregation and composition, and interfaces. There was a clear tonal shift and I was having a difficult time imagining the situations I would use the concepts that I was learning without more context.

Part of my issue in reviewing these things is that at the time I though thy were specific to the C# syntax. Boy was I wrong. It turns out that half of this book was reviewing OBJECT ORIENTED PROGRAMMING PRINCIPLES. The examples they gave for each principle was written in C# but could have easily been written in VB.NET, Python, Ruby, C++, Objective-C, ect. Have you ever heard the notion that it's easy to pick up a new programming language after learning your first? It always blew my mind that developers claimed to be applying and accepting offers for positions that required them to write in a language they had no experience in. Now it is starting to click.

I'm kind of embarrassed to admit that I didn't truly understand what object oriented programming meant until a couple weeks ago. I've been familiar with the term for quite some time but I just kind of told myself I had a basic idea of what it means. Boy was I wrong again. 

OOP vs. FP

There are two major methods to programming - object-oriented and functional programming. My little experience has shown that the trend is strongly going in the direction of OOP. Major languages such as Ruby, Python, C++, Java, C#, VB.NET, Swift, Objective-C, are all OOP. Other languages that you may have heard of such as Haskell, Perl, Lisp, and Clojure are used in FP. 

Object-oriented programming is based on "objects" which work as data structures that hold data  in the form of "attributes" and perform actions through code known as "methods". The idea is that users use common parts of the program, however they often work various "instances" of these common parts. Each bank account, user profile, game save, and food order hold common functionality but different data. An object can be created and maintained for each particular situation the user requires. You can begin to see how this  dynamic form of programming can be powerful in the hands of developers.

Functional programming is a different animal but in the end strives to accomplish a lot of the same things as OOP. My understanding of FP at the moment is only what the internet tells me- I've never been hands on with it. Using FP is designing and building the structures and elements of the program by evaluating mathematical functions. FP typically avoids changing-state and mutable data. An example of mutable data is something that can be changed after it is created, such as a password for an online profile or a heart rate tracher on a smart watch. Many consider FP to be a much more procedural and cumbersome coding process.

My bias and lack of knowledge/experience are painfully present in this article. But isn't that beauty of starting out? You'll see me write plenty more about OOP as I continue learning how to make awesome shit with Python, C#, and soon Javascript. Six months from now I'll look back at this post and laugh and I wouldn't fault you for doing the same now.