Journey becoming a dev...continued

Welcome again to my story of “becoming a dev”. It’s a journey that started about four months ago. I reflected this past week. The amount of progress in a short amount of time is amazing. I’m not ready by any means to architect a complex, mobile application with lots of features.  

Serverless is making more sense now! How you ask?? As part of my journey, I purchased steveschofield.me and hosted within my free tier of AWS (https://aws.amazon.com/free ). I created one REST API in API Gateway fronting my lambda function. I used the API Gateway “proxy” mode to pass the entire REQUEST object to Lambda. For me personally, that seems to make more sense in this stage of my learning.  

All I have to do is return in the RESPONSE is status code of 200. My Lambda function eventually will retrieve more data from a DynamoDB table or S3 bucket (or both) :). I have another resource I plan on using where it will use POST to another Lambda function via API Gateway.  For the time being, I return static text from my GET REST endpoint. The data represents what will eventually be returned.  Learning more about https://nodejs.org/en/ is on my to-do list.

I’ve developed using Xamarin (https://dotnet.microsoft.com/apps/xamarin) a concept app, which calls my REST (GET) endpoint in AWS, displays data on a iPHONE and Android emulator. It took a while to understand how to call an endpoint within C#. I have the basics working, the XAML page isn’t ready, but at least pulling back data from Lambda. The code is at the bottom.  

I’m trying to understand the MVVM design pattern. https://www.raywenderlich.com/34-design-patterns-by-tutorials-mvvm. My concept app doesn’t use that pattern yet although I plan to implement, at least understand the concept in future builds. Data Binding is another concept that is making more sense. I took a few days and went through a UDEMY course by Mosh Hamedani (https://www.udemy.com/xamarin-forms-course/l). His course was helpful in understanding basics of Xamarin, code behind and a good section on MVVM (model, view, view-model). The naming could be better although, the more I work with it, hopefully it’ll stick :). 

Another thing I’ve recently taken up was listening to podcasts. Since I’m a new coder, some searching the internet found a site called www.codenewbie.org. They have a good variety of podcasts targeted at newbies, maybe not more seasoned IT guys like myself, but the content is useful. I listened to one from 2018 https://codenewbie.org/podcast/whats-it-like-to-be-a-coding-apprentice.   One profound statement mentioned in this podcast. When you first start coding. You’ll not be writing much code as much as reviewing, troubleshooting and learning someone else’s code. My current role in dev support is spent trying to reproduce errors (which can be hard), debug known crashes and other errors in a large existing application. I’ve been doing many of these things mentioned in my previous statement. 

In previous positions where I was the person leading and training others. I gave them “safe”, “existing” problems to spend time learning, asking questions and becoming more familiar with concepts within the environment, application and occasional scripts.  This time around, I’m the person being trained. Concepts such as “interfaces”, “Object-oriented” and being implemented on a large app is a bit overwhelming. 

Listening to the podcast helped measure my progress so far, since taking this role a few months back. I’ve spent approximately two of the four months training. Either in AWS concepts for server less, Xamarin or other basics. I’ve only spend about 2 months doing the actual position, which isn’t much. I’ve had the ability to learn more about using Github, working with Visual Studio for Mac debugging apps on Android and iPhone. Putting test code on both emulators and real devices.  It makes me smile putting source code on a device (emulator or real) compiled from my MacBook. This is right down nerdy!  

I’ve started to listen more podcasts on Codenewbie.org while driving home. I’m looking for other code podcasts discussing more abstract concepts around interfaces, OO and other programming design patterns. I like to understand the “why” behind many things. 

In my early part of my career, I was blessed to be involved with many SMART folks such as Scott Guthrie, Steve Smith, Scott Mitchell and MANY others in the ASP Insider community (yes Wally, if you are reading this, you too). I didn’t continue to pursue a dev career then. My day job was more infrastructure / app architect & engineer. 

Part of the journey becoming a dev is working with other full-time devs. I’ll admit, working with younger people is amazing and I’m humbled they are taking a guy who is transforming his career to becoming a dev. They are patient, explain concepts and handle my many questions, even simple ones at times. Working within an Agile group is also interesting. This has been amazing to witness a high functioning group that each person is very talented , living Agile methodology to deliver products and services with high quality and standards. 

One of the other podcasts I listen to was by “Why you should read the new edition of the Pragmatic Programmer Dave Thomas & Andy Hunt. They wrote a book 20 years ago and re-released recently. I was just starting in my IT career, many of the things they reference, I could relate to. I plan on picking up a copy of their book and going through it. Here is the link to the podcast. https://www.codenewbie.org/podcast/why-you-should-read-the-new-edition-of-the-pragmatic-programmer 

As I wrap up this post regarding my continued journey. I hope to keep learning more about Interfaces, OO design, MVVM, Javascript and NodeJS. My concept app has a couple of features I’ll work on getting implemented, and potentially releasing one day. Like I did in prior phases of my career. Doing something on the side such as a “concept mobile” app leveraging a Serverless backend helps learn better.  

Learning to be a dev is scary, although I woke up after a rough day (intense debugging and other things) to smile and be thankful for the opportunity. Given more opportunities help me get better and hopefully be ‘writing code’ as well as troubleshooting more. 

Anyone who is afraid to make a career change like I’m doing. it’s been refreshing, challenging and exciting to move forward. A lot of the plumbing and other things that bogged down IT in its early days are solved by leveraging cloud technologies. I like to learn, share what I learn and helps keep things fresh. I work with talented people, which makes the journey more amazing. 

Here Is code:

poemDetails.cs

using System;

using System.Collections.Generic;

using Newtonsoft.Json;

using System.Net;

using System.IO;

using System.Diagnostics;

namespace HelloWorld

{

  public class PoemDetails

  {

    public string poemTitle { get; set; }

    public string bookKindleLink { get; set; }

    public string bookSoftCoverLink { get; set; }

    public string bookTitle { get; set; }

    public string poemNumber { get; set; }

    public string scriptureLink { get; set; }

  }

}

RestService.xaml.cs

using System;

using System.Collections.Generic;

using Newtonsoft.Json;

using Xamarin.Forms;

using System.Net;

using System.IO;

using System.Windows.Input;


namespace HelloWorld

{

  public partial class RestService : ContentPage

  {

    public ICommand TapCommand => new Command<string>(OpenBrowser);

    private string _bookTitle;

    private string _poemTitle;

    private string _scriptureLink;

    private string _poemNumber;

    private string _bookKindleLink;

    private string _bookSoftCoverLink;

    public RestService()

    {

      Steve();

      InitializeComponent();

      BindingContext = this;

      bookTitle.Text = _bookTitle;

      poemTitle.Text = _poemTitle;

      scriptureLink.Text = _scriptureLink;

      poemNumber.Text = _poemNumber;

      bookKindleLink.Text = _bookKindleLink;

      bookSoftCoverLink.Text = _bookSoftCoverLink;

    }

    void OpenBrowser(string url)

    {

      Device.OpenUri(new Uri(url));

    }

    private void Steve()

    {

      string url = "https://api.example.com/stage/word";

      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

      string jsonValue = "";

      using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)

      {

        StreamReader reader = new StreamReader(response.GetResponseStream());

        jsonValue = reader.ReadToEnd();

      }

      PoemDetails details = JsonConvert.DeserializeObject<PoemDetails>(jsonValue);

      _bookTitle = details.bookTitle;

      _poemTitle = details.poemTitle;

      _scriptureLink = details.scriptureLink;

      _poemNumber = details.poemNumber;

      _bookKindleLink = details.bookKindleLink;

      _bookSoftCoverLink = details.bookSoftCoverLink;

  }

    void OnAdd(object sender, System.EventArgs e)

    {

    }

    void OnUpdate(object sender, System.EventArgs e)

    {

    }

    void OnDelete(object sender, System.EventArgs e)

    {

    }

  }

}

To view or add a comment, sign in

Explore content categories