Distributed Systems Product Design Framework

Standard

Recently I finished through a great online course by Clemens Vasters regarding architecting distributed systems products. I think he has done a excellent job consolidating the core and most fundamentals principles that govern the design/development of a distributed product in todays world and the software forces of that act upon. It got me thinking deeply. Personally, for me it acts a great framework for systems thinking and I thought it would be really worth sharing. Since I am such a visual person – this time instead writing an essay I want to share a self explanatory image illustrating the framework that can acts as a great platform for helping you –
“THINK BEFORE YOU DO”. I combined some of my ideas from my previous post and Clemens framework to produce this.
Note: (QAs = Quality Attributes. Basically all the ‘ilities’) e.g Extensibility, Flexibility etc.

Product_SystemDesign

How would you design a Product X ? : An 8-Part Framework for Product Design

Standard

How would you design a Product X? It seems a very simple yet a very complicated question. Having asked that question either you might feel blank with no ideas or there is such a heavy flow of ideas like the Hoover Dam just broke in your head. Unfortunately, it is not great to be in any of these positions. In my opinion and experience, it is almost impossible to structurally think about this challenging question in real-life projects without a guiding framework of thought.
Of-course a lot of quality analysis comes with experience and formally learning about product design/management and there is no substitute for that.

Thankfully I have had the wonderful opportunity to do a both of the above in my career. Having had some experience, success, failure, lessons learnt, readings I could organize this whirlpool of ideas in a comprehensive 8-part framework. There are many product design frameworks out there recommended by many gurus of product management. Of-course my ideas are totally inspired from the much available product management guidelines out there. It would be incorrect to say that one is right or the other is wrong, or one is better over the other. Rather a better way to think about is – Which one fits my context ? The objective of this blog is to provide a comprehensive 8-Part framework that helps you think and analyze product development. It helps to ask the What, Why and How questions to ensure that your ideas are directed toward building the“right” product. It is extremely important to avoid jumping to the solution space instantly but rather discovering the problem space in detail first in-order to build the “right” product. The 8-Part Framework is described below:

Part1Part2

The Masters of Software Engineering Program, Carnegie Mellon

Standard
Disclaimer: As a student of the MSE program, this blog is a honest attempt to do an objective evaluation of the Software Engineering Masters program at CMU, Pittsburgh. It needs to be noted that this is totally based on my personal experiences and my personal perspective. The information below does not in anyway provide an ultimate or authoritative evaluation of the program but a merely a reflection of my thoughts.
Critical FAQs about Software Engineering Program (A MSE Student’s Perspective)
1. What is the Software Engineering Program from my perspective? Ans: There are three kinds of Professional Software Engineering Programs at CMU Pittsburgh –
i. MSIT-SE – 12 months.
ii. MSE – 16 months.

iii. MSIT-ESE – 16 months.

In my personal opinion my marketing definition of the program would be as follows:

“All the students enrolled here have 1-5 years of prior industry experience and as a part of this program – students stand at the intersection of software engineering, product development practices and computer science. It is a program for people who are a good combination of technical expertise and business perspective.”
Very romantic if you fall in this intersection but it is NOT the case if your personal learning or career goals do not align with this. I will explain in detail with examples below.

2. Is this program right for me?

Ans: Cautionary Warning: This program is under the umbrella of School of Computer Science but it is NOT a CS program; in-fact it is far from it and I cannot stress this more. So if you have applied here thinking this is a CS program or a substitute for a CS program then please re-call your packet or delete CMU from your list. Rather go and apply to the CS department to CMU or somewhere else OR be ready to accept the consequences of still coming here without truly knowing what you want or your goals and being confused.

In the earlier question, I mentioned about alignment with “personal goals”. That is the single most important question to ask yourself. If you have a wrong romanticized notion of the program or if you think software engineering = computer science or you are want to be specialist or a PhD in a particular core technical area then you might want to do a reality check for yourself.

Having said that: Yes, this program is really good if you have had some 2-5 years of industry experience and want learn more and get into careers paths of Technical Lead, Architect, Product Manager or Project manager. The program advertises students as “Agents of Change” which I agree with to a lot of extent.

3. Placements/Internship and Awareness of the Program in the Industry?
Ans: Based on my personal experience/opinion
and having made my statements in Question 2 above – I would be lying if I said that there was any awareness of the program in the industry. In-fact there is almost none. Most people or recruiters do not see any difference between SE student and a CS student and its same for many other courses. CMU has a million kinds of special programs with a million degrees, no-one can possibly remember that. You cannot blame the industry for this since Software Engineering is an abused term. Of-course a “Software Engineer” right? Most of the placements and career fairs at CMU are oriented towards hiring Entry-Level or Senior-Level programmers and for people looking for jobs in the positions I mentioned in Question 2 – other sources like LinkedIn and Alumni Network work better. So if you want to choose a career path in Project Management or Product Management careers fairs might not work so well for you. (Just my experience)

Most MSE/MSIT students end up taking up jobs as a Software Programmers at the end of the day (of-course there is absolutely nothing wrong with it) but the program’s core curriculum (which is very heavy btw) is not designed to teach you programming or make you the best algorithms guy out there. It assumes you are already know that stuff.
I have definitely heard that SE students do very well once they are in their jobs and a lot of learnings in the curriculum actually help in real life working environment. Does this mean the program by itself inherently helps you get a Software Engineer job at Google? Of-course not. No program does that. It depends on your abilities.

Another important thing to ask yourself is ask Why did you apply to the MSE program? I talked earlier about learning objective and the role you want to get into. For example: My careers interests are strongly for a Product Manager role and I personally think I learnt a lot in this program to do justice to that role in the industry. But the challenge from a placements aspect is there are few openings for these kinds of positions and of-course you have to be best of the best. Remember, no-one really hires a MSE graduate as a Project Manager – who has only 2 years of experience as a developer before, has not taken any project management courses here at CMU and or done some significant project to prove his/her ability in that role. Unless it’s small company or maybe you are an exception :).
So if you are really passionate about getting into one of these roles or the core curriculum then the program is totally for you. If you just want to come to the US and get a job please do not waste so much money. For instance I was very motivated to learn about Product Development, Software Lifecycle Management, System Architecture and Quality Management since it aligned with my goal of being a Product Manager so it turned out to be very useful.

I had to honestly say all the good and the bad so you can make the right decision for yourself. On a more statistical note, yes almost all of the MSE/MSIT manage to get good jobs. Of-course you have to work hard for it. You are at CMU – the competition is high. You maybe the smart frog in a small pond where you are coming from. Well, Welcome to the Ocean!

There are no internship opportunities in this program since there is summer semester and you have to work on your Studio project.

4. What is the Core Curriculum and Electives like ?

Ans: Cautionary Warning: CMU in general is know for heavy course load and lot of hard-work in-fact more that any other top university in the U.S. Well, what can you say Andrew Carnegie’s Heart was in the work!  and CMU totally lives up-to that reputation. I love it. But if you are going to have a nervous breakdown if you get a B, if you cannot work minimum 50 hours a week at any cost, if you think you can come here and take 20 electives in-spite of what other people say – please close your browser right now and forget about CMU and this totally applies to the Software Engineering program as well.

On an average, unless you are Einstein, you can take about 4 courses per semester and this is considering you want to work hard and also want to do well in those courses and learn something from them. Yes, you can convince your advisor and take 10 courses but then it really humanly impossible to keep up. No-one will let you do that actually.

I will give you brief idea about the core courses of the Software Engineering program which are almost common for all the three degrees. ESE differs a little but since I am not from ESE I will comment on it. Your core courses will take most of your time so please make an effort to find out what you are going to study in these courses. Spend sometime on Google.

Subjects

As you can see the core courses are NOT at all about making you a great programmer but making you a good analyst, a good thinker and as the program says: “A change agent”. 

Apart from this you can take elective from almost any department in CMU. But you cannot hope to take like 10 electives. 16-month program students generally end up taking 3-6 electives overall on average including 6 unit Minis.

5. Are there any scholarships?

Ans: There is a James Tomayko scholarship which only 1-2 students might get after the first semester. It is certainly not a 100% scholarship if I am not mistaken. Faculty nominate and vote for a student who excelled in all areas; not only academically but also in extra-circular and have demonstrated financial need. Its best to ask the faculty and staff about this.

6.Teaching Assistantships and Research Assistantships?

Ans: MSIT generally don’t get chance to do any of these since their program ends in summer. MSE students get to be a TA on a selective basis and of-course if you have done well in the course – in the final Fall semester for the new incoming batch. Outside of the department if you take an elective and the professors asks you to be a TA it is totally possible. Although you have to consult with you academic advisor.

Another thing to note is that TAship doesn’t imply tuition waiver like in other universities. Over here you get paid for be a TAship.

7.Return on Investment and Pay Package?

Ans: This depends a lot on your previous work experience and what position you are getting into. In general people are know to get package between 90K-120K who graduate from this program.

8.Is it worth to pay $80K for this program?

Ans: Well, no-one but you can make that decision. Is it expensive – Hell Yes! Is it also worth it – Hell Yes! but ONLY if your learning and careers goals align with what the program has to offer. Again if you are looking for a CS degree or a degree in a special area of expertise like Robotics or Networking then please do not treat this program as a substitute.

Having said all of that I wish you good luck and if you decide to come here to the Software Engineering program – then as the President of the Masters of Software Engineering Leadership Initiative I welcome you and look forward to seeing you in August 2014.
(Note: All information above is my personal judgement and my personal interpretation so it doesn’t in any way represent an authentic evaluation of the program. Think of it like a movie review. It is quite possible that you may or may-not agree with me. I wrote this in a hurry so please excuse any typos and grammatical errors)

Hope this is helpful.

– Cheers, Abhi

Creative Disconnection…

Standard

Introspection -> Inspection -> Understanding via Disconnection (Discover Creativity, Discover yourself)

What is Disconnection? In my opinion, disconnection is a tool to look at identities, ideas, perceptions, emotions, and circumstances objectively. It is the art of ceasing to flow like a lifeless log of wood on the river – unattached to it roots or purpose; trapped in the flow of subjective meaning imparted from impressions of assumed meaning of the world. The trick is to figure out that – It is NOT a question of right or wrong; it is a question of transcendence. I had this fleeting thought for a very long time, both from the philosophical aspect and from the aspect of discovering meaning such as to fit myself in the piece of this puzzle.

It is only recently that I could ask the right question when I read the book – The Moment of Clarity. I learnt a great deal and the words go something like this: “Our understanding of the world is based entirely on context, we can only ever truly understand our tools— our mobile phones, our coffee, our cars— when these objects break down. We can only understand what it means to be online when, suddenly, we are unable to get online. Our phones only make sense to us when someone takes them away. A line for a coffee cart outside our office only becomes clear to us when we are from a culture that does not stand in line for coffee. Things withdrawn from our understanding, from our mere consideration, come to the fore when they are disconnected from their chains of meaning. Only through this disconnection do we gain true understanding about our worlds.”

Isn’t that so true? – I asked myself. I thought about great products shipped from companies like Apple and Google and their key underlying ability to continue to do this. How could Google know Search was so important that it would become an inevitable part of our day-to-day live? How could Steve Jobs possibly know what he knew about the users needs? Is it just a natural order of nature or is it conscious intelligence to change for the better? I think it is the latter; Mother Nature just provides the playground and lessons for those who disconnect to listen. And then the answer came to me like it had been hiding in plain sight. The idea is to attach to the context but also disconnect in-order to break away from the shackles of what we define as established and impossible to truly discover – the new.

Give it a minute to digest and have a creative and productive day.

– Abhi