Thursday, December 26, 2019

Are you a Full-Stack or T-shaped developer?

When I first started programming as a profession in 2000, the idea of a cross functional developer was still in an infancy.  However, I suppose, the idea originated with the mainframe.  There, you would find a COBOL developer who knows SQL.  Mainframe developers know those two programming languages due to the coupled nature of SQL and COBOL.  It didn't make much sense to have a DBA or SQL-only expert come in an 'install' SQL to your COBOL program.  In today's world those two concepts compose two parts of the three-tier architecture application; business logic and persistent storage.

No one talked about full-stack or T-shaped developer just 17 years ago.  Today, it's a big deal.

Term review:
Full-Stack Developer:  A developer who can easily cross tiers of an application by creating usable solutions.  The three tiers commonly associated are presentational, business logic and persistence.  This developer has skills in: JavaScript, HTML, CSS, an OO-language like Java or C#, and SQL or noSQL database concepts.  It is also becoming increasing clear that some sites may skip over the OO-language in preference of JavaScript for their business logic tier.  What's also become useful in a DevOps world as well are skills related to configuring the platform where all of the above is going to run.

T-shaped Developer:  A developer who has a breadth of knowledge (the top line of the T) and a depth of one or a few skills within that knowledge (the down line of the T).  To a degree the Full Stack and the T-shaped developer go hand in hand.  However, a T shaped developer may also include skills related to project management, business analysis and people management.

I look for both types of developer depending on the role being hired for.  If I'm looking for a pure developer; a coder with headphones on most of the day, churning out commit after commit, and interfacing with other developers, then I'm looking for the Full-Stack variety.  If I'm looking for a lead or senior developer, then I'm looking for the T-shaped developer.

What do you need to get there?
First, I think a Full-Stack developer becomes a T-shaped developer over time.  This is a natural progression as you become more experienced and have the social skills to push properly for your vision.  Therefore, T-Shaped is really a very experienced Full-Stack developer!

So how do you become a Full-Stack developer?  Lots of training.  I think you have to spend time on your own to find the bits, pieces and parts that make up the above description.  The world is about websites and mobile applications; you can make your own on your own time.  There are plenty of tutorials to cover all of the technologies involved in a Full-Stack developer.  You just have to invest the time.  Finally, I think you have to put yourself in a professional position to do all of the above as well.  Interviewers like experience that involves for a business and what you do on your own.  You have to have both.  That will set you apart from others.

Conclusions:
A full stack developer is a T shaped developer!  Being human we are unlikely to be able to master many disciplines at a high level of performance in each.  Full-Stack Development is a starting point.  You can get going on the three tiers and see where that takes you as you go deeper and deeper into software development life cycles.  Good luck!

Sunday, March 12, 2017

The Most Overused Term in Software Development

The POC ... Proof of Concept.

You're boss/architect/design authority comes to you on Tuesday after that three day weekend and says "I was reading up on Spring Boot this weekend.  Looks neat.  Should solve some problems for us.  Lets do a POC."

You roll your eyes ... internally for fear of losing your job.

The reality is that Spring Boot and most other Open Source Software you can name is proven to work!  The concept is that you want to use Spring Boot and you need to provide proof that it works is just silly.  Really, what your boss is saying is that they want you to learn about that software and get to work implementing it.

Now, does the POC exist?  Yes, of course it does.  Let's say that same boss comes up to you and proposes combining two or three pieces of software that no one has EVER done before or has some new pattern of software to create, then yes, that's a proof of concept.

So next time, gently correct this misuse of POC to training.

Saturday, December 10, 2016

Intellij and React Native Projects

If you want to add your existing React Native project to your Intellij project as a module do the following:


  1. File > New > Module
  2. Click Static Web > Static Web
  3. In the 'Content Root' box, enter the location of the existing React Native directory.
  4. Click Finish
The reason you have to do it this way is that the Intellij Import Module from Existing Sources wants to find a source / setup for the module.  The problem is that you've got three different code streams in your React Native project:  1) Java for Android, 2) iOS XCode files and 3) React JavaScript files.  My experience has been that the Intellij scanner picks Java over JavaScript and ignores the rest of the directories.


Back to Comcast, No more AT&T

Well, I'm back to Comcast.  Can't beat 75 Mbps for $49 a month for a year.  AT&T just can't keep up with speed and prices.  Since we've cut the cord and stream just about everything, the extra Mbps are really great around here.

I did run into a bandwidth issue with my older Netgear N600 router.  The router was not giving us a good chance to get a hold of the 75 Mbps over wireless.  The router was working fine over an Ethernet connection.  On wireless though, you would get anywhere from 15 - 20 Mbps on any wireless device.  I concluded that only an upgrade in the router would fix the issue.  I bought a Netgear Nighthawk AC1900.  Wow, what a difference!  I suspect the underlying issue was that with 2 iPhones, 2 iPads, 3 laptops, 2 Kindles, 2 Rokus and a PS3 we hit the limits of the N600.

Finally,  I just realized that for the first time in 16 years I won't be paying anything to a traditional landline company (Southwestern Bell, AT&T).  At one point we had, Uverse and AT&T wireless.  I calculated that we were paying them about $340 a month in services and equipment.  You would think someone at AT&T would notice that and come-a-knockin', but I won't be waiting by the phone for a call from them.

Anyway, happy for a year.  Let's see what kind of deal I can get next year!  I had my eye on a three year deal for $50 with 150 Mbps!

Saturday, October 1, 2016

I've gone Mac

I've had some form of a PC since 1986.  I used to think Mac was terrible.  It was a special animal that didn't play well with others.

Then I got one.

In early August, I was wanting to build an iOS app.  My wife had come up with an idea for one and I knew that a native app was needed for full integration of the requirements.  I first built a web app to get it going.  I had picked out a MacBook Pro with 256 GB HD and 8 GB of RAM.  I have to say that a Mac is the way to got these days.

Pros:

  1. It is fast.  With the SSD drive, Intel Core i5 processor and 8 GB of RAM, you won't be without speed.  Compared to my platter drive, Intel Core i7 and 8 GB of RAM on my HP, I never feel a slow down while it is trying to figure out whats going on.  
  2. The screen is killer.  It's so sharp it's hard to believe that I could have been doing with out it.  My HP Envy 17 is terrible.  To some degree I think that's because I wound up turning the brightness down pretty far to save battery.  In general though the Retina display is just that sharp.
  3. The battery keeps going and going.  With the HP Envy I would fret about being on the battery as I watched it go down during my commute.  I would definitely have to charge it overnight to use it the next day.  Now, I can use it for two days (approximately 8 hours of usage) before I need to plug it in to charge.
  4. Integration.  I have an iPhone 6s Plus and the great thing is that my Mac works with my iPhone like never before.  If I get a phone call my Mac can pick it up, assuming were both on the same WIFI connection.  I can FaceTime and send iMessages through my Mac as well.
  5. Weight.  I was commuting with the HP Envy 17 plus my work laptop.  I think the total weight was about 12 pounds in my back pack. The Mac is so light that I barely know its there.
Cons:
  1. It is a bit smaller.  I do miss the screen real estate of the Envy 17.  This MacBook is the 13" model.  I didn't want the 15" model due to cost and reduced battery performance.  I also loved the additional numeric keypad on the HP Envy.
  2. It's one of those things of when you need it, you need it.  There is no optical drive on the Mac.  I had to burn a CD (gasp!) for my wife's car and I had to use her computer to do it.  A few times as well, I've thought about plugging into my Ethernet port on my router.  I would need an additional adapter to do that.
All in all, great machine.  I use my computer even more often now!

Saturday, February 6, 2016

Shaving the cord

All in, we were paying $175 for AT&T Uverse TV, Internet and Phone.

In terms of the cost, we didn't have a trouble with the bill.  We had trouble with the value.  As you scroll through the list of channels you realize that you watch about 25% of them and wonder if anyone watches some of the more extraneous ones.  Phone service was $45 a month for unlimited calls across the country.  While I believe in the 'home phone' I don't think it should cost that much.  Internet is in the 18 Mbps range for about $30 a month under the bundle.

We could afford it.  Keep going on until the bundle deal runs out.  Why though?

Courtney and I decided to trial run a 'cord shaving'.  Here is what we did:
  1. We disconnected the Uverse DVR from the TVs.
  2. We bought a Mohu Sky 60 and I installed it in the attic.
  3. We bought a Roku Stick for one TV.
  4. We planned on using Amazon Prime, Hulu, Sling and CBS All Access for streaming services.
  5. We already had a Chromecast.
At least in the trial run, we wanted to keep recording our shows on the Uverse DVR if we didn't like how it was working out. The antenna supplies digital over the air (OTA) signal to all TVs in the house.  The quality is fantastic and it's FREE TV.  The theory on the antenna was that if it didn't work out, we could still use the antenna in some capacity.  The Roku Stick is usable anywhere in the house and we figured what it provided, again, if we didn't like how it all works, we could still use it.  The Chromecast helped with the TV in our master bedroom.  We used the Chromecast to send to the TV the services we wanted to watch using our phones.

If the trial worked out, we planned on adding another Roku and switching phone to Ooma.  The additional Roku was to give a unified experience across TVs in the house.  Chromecast depends on applications being coded to be able to cast to the nearby dongle.  The problem I found is that the casting can be spotty with connection issues or quality.  

The trial lasted about a week.  We were sold.  There really wasn't anything that we were missing from Uverse TV that we couldn't get over the internet. We could watch football for free on a high quality signal. The shows that we really watched were there on the streaming services.

Costs:


Category Item Up front cost Monthly cost
Air Antenna Mohu Sky 60 $160 None
TV device Roku Stick $49 None
TV device Roku 2 $59 None
Service Amazon Prime None $8.25 ($99 a year)
Service Hulu None $7.99
Service SlingTV None $19.99
Service CBS All Access None $5.99
Device Ooma Telo $150 None
Service Ooma None $5.62
Total $418 $47.84

With the Uverse Internet cost of $59 a month.  I'm at $106.84 for Internet, Home Phone and TV.  A savings of about $70 a month.


Pros:
  • Buy the television programming that you watch
  • Own the equipment that you use
  • Freedom to choose the equipment that you use
  • Better quality with OTA
Cons:
  • If the internet is spotty, your TV watching may be interrupted
  • Up front costs are high
  • You cannot pause live TV
In short, this shave project was a success.  Now, where's that remote?

Sunday, November 1, 2015

Back to iOS: my year long review of Android.

In July 2014, I had enough of iOS.  See my post from then: I've gone Android

Now, in November of 2015, I'm back with iOS and an iPhone 6 s Plus.  Here are my observations of having an Android phone.

  1. Security.  I've noticed that there are lot more discussions on viruses and malware in the Android ecosystem than you've ever heard about from Apple.  I found it awful that my text message client had to guard against 'Stagefright'.
  2. Fragmentation.  It's awful.  It's very hard to get a good experience with Android when manufacturers like Samsung roll their own applications. Take the Clock application; something so basic and simple, yet Samsung required themselves to rewrite it for TouchWiz.  What does this really mean?  Slower time to market with major updates.
  3. Application Updates. Believe it or not constant application updates are annoying.  Every night my phone would be updating to the latest version of some application.  I don't know why this is completely necessary.  However, I have to believe that the changes are necessary to keep the applications working with the changing environment including point #1.
  4. Major Updates.  Google released Android Lollipop to the manufacturers on 11/3/2014.  It wasn't until April 2015 when I got the image pushed from AT&T.  As a software developer, I know that this is good turnaround time assuming that the first time Samsung saw the code was on 11/3/2014.  Reality might be that Samsung saw developer previews as early as June 2014.  As a consumer, however, this is dog slow.  Why did it take so long?  First see point #3.  Second, don't forget that in the Android ecosystem, the carrier pushes your update to you.  I know that AT&T also included some of their applications in that image.  Finally, just before I got Android 5.0, AT&T upgraded me to Android 4.4.4.  Why was that necessary?
  5. Bloatware. I don't need another account to login to, Samsung account.  I don't need another place to store information.  That's what Googles services are for.  I don't need any of the AT&T applications that were automatically included in the version of Android I had.
  6. Customization.  How could that be such a bad thing?  Android is way better at it than iOS, but I feel as if ability to customize comes at the cost of battery life.  Example, it always seemed to me that an application that you replaced was still running in the background anyway. I used Nova Launcher instead of TouchWiz for most of my 16 month experience.  At one point, the widgets were not updating while on Nova and I finally figured out that when applications were updated, the launcher would some how restart and defer to TouchWiz to update the content in the widgets.  I fixed this by clearing out the data in application manager for TouchWiz.  It was a hard to find fix.  Finally, Android gives you the option to choose default applications for a lot of what you do.  Like Windows, this allows you to use Google Chrome over the built in Internet browser from Samsung.  The problem is that it's not a very good defaulting system.  Repetitively, I was asked what my default for this action should be.  Should Android open the link in Adobe Reader, Google Drive Reader, or Google Chrome?  You could touch Always and that should use that application permanently, but it never seemed to work seamlessly.
  7. Other Phones. A few months ago, I was looking at what would be my next Android phone.  I was dead set on a Moto X Pure Edition due to a lot of the issues mentioned above.  Supposedly, the camera was decent even though Motorola has had a poor history with their cameras.  A lot of the reviews mentioned that this is the phone to have if you want a 'pure' Android experience and a bit more than a Nexus phone.  This point proves that there is just too many choices out there.  This is where Google needs to take back Android and make it "this is the OS, you can't make it your own manufacturers!"  That way, the choice comes down to hardware.  Screen size and quality, faster processors, better cameras, faster fingerprint readers, etc. now become the choices in your Android phones.
  8. Battery. In the waning days of my experience with Android,  I had gone back to TouchWiz and turned off some of the other customizations I had because the battery would drain to 20% before 5 PM after a full charge the previous night.  One day it was drained to 20% by 12 PM.  I can't say why this was.  When I looked at the built in battery monitor, it basically said the major culprit was Android System and Android UI.  In previous reviews, it had been ESPN and Bluetooth.  How could Bluetooth consume 15-20% of your battery when it was only connected to another Bluetooth devices for less than 30 minutes earlier in the day?  I suspect some update caused Bluetooth to behave this way.  I also suspect another update fixed this.  I can't say which one though.  ESPN I uninstalled completely due to battery drain.  I didn't see a fix that I could do.  With Bluetooth, I turned it off for awhile, deleted any connections I had, etc.  This was a temporary fix.  The best battery life I got was when I reset my phone completely.  As you might expect once you start adding in all of the applications you like/need then you start to experience an abnormal battery drain.
In short, it wasn't a rosy experience.  Do I have anything good to say about Android?  Yes, it was different than what I had before. Integration with Google services is good, but I don' t really think it is 100 times better than what you get from iOS applications for Googles services.  Difference is good for awhile until that difference has issues.  Then it's just annoying and you go back to what works.