Categories
Career Growth Community Engineering Leadership

First Principles, Frameworks & Guiding Principles

first principles, frameworks and guiding principlesWhen talking to other engineering leaders (new and even experienced ones – since every situation is different) it’s not uncommon to hear “this is great, your team/processes sound amazing but where do I really start?”.

“Where do I start?” is indeed a difficult question. A few clarifications and examples would help. We could identify a starting point and take it from there. There are also a lot of existing “how to do X or Y” everywhere online/offline so I am not going to talk about that here either.

I was thinking though, if I find myself asking the same question, what do I actually (or I think I) do.

So…. I believe I go through this process:
1- first principles (why)
2- framework thinking (how)
3- guiding principles (what ifs)

These are not my terms. The first one you can easily search (might even be in the dictionary) and Elon Musk (and others) has articles/interviews online that can explain it (or similar) better than me. The second one I did not find much except this article from Sean Johnson (http://www.sean-johnson.com/framework-thinking/) which captures a lot of what I had in mind. The 3rd one I’m sure we’ve heard everywhere.

To the best of my knowledge though even before I found out what they are called I have applied them in one way or another. Most of the time, if faced with a challenge; it is reasonable (maybe even best) to solve that problem specifically. In some cases, however, especially problems that keep coming back it helps to step back and look/think about it differently. What is the core of the issue, the root cause, the fundamental beliefs (or even facts) that my ad hoc solution did not address? And that to me is “first principles” – simple, fundamentals, facts (or as close as you can get).

Now that we have a better understanding of the “question/problem” there are frameworks that others have already used to address that. Or at least frameworks that I can try to explore more to address the problem. Frameworks are more generic than just how-to’s and usually can be applied to a variety of problems. Should I read books, do I listen to audio books, do I talk to someone and based on those are there further frameworks/techniques I can apply?

Using some (or combination) of the framework(s) we will hopefully find the solution to the problem and then we start building guiding principles. On top of making sure that it really does address your original question/problem, these also make sure that should you encounter similar questions in the future you might have some default response/actions or if it’s completely new then the response might just be back to square one (first principles -> framework thinking -> guiding principles).

Over time you build guiding principles that you keep on improving (or completely discard after giving it enough chance – i.e. it just doesn’t work).

First principles are fundamental and likely universal (or at least to a majority of our species). Frameworks may or may not work for some though the ones we find are likely those considered best practices already but take them with a grain of salt. Finally, you could use existing knowledge for guiding principles but do not forget that guiding principles is your own. Make it known to your circle to whoever you feel safe sharing it with. Refine them, share them and others might question them but it’s yours.

And if you lead a team, you share a part of your own guiding principles (its part of what we do is to sell that to our team) but help your team build it’s own as well. What you agree on, how to do things, what to do when things get tough and as important, what to do when things are great.

An analogy for software debugging/development might actually exist now that I think about it.
1- investigate the problem (why)
2- design and implement a solution (how)
3- create unit tests/automated tests and monitoring to help make sure it doesn’t happen again (what ifs)

So when faced with “where to start” this is what I do. Or at least what I think I do. At the very least this blog post is part of this process too.
1- I have a question which I think could benefit others and I’d love to share my thoughts on (why)
2- write and share on my blog (how)
3- I may not get feedback (I don’t expect anyone to read unless I point them here) or I get feedback (great – whether that’s good or bad) and I see if I could improve as I learn more – is my “what ifs”.

There will be guiding principles that will not be easy (e.g. do not lie – sounds simple but I don’t know if you can imagine how difficult that is with all the quirkiness/sensitivities of our modern world) but the good news is other than making it easy to make decisions at work, the side effect of these guiding principles maybe some peaceful goodnight’s sleep.

Keep learning, building and take it easy!

Categories
Career Growth Engineering Leadership

The 6 Different Leadership Styles You Need To Know About

Sharing an article written by the good folks at officevibe.com about leadership styles. The list could be endless, depending on who you ask and which book you read but I feel this captures them well enough for me to share. It’s a good reminder for those you might have had read too much books in the past and forgotten.

Leadership styles apply not just for work but even in the family, friends and politics. There are always debates on what works and doesn’t work which makes sense since every situation could be different. This does represent my own “default” though. And at the very least, knowing them will make us understand each other more and as they say, “if you only have a hammer everything is a nail”.

6 Leadership StylesThis infographic was crafted with love by Officevibe, the software that shows you how to be a good leader through employee feedback.

Categories
Career Growth

What to put on a Software Engineer Intern or Junior-Level Resume

This is a rant from reviewing hundreds of resumes on a Sunday so forgive the occasional sarcasm. I am not a professional resume writer either; merely trying to help make the world a little better, one resume at a time.

Sure, some companies filter resumes using tools and keyword search so everyone just throws in every buzzword out there but we are secretly hoping we’re better than text mining algorithms (and we really love reviewing resumes) that I reviewed one by one.

Will try to make this quick

If you are still in school

  • Have your projects in Github or public repositories. They differentiate (at least as of this time not everyone has it yet).
  • Work on something outside your course requirements.
  • Join hackathons or coding competitions.
  • Talk about career with experienced people, look for heroes. Your professors could be that person but not everyone has real-world experience and those matter.

General

  • Please, pretty please read the job requirements. Most companies put a lot of thought on them, we will also benefit from the saved time.
  • Watch your spleling
  • Watch you’re grammar – I’m no grammarian and don’t expect people to be one either but this tells me that the person has low attention to detail or did not take the resume seriously enough to have someone else review it. And detail is very important in engineering.
  • Cover letters help (show interest and effort) but keep them very short. Save the details for the resume.

Formatting

  • Please use a nice font (please reflect the beauty of the world and embrace typography) but don’t be too flashy either.
  • PDF than Word Doc
    • more control on how it will look like versus depending on whether reader has MSOffice, OpenOffice or none that could read doc/docx at all
    • most browsers have plugin it opens right away
  • Do NOT try too hard to fit everything in a 1-page resume. Few is better but please do NOT remove the margins to make it “shorter”. Simplify your content instead.

Summaries

  • Do NOT highlight your “low” GPA/Grade– I could be missing something but I wonder why some put those that seem to be lower than most. I think it could actually anchor the viewer negatively.
  • Do NOT list technologies you have only coded a few lines for or those you just learned by listening in class.
    • make sure you have actually coded or wrote an application that is either 1) used in production or 2) a publicly available web site
    • you can put them at the end as hobbies if you want
    • having all the possible programing language in the world could make someone think you don’t have enough depth. If you must insist on some archaic language, better be sure that most engineers know that it’s a beautiful language or hard to code unless you are a master
  • Do NOT list non-job related experiences – again you can point this out at the bottom (or if you want to still establish work history – just put a line, no need to describe too much).
  • Customize your resume a bit to highlight the needs of the position.
    • e.g. for a Java role, it’s sometimes useful to list Java first before other languages (and keep the list short – unless you are applying for a polyglot position)
  • Do NOT list Outlook, Word, PowerPoint or the likes unless you are a ninja on those apps.
  • Common, you are not a 10 in Java after school otherwise you would not be looking for a job (that job will be looking for you).

Experience

  • Do NOT explain what APIs are or do. It’s OK to explain the system you worked on but not something like “API is used to access the database”. Ah sure…
  • If listing your company/internship, say something about what you did. Unless it’s Google or Facebook people might think you did nothing amazing in that company.
  • Co-founder/founder always helps (for as long as it’s true). If it failed, leverage it by stating what you learned from them.

Projects

  • Sure, list your projects – but make their descriptions brief – most people will think you were required to do something anyway so they are not really differentiators.

Things that are true for all resumes/applications/branding
(you know these but apparently not everyone follows or maybe they don’t agree?)

  • Linkedin
    • good profile photo (not so trying hard – look positive, eager to learn)
    • for goodness sake, don’t look sad in your photo
    • list your top skills (and ask people to endorse them) –  if nobody endorses them, it’s worse than not being there
    • recommendations are helpful so ask for them – Yes, I don’t have recommendations there either but hey I am not looking for a job – you are
  • Build your online reputation
    • Blog if that’s your thing (or you can)
    • Twitter (and say sensible things, not test posts – or nothing)

Noise words
Unless you are submitting to an applicant tracking system that searches for just keywords, in my opinion these are just noise in your resume. In case companies filter out on those it’s probably a bad company to work with since they don’t really “look” beyond what machines can see.

  • Object Oriented Analysis
  • Design, Development, Implementation and Deployment of Software (or xxx)
  • Relevant graduate courses (all if not most, took them) unless you are applying for something super specialized and you took a class that matches that and is super specialized too (and only 5 students took it)
  • Good communicator – let your resume do/say/show that instead
  • Team player – yet to encounter someone say they are NOT and they hate people – eccentric geniuses exist but they don’t pass/write resumes – they don’t have to

Almost there…

  • Ready? Not yet. Have someone who has experience review your resume or better yet, pay for good professional writer/reviewer.
  • I have a tendency to read from bottom to top.  I look at “progression” after school and density of work/experience and not years. So don’t put messy stuff just because you think it’s at the bottom and nobody would read it.
  • Look at other people with your profile. Do you feel you have a differentiator?
  • Read articles on what hiring managers look for. Put yourself in their shoes, research online what to look for candidates and you will see common themes (e.g. smart + gets things done). Then figure out how you can be that person.
  • Be responsive when you get a response about the application. Not hearing back from candidate for days that is a red especially for positions where responsiveness is expected (e.g. Ops Engineer)
  • Remember, hiring managers do not do screening full-time. I am doing this on a Sunday so the easier you make the review the more lovable you will be.

More experienced/higher level position applications are a whole different discussion so will leave that to professional resume writers/bloggers.

Finally, if you are not yet in school but thinking of doing so also think about this
Either:

  1. Go to a great school (CMUs and Stanfords of the world) and just do your best to keep up (most of the time, the environment there will drive you to succeed)
  2. Or if you cannot for some reason, go to a reputable school that will allow you to have time  for outside projects

Imagine two candidates:
Candidate 1

  • GPA 4.0 in not so bad school
  • has github projects X, Y and Z
  • committer for Apache XXX project
  • Regular course work

Candidate 2

  • GPA 3.8 in some school better than above
  • Regular course work

Who do you think will have an edge?

Thank you for indulging in my rant and hope this makes the world a little bit better. Have a good week ahead!

Categories
Career Growth Engineering Leadership Startup

My Quest to be a Better Leader

leadershipimage.jpeg
Leading Engineers

Engineering Leadership (or management – some engineers are not fans of the term “manager”) is not easy as some people think. Leadership is hard enough, the complexity of people then add to that the complexity of engineers. There’s not a lot of books on the specific subject so it’s not surprisingly that I still hear top executives saying that one just needs be technically proficient/architect, sure – architect of teams/people maybe but not just of systems/code. That’s where the challenges of engineering leadership comes in, one is expected to be both good at systems/engineering and people. Those two could mean different worlds.

Long topic but I wanted to share what I hope to follow and achieve. These are taken mostly from Google’s Proxy Oxygen (Google’s Quest for a Better Boss), books, articles I have read on the subject (you can catch some at my GoodReads account) and experience from peers, friends and my own.

These are “big” topics on their own, (obviously thousands of books have been written on leadership), my goal is to simply to share in case it helps and for others to remind me should I forget to walk the talk.

Also, though useful in most cases, it could vary depending on what stage your company/team is in. If you are just starting up, you need more coding + pitch/sales/marketing power more than maybe engineering leadership.

There is no timeline to get these right (if even possible at all), it’s a lifelong process and better have a target than nothing at all.

1. Be a good coach

  • Provide specific, constructive feedback, balancing the negative and the positive.
  • Have regular one-on-ones, presenting solutions to problems tailored to your employees’ specific strengths.
  • Learn more about coaching and apply (and be more organized, templates etc)

2. Empower your team and don’t micromanage

  • Balance giving freedom to your employees, while still being available for advice. Make “stretch” assignments to help the team tackle big problems.
  • Give them tools to enable them to do their best
  • Demand the very best, help if possible, otherwise find other options, if all is exhausted cut losses
  • Trust them to do their best
  • Emphasize results, not time spent
  • Delegate that which is not your strength

3. Express interest in team members’ success and personal well-being

  • Get to know your employees as people, with lives outside of work.
  • Make new members of your team feel welcome and help ease their transition
  • Treat them well
  • Know what makes them tick (money, power, status, popularity, greater good)
  • Appreciate individuality
  • Do the hard work of knowing but also ask what motivates them

4. Don’t be a sissy: Be productive and results-oriented

  • Focus on what employees want the team to achieve and how they can help achieve it.
  • Help the team prioritize work and use seniority to remove roadblocks.
  • Shield the team from distraction
  • Manage external expectations

5. Be a good communicator and listen to your team

  • Communication is two-way: you both listen and share information.
  • Understanding is the goal, communication is just a tool
  • Hold all-hands meetings and be straightforward about the messages and goals of the team. Help the team connect the dots.
  • Encourage open dialogue and listen to the issues and concerns of your employees.

6. Help your employees with career development 

  • Mentor when you can, refer to someone if outside your expertise
  • Training time on regular work week hours (internal + external expertise)

7. Have a clear vision and strategy for the team

  • Even in the midst of turmoil, keep the team focused on goals and strategy.
  • Involve the team in setting and evolving the team’s vision and making progress toward it.
  • Team vision, Core values
  • Where does each one fit in the team (roles)
  • To be the best, know the best (who are our competitors)
  • When saying no to roadmap/tasks, support it by giving costs

8. Have key technical skills so you can help advise the team

  • Roll up your sleeves and conduct work side by side with the team, when needed.
  • Understand the specific challenges of the work.
  • Learn their code base – invest time on this
  • Good architecture – “With good architecture, debugging is a breeze because bugs will be where they should be.” – David May
9. Integrity
  • Just, fair, transparent
  • Do not commit without consulting them
  • Admit mistakes
  • Give people proper credit
  • Confront problems, not people

10. Advocate Quality

  • Test, Test, Test
  • Code review
  • Simplify, Simplify
  • Continuous integration
  • Cannot commit if builds are failing
  • 5 whys – incident report always
  • Do not build something you cannot measure
  • Have a Devil’s advocate, 10th person on architecture decisions

11. Innovation

  • Advocate design thinking – emphatize, define, ideate, prototype, test
  • Safe environment to learn from instead of fear failures and move on
Categories
Career Growth Community

Knowledge for the sake of Knowledge. (or not)

A co-worker shared this article/link below today about what Ph.D is about; prompted by a discussion on productivity, personal ambitions, continuing education.

The Illustrated Guide to a Ph.D by Matt Might

But I might have had a different take away. This to me a good reminder on why you seek out knowledge: (assuming you do)

* knowledge for the sake of knowledge?

* knowledge to buy the luxuries of life?

* knowledge to buy you way into fitting in?

* knowledge to do something different, better for someone other than yourself?

whatever your reason is, you are entitled to it (there is no right nor wrong answer) but as the article says “Keep pushing,”

yet don’t forget to ask yourself why

or maybe the better question we should ask is, “what do I use my knowledge for?”

Categories
Career Growth General

sushi, software and success

Just finished watching Jiro Dreams of Sushi  – a film about Jiro Ono, a 85 year-old sushi master and owner of Michelin 3-Star restaurant Sukiyabashi Jiro, on his continuing quest to perfect the art of sushi.

“Once you decide on your occupation,” says Jiro, “you must immerse yourself in your work. You have to fall in love with your work. Never complain about your job. You must dedicate your life to mastering your skill. That’s the secret of success and is the key to being regarded honorably.”

Reminds me of a lot of things I try not to forget:

1- make a choice, then move full speed ahead

2- you must love what you do (otherwise find another one)

3- excellence and quality

4- art

Just around the time when I am in the process of reading Seth Godin’s book Linchpin. Probably safe to call the master sushi chef the linchpin that ties together vendors (shrimp, fish experts) and the rest of sushi hungry and foodies of the world.

I would recommend this movie to everyone. Most especially to my fellow technologists.

We don’t have to learn how to make sushi but we definitely could learn a thing or two on how to make software/products that can make everyone say “Ahhh……”

Jiro_Dreams_Of_Sushi_2011_DVD_Cover

Categories
Career Growth

Job Opportunity – UX Developer for Next Generation Marketing Analytics Cloud Application

We are looking for ambitious User Experience engineers that wants a new highly graphical, easy to use, multi-device cloud data management and processing for business intelligence and predictive analytics application.

Role: To be key engineer implementing a new highly interactive, data intensive cloud service for or business intelligence and predictive analytics application. This service will be use by a variety of users, many of them marketers which will put high demands on graphics, interaction and design. It will need to be built to that we can support multiple devices. The person in this role will have a strong influence on technology strategy and implementation, and work closely with skilled graphical designers.

Required skills:
* Strong HTML, CSS, Javascript skills.
* JSON experience
* Experience with interactive (AJAX) user interface implementation.
* Experience integrating with RESTful web services from javascript
* Architectural and design experience is building software that is maintainable and reusable.

Desired skills, skills that would be an additional benefit:
* Experience with HTML5.
* Experience with iOS and Andriod development.
* Experience with highly graphical user interfaces.
* Experience with data visualization.
* Experience with user interface code performance measurement and optimization.

Experience:
* We are looking for people with different levels of experience, anything from freshly out of college to experienced developers may be a fit.

Categories
Career Growth

Job Opportunity – .Net UX Developer for Marketing Analytics Cloud Application

High impact project for ambitous .Net UI developer

Profile :

Self-motivated with a passion for Web development and UX implementation

Role : Update the agilone user interface.The design has already been completed;

Required skills:
* Ability to interpret and fulfill the Designer’s vision for sophisticated UI and high performing applications.
*  Creative individual with a strong sense of style, detail oriented down to pixel-perfect implementation
* Self-motivated and able to work effectively with minimal instruction and supervision,
* Strong HTML, CSS skills
* Strong client side scripting skills (Javascript, Ajax)
* Experience with developing UI on ASP.Net (C#)
* Experience with cross-browser UI development.

Desired skills, skills that would be an additional benefit:
* 3-5 years of hands on experience with UI development.
* XML, WebServices
* Experience using version control systems (SubVersion)

Other:
* We are looking for a contractor, or an employee. If it is an employee the person also need to fit the following profile: UX Developer

Categories
Agile Career Growth Tools and Utilities

remove/delete svn folders

Since I’ve been using SVN and stumbled upon this technique I’ve also been using since then

This is one of the many (but easiest way) to remove SVN folders (.svn) recursively from a given folder. Effectively “unbinding a folder from SVN

Follow these easy steps: [more]

1) download this registry file : DeleteSVNFolders.reg (313.00 bytes) – see below notes for more information (security issues/verification and code source). I urge you to review them but if you don’t want to worry about the details and trust me enough then please go ahead and download.

2) double click on the file you downloaded

    you will be prompted to confirm that you really want to perform the action (differs depending on your OS). just continue and should all go well you will have a successful message/dialog

3) then to see it work go to the folder you want to remove the .svn folders from, then right click it

you should see the “Delete SVN folders” menu item

4) Click the said menu item and the .svn folders will be removed (there will be a command window that will show up displaying progress too – though if the folder structure is not that deep enough it might disappear very quickly).

 

And you’re done

** Notes

1) altering your registry not for the faint-hearted and you’d have to trust the author/publisher. In this case I do and I have been using it for years

    and if you could also look into it (edit e.g. notepad or text editor) and understand what it does if you want to make sure you’re not letting it do something you don’t want

    i have taken this from : Jon Galloway’s Shell Command – Remove SVN Folder and simply created the reg file to be downloadable (for those who are not so confident on how to deal with reg files)

Categories
Business Intelligence Career Growth Data

SQL Business Intelligence Developer Needed (Manila, Philippines)

We are currently looking for a SQL BI Developer Professional to work with us on exciting, high-profile/scale projects. Feel free to contact me or visit http://www.lwsmedia.com/contact.htm. Looking forward to work with you. [more]

Company Profile:

Agilone LLC
Norwalk, CT USA, Los Gatos CA USA , Istanbul, Turkey  and Manila, Philippines

Companies who can effectively understand, process and take value from their data gain a sizable competitive advantage.  However, many fail to do so since the amount of data captured by organizations is growing more quickly than the capabilities of the tools to analyze it.  Agilone solves this problem with proprietary, SAAS-based analytical tools that help them make data-driven marketing decisions that drive superior results.
 
Agilone’s goal is to help clients develop and execute data-driven marketing strategies. We provide clients with advanced technology and analytical marketing services to help identify and execute opportunities hidden in their data.  Our approach is effective because we analyze more of their data than the competition and offer a customized solution.
 
Typical engagements are in areas of customer valuation, pricing, response modeling, segmentation, with follow-on implementation of technologies such as data warehousing, web-based application development, database management and business intelligence services.
 
We are headquartered in Norwalk, CT with a technology development and services center in Istanbul, Turkey.  Recently, we have opened our new office in Silicon Valley (Los Gatos) California.

We are a high growth, entrepreneurial company and are always looking for intelligent hardworking people to join our company.  Transfers between Istanbul office and US offices are possible and we do sponsor work visas and Greencards in US depending on tenure and performance of employees.
 
Job Description:
This position is for our Manila Office.   Due to the increase in our business volume we need additional SQL developers with the following background and skill set:
 
Position Responsibilities:
– Be part of the developer team from Analysis to design, programming, testing and deployment
– Design and administer project related databases
– Create technical documentation
– Perform unit test of the codes
– Author user manuals and installation guides
 
Education:
Minimum: BS, BA or equivalent, very good command of written and spoken English
 
Required Skills and Experience:
1. Excellent communication skills both written and verbal
2. Competent in T-SQL, working knowledge of MS SQL 2005 and MS SQL 2008.
3. Experience in Dimensional Databases and OLAP Cubes.
4. Desire to learn new platforms and environments as the projects leads.
5. Strong analytical and problem solving skills with attention to detail.
6. Self-motivated – comfortable working in a fast paced environment with limited direction.
7. Ability to multi-task and work on for several different projects.
8. Holding a Microsoft certification is a plus.
 
Process:
We will conduct 2 tests before an interview.  The first test would be a general aptitude test, after you pass this test you will be given a more specific T-SQL test.  After these tests you will be invited for an interview with the Director of Business Intelligence and the Principal of the company.