Hi guys
I'm a software developer in expensive Sydney, you can ask me almost anything :)
Cheers
Hi guys
I'm a software developer in expensive Sydney, you can ask me almost anything :)
Cheers
Ninja Edit - for (int i=0; i < 100; i++)
from 1 to 100
I don't recall ever being given this problem in school. But for most languages (swift is stupid) wouldn't you take advantage of fallthough in switch statements instead of using if? Or is this just weird and more difficult to read, therefore a bad idea? I'd like opinions!
E.g. with sudo code, sorry can't manage indents right now…
For i =1 ; i < 101 ; i++
Switch (true)
Case i%3 == 0
Print "Fizz"
Case i%5 == 0
Print "Buzz"
Default
Print i
The default works but you'd need to break out of the other cases to prevent the number being printed in addition to the text. Then you couldn't rely on fall through so you'd end up adding the case for fizzbuzz anyway…
I keep wondering why people still do %3 && %5, why not %15. 3 & 5 are primes
I would have failed the lot of you, for starters theres no need to have a special case for %3 and %5, 3 and 5 ifs should be enough. You should also only have a single print.
LOL I'd rather sort an array or check if a string is a palindrome
printf( "12Fizz4" );
Done. (1 to 100 in binary.)
// Java 8
import java.util.function.Function;
import java.util.stream.IntStream;
public class Test001 {
public static void main(String... args) {
Function<Integer,String> converter = (i) -> (i%3 == 0) ? (i%5 == 0) ? "FizzBuzz" : "Fizz" : (i%5 == 0) ? "Buzz": Integer.toString(i);
IntStream.rangeClosed(1,100).forEach(s -> System.out.println(converter.apply(s)));
}
}
Happy for people to neg me, but let me know why.
The question says write a program. So, the answer needs to be a program that compiles.
I elected to use a bit of Java lambda basically to show the current trend of Java programming.
Dunno how to instruct OZB wiki system not to reformat the code though…
Lol, hubby was recently asked this question in an interview!
Yo, can you live at 120k in sydney? What's ur range like?
$120K should suffice to live in Sydney.
My range was answered in one comment above :).
As an electrical engineering student wanting to go into a software career, what is your advice?
I'll be graduating soon and it's pretty much impossible for me to apply for the software engineering graduate programs considering how competitive they are and they usually require a software engineering degree anyway.
Also, how could I leverage my past experience? I've done two internships with two different engineering consultancies, but worked as an electrical engineer in both.
U got good grades? U need to prove that you have some programming knowledge and experience (does not have to be commercial experience though)
We used to hire a few engineering students in the past for Junior dev positions. They all had good grades and did extra programming courses online and volunteering works and contributing to open source projects. They all turned out to be excellent hires.
You could also consider doing certification exams. Generally, if you have the actual work experience, the certification exams are easy. However, if you don't, through the preparation and studying for the exams, you will gain fundamental knowledge.
Whats next for you ?
Will you want to be dev for life or will you move on to something else from here ?
I am actually doing a lot of architectural work, you know, look at things from a big pictures, and deal with business stakeholders. I'm still doing and enjoy dev works. That's the plan for the next 5 years.
Next big thing would be open a specialty coffee shop, perhaps ^_^
So my wife and I just had a conversation about how human eggs are fertilised. She thinks that only one sperm can fertilise an egg and I think that seems pretty farfetched, given that semen is supposed to have heaps of sperm. What do you think? Can an egg be fertilised by more than one sperm?
Tell the missus you're right and give her examples of twins and triplets
Will do, thanks!
She looked at me like I'm stupid and said twins come from either the egg splitting or there being two fertilised eggs… Not two sperm :(
Really? May I ask if she's blonde?
@kaitok:
Haha, far from it.
Well… from what I read, and understand, there should be only 1 egg per cycle and there is such thing as split egg! But I think it's impossible to convince your missus unless professional medical advice is provided.
It's your chance to score a win! Make a bet with her and ask her to go to a specialist for the answer.
I think she's right.
I seem to recall from school that once a sperm makes it into an egg, the egg goes all red alert and shields up.
Any suggestion or advice for people doing cryptocurrency mining?
Don't do it… have you seen the Chinese mining farms?
You have to look at power required vs value of earnings. Unless you can get cheap power or efficient processing then bitcoin is certainly no longer an option, maybe not even Ether now. You could look at mining one of the various alt coins and see whether they will pay out better.
Maybe you could mine on your PC at work, but you're unlikely to get significant returns without heaps of processing power.
If you're just looking to make money on cryptocurrency, investing or trading might get you more. I put AU$200 into bitcoin when it was on the way up last month (sadly not early into the price rise) and it's now valued at $230+
I was gonna say to @shangoz spending time on buying low and selling high may net you more profit… but really I see this crypto trading as a gamble, not a real investment that's why I retracted the sentence…, didn't want to get into trouble giving bad money advice.
How do you keep your team's coding in a standard format(process oriented) so every team member can maintain each other's code? Since each programmer has their own coding way.
Do you work in result oriented or process oriented? Which is better?
For convention and coding standard, if you do continuous integration with a proper set up (Jenkins or Bamboo), you can install a plugin to verify convention and coding standard.
Do frequent code reviews for new team members, after a week or two they should know your team standard and will adhere to fit in. However they still have their own unique programming styles which is very trivial.
Code maintainability is more about complexity, not formatting. The best way to avoid complexity and be more testable is aim for simplicity as a team, if a function is too long, split it into micro functions.
We are result oriented always. When we fail we then blame the process!
If you're working on Go or Javascript, you have gofmt and prettier that formats your code every time you save. They come with sane defaults but their config can be shared through source control
Hi OP
Thanks for doing this AMA. Anyway, any recommendations for an "oldie" who comes from the more traditional branch of engineering (think mechanical elec structural piping etc) to bridge to the new world of web saas paas etc? Ended up nowadays doing budget/management stuff but always get a kick writing own script/macro for my own need. Will I need to start from the bottom?
Uhm… I think quickest way for you to start is focusing on front end dev. Building websites using Javascript HTML CSS, and deploy them to cloud based service, you get to see your end product right away and feel that you've achieved something tangible.
Having many quick wins by building websites will give you incentive to push urself further to learn NodeJS (javascript back-end), database…
Good luck, it is never too late to start or restart your career.
I'm a web developer in my early 30's who unfortunately feels like I squandered a lot of my twenties with anxiety and depression related issues but have come out the other side better and stronger and revitalised - the issue now I feel like I have a ton of catching up to do and find it really hard to know what to focus on. Do you suffer from wanting to "know everything"? Granted you're using a slightly different language set in your job than I do, but I've been doing tons of video courses on Udemy (I completed an IT degree, majored in software engineering in my early 20's) and every time I learn something, I want to learn the new shiny thing, or the course itself exposes another concept I feel like I need to learn in depth and it's seemingly a never-ending rabbit hole. Because of this, even though I'm learning a lot, I feel like I know nothing.
Do you encounter this, or do you have methods that you use to stay on track, or do you simply try to focus on the specific current work related tech you need to know for your job?
It's good you feel better now.
I never aimed to know everything, it's just impossible. I can share my experience below:
For fundamental stuff, I focus on a few popular algorithms, data structure, and programming paradigms. I believe all major frameworks were built using these 3 foundations. To keep my programming skill in shape occasionally I find some programming challenges on the internet and try to solve them using my favourite languages.
I have a good understanding of how the web works, things like request & response, headers, session, token, handshake, hosting, domain etc.
I know what is required to build (which back-end & front-end framework to use) and get a complete web application up and running (web server, application server, database server, 3rd party integrations, web services) within a specific time frame.
About languages, I believe it's good to know 3 different types of programming language: OOP, functional, and scripting (or everyone can just learn Javascript since it has all 3!), and any web dev should be proficient in HTML & CSS (modularised using SCSS and Compass), and know XML (I don't really care if I know JSON-LD but XML is a must). Oh, for front-end stuff I only focus on Javascript, AngularJS, JQuery and ignore the rest.
SQL & database: I only know how to do complex queries & build database model from business cases, DBMS & performance can be managed by DBA guys!
That's about it to stay on track. Put it this way, if you keep your driving skill in shape, it does not matter which car you drive.
Thanks, it's good to be excited about learning again, and yeah I can definitely agree with making sure you've got the fundamentals covered is the best practice, they always say how it's the concepts behind software architecture that are the most important, as the languages themselves are pretty much only different in terms of syntax and can all be used to create the solution to a problem (within reason).
My personal direction lately has been heavily Javascript-based, so I've been looking at a lot of React and Vue and tossing up between them, along with trying to get a better understanding of Node and the millions of other frameworks and libraries available in the Javascript ecosystem. It's so expansive and hard to know what to learn and every day something new pops up, but like you said, the important thing is to polish the concepts behind it all and to learn Javascript itself in depth, as all the layers on top of that are adaptable if you've got the base skills covered proficiently.
I appreciate you sharing your advice and stacks, I think I will need to go back to some of the fundamentals algorithms that I've long forgotten and get them under my belt before I would feel comfortable approaching a job opportunity in the full-stack Javascript realm.
At the place I work, if you are a top front end developers, you can get paid much better than an API or a backend Java developers. It's more about how well you know and how good you are.
You don't really need to worry too much about algorithms (it's something you already learned in uni). Same goes for data structure. Standard libraries and even custom framework libraries have them. You just need to know which one to use and in multi-threading situations, what are the things to watch out. Same goes for frameworks (the design patterns used in the framework).
The key point about these frameworks is that they save you heaps of time (so you don't have to code boring stuff or re-invent the wheel) and they follow proper design patterns.
For people working on IT, staying up to date is important. Being able to learn new things quickly is important.
Only learn things which will help your career, or something you are interested in. Don't worry about learning X number of languages and one of each type. The experience is very important. Good front end developers are in hot demand. For front end, knowing JSON is fundamental (JS stands for Javascript).
Don't get too concerned about not knowing the full Javascript stack. The bottom line is this. Let's say you know AngularJS well and you can write just 1 line of code in AngularJS which does what the business wants. I, on the other hand, knows Javascript really well, but I will need to write 50 lines of codes to achieve the same thing. You are the one the business wants. It's all about whether you can get the job done and able to solve problems quickly.
Thanks for the tips/advice. Admittedly I've gotten too caught up in the many layers of the JS stack and that's where I've been feeling overwhelmed - part of this is from listening to so many podcasts commuting to and from my current job - they often discuss the current new fandangled frameworks/libraries or even packages, and I feel like I have to know them all to be successful. It's that classic case of imposter syndrome so I find myself trying to "learn all the things" rather than doing small projects to put each part into practice in isolation, which I think would help me a lot more than trying to learn everything and then tackle something monolithic all at once.
Might I ask if you're a frontend developer yourself? That is definitely the road I want to go down and am focusing on going forward.
I am a Software Engineering student who has only recently transferred into it because I felt my Commerce degree isn't good enough.
I am about to start my first internship this Summer, any tips to survive as a Developer?
Also, any particular languages or skills you think would be hot to know?
What I just wrote above:
For fundamental stuff, I focus on a few popular algorithms, data structure, and programming paradigms. I believe all major frameworks were built using these 3 foundations. To keep my programming skill in shape occasionally I find some programming challenges on the internet and try to solve them using my favourite languages.
I have a good understanding of how the web works, things like request & response, headers, session, token, handshake, hosting, domain etc.
I know what is required to build (which back-end & front-end framework to use) and get a complete web application up and running (web server, application server, database server, 3rd party integrations, web services) within a specific time frame.
About languages, I believe it's good to know 3 different types of programming language: OOP, functional, and scripting (or everyone can just learn Javascript since it has all 3!), and any web dev should be proficient in HTML & CSS (modularised using SCSS and Compass), and know XML (I don't really care if I know JSON-LD but XML is a must). Oh, for front-end stuff I only focus on Javascript, AngularJS, JQuery and ignore the rest.
SQL & database: I only know how to do complex queries & build database model from business cases, DBMS & performance can be managed by DBA guys!
One more tip: build something of value during your internship to impress them to have good reference & build relationship & make them remember you!
What are the top 10 things management can do for better/efficient Software Development ?
Oh god…
Thank you :-)
11 - More pizzas
12 - More cokes (the Coca Cola one)/beers
Waterfall or Agile or really doesn't matter ?
Building rockets - Waterfall
Building Facebook - Agile
Building internal utils - doesn't really matter
(profanity) yes with this answer! At least you are sane devs, not like the Agile Cult
5 questions that I can ask to identify exceptional, best of the best developers ?
Oh dear…
You don't wanna hire "exceptional, best of the best developers", and honestly I don't really know how to identify them.
However to know if someone is good or not, I'll try these:
BTW 100000! is a 456575 digit number
Overtime without pay can't be generalised. During the dotcom booms it made a lot of sense to work very, very hard while smaller companies were growing and being listed. Whether you had options or not, you could often work your way into incentive packages. If you owned shares, why not work hard while the company is growing. A lot of the best software came about through pain. It gets harder to do the serious hours as you get older, but do flog yourself for a bit of your career.
Uhm, not sure about how other people deal with OT, but this is how my team usually roll.
New work comes up, boss asks me to estimate, I talk to the team and we agree on let's say 6 months and lock in the scope. Now for OT to happen in the future there are basically 2 scenarios:
We as tech team underestimated, let's say we need at least 2 extra months to finish the job. We will do whatever it takes to get it done in 6 months and stick to our original commitment, no OT pay is required.
The clients want more features and literally blow the scope, but still want to stick to the original delivery times and cannot wait any longer. Then it's the boss' and PM's responsibility to negotiate whatever they need to negotiate. But if the tech team is required to work extra time then the tech team is getting paid OT. All fair and square.
Determining if someone is a good developer is more about what kind of questions they are asking you.
Are women beating down your door now that you're a software developer?
No, but I can hear them banging on next door neighbour who is a young banker driving an high yield investment Audi
Btw what's the male to female ratio like? Most of my friends that are female take coding now and most of my guy friends are doing nursing.
For me I have no idea what I want to do but I'll be doing network security. I read your comment about tafe VS uni. I guess I'll do a pathway to uni.
Was this something you always set out to do or did you have a connection through than learned on the job?
Male to female is like 9:1 or 8:2. Females are welcome to do coding and males to do nursing :).
I'm not sure if network security is gonna be popular in the future given everyone is going cloud. You may wanna do cloud security?
I always wanted to work in software industry, got fascinated by the internet, IRC, yahoo, PHP forum when I was a kid
Can you make me a new shitcoins? so I can ICO it? lol
LOL
Making alt coin is an art. Build your strong business case first, make a shiny website, then using this to create your coin https://www.ethereum.org/token. Anyone could do it really, you don't need me.
How many times friends or family had this awesome app idea and asked you if you could make it?
A few, but I've been focusing on building my skills up so I didn't have any time to do those. My plan for the future would be opening a specialty coffee shop and enjoying life, not building some apps that could make millions.
What wrong with building apps that could make millions?
Nothing is wrong with that, just don't feel like doing it :)
~ 8 years of experience in Java / PHP / Javascript / AWS / Docker with in Sydney,
How much salary should I ask for.
Let's say what would be the minimum, average and maximum ?
100K 120K 140K
I make almost 100k as an intern…
Then you're doing really really well :).
Sure you are.
what is your salary?~~
I answered it from one of the comments above
What kind of opportunities would open for a PhD graduate in compsci in data mining/ information retrieval domains?
Start as a Junior data analyst/programmer in a data driven company (Zendesk, Salesforce) and work your way up…
Are there a lot of Java contracting job in Sydney? What kind of rates are expected?
Thanks
Haven't done contract jobs before so I don't really know
Check job websites like seek.com.au?
Most of the good contracting positions are filled through referral. Employers now do their own reference checks (often before the interview). They call the contacts they know at the places you worked before.
Unless you have certain skill sets which the employer values highly or you have great track record (or a referral that the employer trusts), you won't get good rates. Java is ubiquitous and quite easy to code.
If you are really good, getting what kaitok is getting shouldn't be an issue, but he does get annual leave and quite possibly bonuses and regular pay rises.
I don't have bonus & pay rise is not much, but can't complain
Can't complain about > $160K for a permanent job :-)
What would you recommend a self-taught developer do to land that first proper developer role at a company? I've steadily built up my skills/Github/portfolio and have had a few interviews but they have mostly rejected me on the basis of not having any relevant commercial experience :(
Cold emailing developers has also had no success or replies for me, so I find that I'm usually applying for the handful of junior Javascript roles that are on LinkedIn, Seek etc.
The experience is something most companies value highly. Knowing how an industry operates and the business rules makes a big difference. Basically, if you know the business well, you can understand what the business want better and know how to get things done quickly. Those things take time to pick up.
You can try getting certification (don't just pass it, get a really high score if possible). It doesn't substitute experience, but allows you to explain that you have the ability to learn something proficiently on your own.
You are getting interviews, which is good. The key is to address their concerns about your lack of relevant experience. Research on the company before the interview. It would be great if you can find someone in the company before hand to explain how it works. The standard technique with interview applies. When there is something you don't know or cannot do, you need to respond with something positive still (i.e. your willingness to learn and demonstrate your ability to learn quickly if possible). Academic results unfortunately play a key part for the first job normally. It is basically an indication of how well you can learn.
Keep trying. You will get better. Continue to build up your profile (your own Web sites and things).
If you have had a few interviews, and those comps have rejected you on the basis of not having any relevant commercial experience, then possibly they got better candidates that did better in the interview than you did.
Because if they had thought u didn't have enough commercial experience they wouldn't have called you in for an interview. Rejecting people after the interviews because of lacking commercial experience is just lazy excuse and not good. If you'll ever get a rejection like that in the future (hopefully you won't), then ask them why they interviewed you, and if they have better candidates, and if you could have done anything better.
While you're looking for job, would you consider doing online courses from Open University just to get a certificate? You may learn a lot from these courses.
Be positive and keep trying, and watch this vid: https://www.ted.com/talks/regina_hartley_why_the_best_hire_m…
I watched it like 10 times already :).
Yeah I've accepted that I'm always going to be up against strong competition since I don't have a CS degree but at least I'm proud of the progress I've made so far :)
Will give online courses/certifications a shot. Many thanks!
Why dont you get a CS degree? Some on the Universities offer it external.
I am studying two degrees and do part of my CS degree external.
Do you have any degree at all? If so you could do a single major CS and get a degree in 1.5 years.
If front end development is what you are interested in, one area to look at is Web integration testing. For example, Selenium. Also, look at continuous delivery too. Jenkins for example. CI and CD are considered standard nowadays. Perhaps if you showed that you do your programming the way most companies do nowadays, you will improve your chances. Most graduates probably don't have CI/CD experience so that could be a plus - not sure though, maybe they teach you CI/CD in software eng now.
Thanks mate. You really hit the nail on the head as they actually did ask for my experience with CI/CD, containers and of course Agile (all of which I have no experience in since I'm just a one man show). Will be fun to spend my xmas learning all of the above :)
You can learn from every interview. As long as you don't make the same mistakes in the next interview, it will be worth it. It is part of the process.
CI/CD and agile are all related. One aspect of agile is to improve constantly so CI/CD is an integral part of agile development. A lot of the online learning courses are quite superficial and just talks about the basics.
CI/CD for Web front-end development is a bit more tricky than CI/CD for API or standard software development (experience really comes into play). Generally, it is an area which determines the quality / experience level of the front-end developer. I didn't expect they want new developers to have those capabilities. Not surprised though, coz. if I were them, I would much prefer new developers have those skills/experience already. If you know CI/CD well, rest of the Agile should be piece of cake.
For tech interviews, a lot of questions are experience related. So if you said no to CI/CD, a section of the interview questions cannot be asked. It is like skipping a section of the exam.
@netsurfer: I really appreciate all the helpful and supportive advice. Thank you so much!
If you can't find anything, try get your foot in the door of a mid-sized startup. A try me on a two-week trial or low salary "you've got nothing to lose" sort of attitude should get you in, as there always seems to be shortage for IT talent. Then, even if you bring less value than the pay you are getting, people are usually reluctant to fire especially if you show you are really keen (come in early, don't take 2h lunch breaks etc). After 0.5-1 year you will either get higher pay or experience. Then if they ask you why you've left at an interview, you can say you've chosen to move on as the pay was low and that you've outgrown the position.
And yeah as other people have mentioned, learn from interviews, don't underestimate testing, read up on anything they mention in job listings so you at least know what it is. And try to find out what the company does ( you wouldn't believe the number of people we interview for a .com startup that haven't even opened the site)
Entry level roles are what you should be aiming for, those should never require industry experience.
If you are called for an interview then they are already aware of your level if experience. If you didn't get past that point then I would be looking more at your interview skills.
Me personally, my priorities when interviewing people are personality > skills > experience. And personality is more about how did they portray themselves in the interview? Let's say for example you are really passionate about front end web dev, you need to display that passion. I'll take passion over Agile certification every day. Passion will help make you an excellent employee.
It's okay to be nervous, it's okay to mess up a question or two, but if you don't succeed at the interview then try to get more information and look at how you think you can do better next time. Practice makes perfect so just keep trying, you'll land something eventually. Do some reading on good interview skills.
How would you suggest I show off my personality when in front of interviewers who seem like they're dead inside?
I know that I have great conversations when I meet interviewers who smile and engage in casual chit chat. However I'm usually put off by the ones who stick to a script and don't crack a smile. It really makes me nervous and I'm afraid to show off my usual cheery self in case it might seem out of place or too "fake".
Would you really want to succeed in an interview with a place like that though? if you feel restricted in the interview, imagine dealing with that full time!
Just because you CAN work there, doesn’t mean you HAVE to.
Always remember that an interview is a two way street. It is for them to work out if you are a fit for the company, and for you to work out if the company is a fit for you. Don’t ever under value yourself and your time, if you get bad vibes from the person interviewing you, don’t hesitate to say “no thanks”.
Not too long ago I interviewed at a company in my industry that is considered to be #1 in their field, very prestigious and reputable. I did well in the interview but didn’t really like the way the interviewers ran the interview, so I told them it wouldn’t be a good fit and moved on.
Always value yourself. Even at entry level.
But you will need to learn to speak confidently to all kinds of people. You can’t expect to only be confident when speaking to particular types. That might work for a little while if you find the right company but you’ll cross paths with a PM or client that is different, and you’ll need to still be yourself. One of the absolute BEST skills you can develop, is the ability to confidently and clearly communicate with all kinds of people. Especially in any kind of development role. The majority of people you deal with that aren’t developers will have limited technical knowledge and you’ll need to translate your technical knowledge to them in an understandable way. It’s an easy skill to learn, but takes time to master.
I'm in Melbourne and I want to choose a Bachelor of Computer Science course for the university.
Which university would be the 'best' in Australia to go to for Computer Science? I've heard UNSW has a good course but do not want to move unless I'm sure about it.
Thanks!
You'll be fine with Uni of Melbourne, then Monash then RMIT then Swinburne there.
Don't need to move to Sydney to study.
It doesn't really matter which uni here to be honest. I remembered one of my lecturers teased us sarcastically about how great University of Melbourne is (compared to MIT in the states).
Get great scores. You only learn fundamentals in the university. After your first job, your academic achievements are not that important.
I know uni. of Melb isn't great in terms of world ranking, but don't underestimate your classmates. Some of them hardly turn up to lectures but finish exams early and get H1 grades. When your classmates said to you they stuffed up the exam, they could mean they don't think they will get H1 (but H2A).
Thanks for the responses guys, but this is where my confusion lies. Uni of Melb doesn't even have a Bachelor of Computer Science degree and instead is a pathway through a Bachelor Of Science, and then a Masters degree. Should have clarified this in the original post, apologies
@TeesAndSuchAustralia: printf() yes. Heh, no not doing an assignment. Fizzbuzz is a classic (although outdated) interview question for programmers. There was a good article by Joel Spoloskey about the surprising number of applicants that couldn't get it right.