The difference between a Jr & Senior programmer at Gitlabs

https://about.gitlab.com/jobs/build-engineer/

 

Junior Build Engineer

Junior Build Engineers are developers who meet the following criteria:

  1. Technical skills
    • Is able to write code in required languages but needs guidance in writing modular and maintainable code
    • Has less experience to no experience with containers
    • Proposes default configuration to reduce the need for configuration by customers
  2. Code quality
    • Leaves code in substantially better shape than before
    • Is able to write clear documentation
  3. Communication
    • Needs help with time management
    • Is able to follow technical conversations within the team
  4. Performance & Scalability
    • Needs help writing production-ready code
    • Has little to no experience writing large scale apps

Senior Build Engineer

Senior Build Engineers are experienced developers who meet the following criteria:

  1. Technical Skills
    • Are able to write modular, well-tested, and maintainable code
    • Know the domain really well and radiate that knowledge
    • Contribute to one or more complementary projects
  2. Leadership
    • Begins to show architectural perspective
    • Proposing new ideas, performing feasibility analyses and scoping the work
  3. Code quality
    • Leaves code in substantially better shape than before
    • Fixes bugs/regressions quickly
    • Monitors overall code quality
    • Reacts efficiently to build failures
    • Creates test plans
  4. Communication
    • Provides thorough and timely code feedback for peers
    • Able to communicate clearly on technical topics
    • Keeps issues up-to-date with progress
    • Helps guide other merge requests to completion
    • Is able to help with recruiting
  5. Performance & Scalability
    • Excellent at understanding the cost of a change
    • Excellent at writing production-ready code with little assistance
    • Able to write complex code that can scale with a significant number of users

Rails way? Rendering partials

Laying out some thoughts for myself here ...

So, I’ve been inserting partials for awhile …

At first I was sending only rails generated & cocoon gem partials.  Using the collections method I think.  :f => @controller_declared_model

When reading again from the rails guides – Link – I found you can feed in an array of values.  The documentation claims you can then render the layout of each with no effort.

I’m trying to find a way to feed a partial a controller declared dataset, which would allow me to create subsets of the Player.all & feed them in to be rendered.

Local or collection seems to be it … but I’m curious if these will still allow me to use the rails magic in links for editing/viewing etc.  More to follow when done testing.

Github’s extra features – issues versus projects – TDD/BDD

Trying to document a bit of what I am up too in the hopes it helps my workflow process improve.

Supposedly, when ADHD or tired this workflow will help you concentrate in order to be productive!

I’ve been hanging out on my github.com project lately.  Using the Issues List as my per task driver for the TDD/BDD stuff.  I’m actually listing out each command with a checkbox as my aid for doing & reversing the code I’m working with … usually the second time.  I also tried the “projects” thing off github’s repository … the feature is pretty meh for control though.  My frustration is that I can get check boxes and exacting lists of whatever length I want from the Issues list.

I really hate the idea of cluttering up my github issues list on projects which might get a volume of people (obviously my early stuff won’t suffer from this syndrome), so I’m attempting to shoe horn projects in to that role.  Currently, I’m using projects to describe the title of what I’m doing & Issue’s with check boxes the behavior that needs to be fixed along with the steps taken to fix the issue.

By no means am I an expert – more of a new guy imitating what I see other people doing.  So here’s my screen captures …

Version & date your guides – lol?

Let me preface this by stating, I’m grateful for any information on the internet.  I fully believe more is more.  For the context of this article – when beginning – you are looking for ways to judge if a guide/article will help you.  Some rather simple information at the beginning can prevent an article from wasting the time of a beginner.

Also, I’m a rank beginner when it comes to all of this …


I can follow tutorials.  When following tutorials there was usually 2 issues I had on a recurring basis…

  1. Out of date – this far and away would trip up everything
    1. Many tutorials didn’t have a front page detailing when they which versions they used.
    2. Sometimes the version gotcha’s was a note in the body of the instructions, buried pages in & effectively not there when you are just trying to decide if you should even bother reading it.
    3. Some tutorials did not even have a date on them or even a year
  2. Small errors and a beginners lack of knowledge to judge when the issue is bigger than a typo somewhere.
  3. Contextual issues.  When someone in their tutorial thought they clearly laid out or assumed everyone reading would automatically know something.  Mainly an issue if the guides didn’t include a “who’s this for” type front page disclaiming things.  Which platforms & addons/gems etc?

Now, how to better use your time …

Since I’m beginning to get more savvy to these types of things – I’m noticing not even the rails guide holds super easy documentation.  Googled me some rails guide for routing…one of first hits splashes me down here …

railsguide

The vaulted guide here does have documentation of the version number it works with ..  but the user has to know that they can click RailsGuides header/home & then they will get the information they need to see the version.  This page is one of the better of the examples – as the information is available – even if you have to hunt for it.  I feel like it looks simple & that was the purpose, which it accomplishes.

It is still missing the date of publication & updates that new changes or last minute things might cause new users pain.

My current rule when first googling away is that if I can’t find a version/date on the guide or article – it’s worthless to me.  When I get more desperate, and there is no good help – I will default to articles/guides with the date built into the URL, then default to articles which I can click somewhere to find notes/readme/help section – but no more than a mouse click away when scanning through articles.

If the author’s skill level is too low to explain the context or mention the version – they probably aren’t going to explain the topic well enough to be helpful to you anyways!

 

Programming – beyond the theory of working

I’ve been thinking about how will I use my skills should I choose to do this programming thing on the internet?  I know that project treehouse has a thing where once you complete it they put you in touch with charity groups in need of help.  I also realize somehow you need to drive traffic to your information in order to get business.  Beyond that is a mystery.

So far my plan looks like this …

  1. Keep day job.
  2. Learn to use github, because git is great…and your resume these days.
  3. Learn to program in ruby on rails.
  4. Learn to program in symfony2.
  5. Keep adding different java flavors
  6. Maybe get into objective-c for apple applications or learn one of the translator languages which will public my app to all mobile devices for me.
  7. Something.
  8. Instant fame and riches.
  9. Maybe do something like this over weekends … SoFetch
  10. Quit day job.
  11. Work from home, the coffee shop or anywhere in the world I end up.
  12. Only work when I want, like a slow weekend or 3 AM, after lunch, not at all for a week.

I have a feeling that I’m missing something in between “learn to” & “instant fame”…which by the way, I’d prefer not to be famous – but it seems like a good end game.


 

So I’m still exploring what people are talking about…

  • 6 ways to make money – Link
  • Types of programming
    • Full stack developers on the web … salary
    • Front end developers on the web … salary
    • Back end developers on the web … salary
    • Graphical artists on the web … salary
    • UX/UI Designer on the web … salary
    • Phone App[lication] developers … salary
    • Software Engineers … salary
    • Software developer … salary
    • Desktop Application Developers … salary
  • Types of places I’d want to work
    • Where I’m the only tech person
    • Where I’m not the only tech person, but the only web guy
    • Where I work from home or where ever I choose most of the time
    • Shops that use virtual hosting off other larger companies or just run the servers themselves
  • Where should I work?

Learning to program webpages & web applications

What to learn with…


Updated 2016 December – after 100+ hours of podcasts etc along with 300 hours of dev time.


So this is just what I’ve experienced and tested.  I started out looking for free programs and tools to use to see if I liked coding web pages.  Three years ago, NodeJS had not seen the surge it is now in the java side of things.  Currently, Phoenix/elixir, Ember.js, flask/elixir & symfony2 look amazing.  I plan on doing more with them later.  To search for more yourself, try googling – full stack developer – which is anyone who handles both the database & server structure along with how the page will look.  This is the layout of resources I’ve actually used myself.  It does not include much on the process of how to build a career or get hired.  I’ll try to post something on that another day.  For now I have this from the snippets I found in my drafts … Link .


So you want to learn to code … but what way works best? … [ExplanationLink],[Quiz Link]

Online class formats

Free:

  • Ruby tutorial called – https://pakyow.org/docs/warmup/view – html & ruby in place of java for everything including chat clients.
  • Great pre-checklist of things to touch on before doing a class … [Link]
  • Project Odin:  learn a smattering of languages & focus on ruby on rails after … [Link] … my favorite class for how they explain.
  • CodeAcademy … [Link] … education site, I used their free java, java objects, javascript, jQuery, ruby, ruby on rails, RoR auth, python
  • Udemy … [Link] … education site, I used their free java program.  They have a great selection of nontechnical skills like wireframing to design, then skills that are intermediate to advanced like server pooling,
  • Udacity … [Link]
  • Coursera … [Link] – some free
  • eDx … Cloud Computing … [Link]
  • Free Camp Coding … [Link]
  • Project TreeHouse … [Link] … used to be free, has a trial these days
  • Cave of Programming … [Link]

Other guided learning paths

Ruby Tutorials

Beginning to end walk through’s of making things

  • Sinatra … [Link] – a simplified single page application on the web based using Ruby code, sharing many of the things that Ruby on Rails does.
  • Ruby on Rails … [Link].  Rails is the defacto structured language framework.  Solid, core abilities & replacements for anything you don’t like.  It’s the original that everyone copies.  Run it on  cloud9 webIDE & do the Sinatra framework to learn first.   At the enterprise level it can be more expensive to host as it does not handle concurrency level – not an issue till you have millions of users though!
  • Deployment environments for Ruby on Rails … [Ansible].

Various

  • Phoenix Framework … [Link].  Based on elixir & erlang.  One of the heirs to the Ruby on Rails, solving the concurrency issues built into Ruby on Rails like node.js but with enough structure to be faster to develop.

Java / Javascript / Jquery / Java frameworks

Java is simply the base language of this family.  It is found everywhere.  Javascript & JQuery attempt to make webpages & applications more friendly for the users.  JQuery requires server interaction, while javascript does not.  The java frameworks of course attempt to host & serve information off servers to people, though some can do stand alone applications just on a cell phone or tablet.

  • Beyond basics in java – learning common datastructures & algorithmns for solving problems. … [Link]
  • A great java online program … [Link]
  • Node.Js … java served via web
  • Jquery … [Link].  Great starting point for people interested in javascript on the web or mobile applications.
  • Ember.js … [Link].  A great structured style of convention over configuration.  Recent updates to the database element which was it’s weakness before.
  • Node.JS … [Link].  Don’t start here, but eventually if doing high concurrency check this out if you do java – pheonix is supposedly better..  Free walk through for the java framework’s fastest grower. MVVC.
  • Spring … [Link].  Have not done more than read through this one, but it’s on the list.
  • Silex on Symfony … [Link].  A micro php framework.
  • Lumen on Laravel … [Link], [Link].
  • Symfony2 … [Link].  PHP framework.

Tools


IDE Tools

(IDE’s that let you write code & host your application)

Hosted IDE’s that are internet/cloud based …

  • Cloud 9 – program and run your webpage while small
  • Eclipse
  • Orion – based on eclipse (well known IDE on desktop)
  • Heroku – has free servers, specializes in hosting webpages with applications
  • Amazon AWS – web based hosting with 1 year free trial

Offline / non-hosted IDE’s …

  • Eclipse – does everything with addons
  • JetBrains – java’s JVM & Android, more java if you pay
  • Sublime
  • TextMate
  • Notepad++ – windows only
  • Mozilla’s IDE
  • Virtual Box – for when you have to work offline but want the same environment on all computers
  • Vagarant – for setting up & saving configurations inside the virtual box the same each time from computer to computer – tutorial
  • Puppet – more configuration for a variety of work environments
  • Code Climate – static analysis for code performance and is free for open source projects.

Code Test Tools

(test a small part of code  or design the layout before using it)

  • Jfiddle … test a piece of your code in java/css/html here
  • Python Fiddle … test a piece of your code in python here
  • codepen.io … another ide over the internet
  • Cacoo … design the layout of a page & how the page looks before you code
  • Sketch App … free trial of program taking your scribbles and making them useful in designing an interface.
  • w3c schools – CSS & HTML reference guide along with basics of many languages.  They have a test IDE that is great too.
  • Gulp – front end design

Getting help

(Websites for consulting with people and getting help)

  • Stack over flow – for a single question per post on what is wrong with a piece of code, used for specific problems, not theories … Link
  • Code Review – by stackoverlow Link – they have a chat feature that’s awesome & they specialize in looking over code & making suggestions or fixing bad chunks.
  • Rails Coaching – Newer program
  • Reddit’s /r/learntoprogram is pretty amazing for getting opinions – be humble my friends.

Repository Tools

(Save every change you’ve made so you can go back if things don’t work)

  • Git Hub – Uses “git” utility language (awesome once you learn it).  Free if you don’t mind your code being visible to the world, pay to hide it.  Advanced GIT
  • Bit Bucket – Uses “git” utility language.  Allows you to hide your code.
  • Gitorious – Newer git repository service.  Have not used much.
  • SVN – Older but still used repository tool, especially at the corporate level.

Database styles

(The style you want is based on what you will do with it)

  • MS Access posts it’s own webpage for editing since 2008 (laugh, it’s bad – but for some people it’s all they need – until it breaks)
  • SQL styles – mysql – wikipedia, microsoft or ms-sql
  • NOSQL styles – like mongoDB, Redis, Casandra (facebook runs on it & they have one of the largest databases in the world – which most companies don’t need)

Specialized

  • Free advanced penetration for security course? – Link